
Manchmal stellen Leute eine Frage, die auf den ersten Blick eine Sache betrifft, aber tatsächlich eine andere. Wie sie sagen, enthält eine gut gestellte Frage die Hälfte der Antwort.
Neulich bin ich von der
JPoint- Konferenz zurückgekehrt, auf der unser neuer PVS-Studio-Analysator für Java erstmals vorgestellt wurde. Das Interesse an statischen Analysen hat in den letzten Jahren rasant zugenommen, daher hat das Publikum PVS-Studio mit einem Knall aufgenommen. Neben positiven Rückmeldungen musste ich natürlich auch mit Einwänden arbeiten. Der häufigste Einwand gegen das Angebot, PVS-Studio auszuprobieren, lautet: „Komm schon, warum sollten wir PVS-Studio ausprobieren? Wir verwenden IntelliJ IDEA, ReSharper, SonarLint und SonarQube. Deshalb haben wir kürzlich PVS-Studio gestartet und er hat Fehler gefunden, die IntelliJ IDEA bereits hervorhebt! “
Ich kann einfach nicht anders, als eine kleine Antwort auf diesen Kommentar zu schreiben. Genauer gesagt habe ich sogar zwei Antworten auf diesen Einwand. Und ja, ich habe hier ausdrücklich auf ReSharper hingewiesen, da solche Fragen auch für unseren Analysator für C # gelten. Nun, ich werde gerne antworten.
Erstens machen wir PVS-Studio NICHT durch Kopieren der Konkurrenzdiagnose. Blindes Kopieren ohne Verständnis der Essenz führt nirgendwo hin. Der Wert der statischen Code-Analyse, der Wert ihrer Diagnose ist nicht der Ort, an dem ein Fehler ausgegeben werden kann. Und wo es NICHT zu geben ist. Für jede unserer Diagnosen gibt es 10, 20 oder noch mehr Ausnahmen, wenn keine Auslösung erforderlich ist. Das Kopieren von Diagnosen von anderen Produkten nur gemäß ihrer Beschreibung in der Dokumentation ist wie der Versuch, dasselbe Gebäude mit einem Foto zu bauen. Das Foto des Kolosseums wird Ihnen stark helfen, wenn plötzlich die „Götter“, die Sie machen, dasselbe bauen?
Deshalb kopieren wir nie. "Aber Sie haben die gleiche Diagnose!" - Du sagst. Natürlich gibt es. Die Ideen vieler Fehler liegen an der Oberfläche. Das ist absolut offensichtlich. Aber oft verhalten sich Diagnosen mit derselben Beschreibung sogar anders.
Mit anderen Worten, wenn Sie eines der in der Kopfzeile angegebenen Produkte verwenden, kann es beim Starten von PVS-Studio durchaus vorkommen, dass Sie eine Reihe NEUER Fehler finden, die von anderen Produkten nicht erkannt wurden. Die Erfahrung unserer Kunden und die Erfahrung, offene Projekte zu prüfen, bestätigen dies.
Zweitens, selbst wenn Sie IntelliJ IDEA, ReSharper und SonarLint / SonarQube verwenden und sie dieselben Fehler in Ihrem Code wie PVS-Studio finden, habe ich schlechte Nachrichten für Sie. Sie verwenden Tools, die Fehler finden, OK. Aber warum findet PVS-Studio Fehler in Ihrem Code, die von all diesen Tools gefunden zu werden scheinen? Warum werden bei Verwendung von Tools, die "genau wie PVS-Studio alles finden", die Fehler nicht behoben? Vielleicht erlauben diese Tools, dass sie nicht bearbeitet werden?
Sowohl IntelliJ IDEA, ReSharper als auch SonarLint mit SonarQube sind sehr gute Werkzeuge. Sie werden von hochqualifizierten Teams hergestellt. Und wenn Sie sie verwenden, machen Sie alles richtig. Je höher das Niveau der Ingenieurkultur im Projekt ist, desto besser für das Unternehmen.
Wenn jedoch alle diese Tools „dieselben Fehler wie PVS-Studio finden“ und die Fehler immer noch im Code enthalten sind, machen Sie etwas falsch. Implementieren Sie eine Teampraxis wie die regelmäßige Verwendung von PVS-Studio. Und dann werden die Fehler nicht nur gefunden, sondern auch korrigiert. Durch die Implementierung von PVS-Studio werden Entwickler gezwungen, Fehler zu korrigieren. Und sie nicht nur finden.

Wenn Sie diesen Artikel einem englischsprachigen Publikum zugänglich machen möchten, verwenden Sie bitte den Link zur Übersetzung: Evgeniy Ryzhkov.
IntelliJ IDEA, ReSharper, SonarLint und SonarQube finden dieselben Fehler wie PVS-Studio. Warum brauchen wir also PVS-Studio?