Bzgl. der Tools, das ist immer ein Trade-Off. Jedes Tool zur statischen Code-Analyse hat meist Dinge, wo die Hinweise wichtig und wertvoll sind und Dinge wo man denkt "Mein Gott, das ist nun wirklich egal!". Und da den passenden Weg zu finden, das man sinnvolle Hinweise bekommt und sich nicht mit dem unwichtigen Kleinscheiß ärgert ist nicht einfach
Da ist die Vorgehensweise, die ich kenne, eben eine klare Einigung vom Team. Dann wird klar festgelegt, welche Regeln man wünscht und welche nicht (und evtl. erstellt man auch noch eigene Regeln) und dann werden genau diese festgelegten Regeln verwendet.
Ich bin der Meinung, dass das Auswählen der gewünschten Regeln am Problem vorbeigeht.
Wenn das Kriterium, wie im Fall static final Feld einfach falsch ist, kann man dies durch eine solche Auswahl nicht lösen.
Falsch ist eben falsch.
Mich stört der Widerspruch aus Allwissensanspruch dieser Tools und schlechtem Funktionieren dieser Tools.
Das grenzt an Betrug.
In einem Projekt, in dem ich war, wurde Sonarqube eingeführt.
Der Teamleiter hat sich dann Auswertungen anzeigen lassen und für das Beheben der wirklichen oder vemeintlichen Fehler wurden sogar Stundenschätzungen ausgegeben.
Ich hätte schreien können.
Nun zu dem Grund:
Früher hatte ich mal den Gedanken von der fachlichen Lücke, man kann eben Code meist nicht auf der Ebene der Fachlichkeit formulieren.
Irgenwann habe ich mal in diesem Buch gelesen:
Gödel, Escher, Bach - ein Endloses Geflochtenes Band Taschenbuch – 9. Dezember 2019
von Douglas Hofstadter (Autor), Philipp Wolff-Windegg (Übersetzer)
Herausgeber : Klett-Cotta; 5. Druckaufl. 2020 Edition (9. Dezember 2019)
Sprache : Deutsch
Taschenbuch : 844 Seiten
ISBN-10 : 3608949062
ISBN-13 : 978-3608949063
Originaltitel : Gödel, Escher, Bach: An Eternal Golden Braid
Ziemlich anstrengend zu lesen, allein das Vorwort hat 250 Seiten.
Die Essenz ist, dass aus einfachen Dingen komplexe Dinge werden (in der Informatik).
Man kann aus logischen Gattern einem Zähler bauen und ist plötzlich in der Welt der natürlichen Zahlen.
Also entstehen in meinem Projekt komplexe Dinge, die es nirgendwo anders gibt (Versicherungen, Rechnungen, Rabatte usw.) (falls nicht gerade jemand ein identisches Projekt macht).
Mein Lieblingsbeispiel ist der Java-Iterator:
Man sollte vor dem Aufruf von next() immer hasNext() prüfen.
Nach dem Aufruf von next() ist der Rückgabe-Wert vom vorherigen Aufruf von hasNext() ungültig.
Also kann ein statischer Code-Prüfer von Irgendwem die höhere Semantik und die daraus folgenden Probleme gar nicht kennen.
Wenn dann jemand glaubt, dass ein Tool, welches die wirklichen Probleme nicht erkennen kann, eine Stundenschätzung für deren Lösung liefern kann, dann hat der schon einen echten Schaden.