PVS-Studio: Motor des Fortschritts

Abbildung 1

Ein PVS-Studio-Team und unser Produkt leisten einen großen Beitrag zur Verbesserung der Softwarequalität. Neben der Erkennung von Fehlern in Closed- und Open Source-Projekten gibt es einen indirekten Beitrag zur Entwicklung von Compilern und anderen Tools zur Codeanalyse. Wir freuen uns, dass wir in einigen Fällen Trendsetter sind, und haben beschlossen, dies in unserem Blog mit einer kleinen Anmerkung zu versehen.

PVS-Studio ist ein statischer Code-Analysator zum Erkennen von Fehlern und potenziellen Schwachstellen im Quellcode von Programmen, die in C, C ++, C # und Java geschrieben wurden.

Um die Methodik der statischen Code-Analyse und unser Tool bekannt zu machen, schreiben wir Artikel über Überprüfungen verschiedener offener Projekte . Außerdem überprüfen wir ab und zu verschiedene Compiler. Zum Beispiel haben wir Fehler in Projekten wie GCC, LLVM, PascalABC.NET, Roslyn getestet und gefunden.

Mehr als einmal sind wir auf eine interessante Tatsache gestoßen. Sobald wir beispielsweise LLVM oder GCC überprüfen, werden in diesen Compilern in der nächsten oder in der vorletzten Version einige neue Diagnosen angezeigt. Und sie entdecken Fehler, die PVS-Studio in ihrem Code gefunden hat :). Leider haben wir die Daten und Links zu entsprechenden Verbesserungen nicht notiert, daher müssen Sie unser Wort dafür nehmen. Verschiedene C ++ - Compiler leihen sich einen Teil unserer Diagnose aus und wir finden das völlig normal, richtig und nützlich!

Neben C ++ - Compilern haben auch C # -Analysatoren begonnen, Ideen unserer Diagnose zu übernehmen. Das heißt, der in PVS-Studio implementierte C # -Analysator ist zu einem weiteren Leitstern geworden! Es ist schön und cool, sich dessen bewusst zu sein.

In diesem Fall kann ich beispielsweise in Echtzeit verfolgen, wie es passiert ist. Am 13. August 2019 haben wir einen großen Artikel über die Überprüfung von .NET Core Libraries (CoreFX) veröffentlicht. In diesem Artikel wird unter anderem ein Fehlermuster im Zusammenhang mit der Verwendung interpolierter Zeichenfolgen beschrieben (siehe V3138- Diagnose). CoreFX-Entwickler interessierten sich für unsere Veröffentlichung und begannen, die gefundenen Fehler zu korrigieren. Und am 14. August kamen sie zu den Fehlern, die wir im Zusammenhang mit diesen sehr interpolierten Zeichenfolgen gefunden haben: Korrigieren Sie einige fehlende $ s für die Zeichenfolgeninterpolation bei der Ablaufverfolgung .

Hier beginnt der interessanteste Teil. Noch am selben Tag erschien im Roslyn Analyzers-Projekt eine neue Aufgabe zur Implementierung einer neuen Diagnose " Neue Regel: Interpolierte Zeichenfolgen, bei denen das Sonderzeichen $ 2767 fehlt ", die sich auf das Fehlerrecht bezieht und in CoreFX behoben wurde. Wir sind so froh, dass sich unsere Bemühungen als nützlich für CoreFX-Entwickler erwiesen haben und unsere Diagnose zu einem Vorbild für Roslyn Analyzer-Entwickler geworden ist. Es ist ein bisschen bedauerlich, dass das PVS-Studio-Tool nirgendwo in der Diskussion erwähnt wird. Es scheint, als hätten sie diese Fehler gefunden und auf die Idee gekommen, selbst eine Diagnose zu stellen. Natürlich wären wir geschmeichelt, wenn wir als Originalquelle genannt würden. Nun, das ist in Ordnung.

Warum haben wir beschlossen, darüber zu schreiben? Wir freuen uns sehr und sind sogar ein bisschen stolz auf uns! Durch das Studium unserer Erfahrungen implementieren andere Compiler neue Diagnosen und verbessern die Qualität der entwickelten Software insgesamt. Ich verstehe, dass wir nicht die einzigen sind, die die Entwicklung der Fehlerfindungsfähigkeiten des Compilers beeinflussen. Wir freuen uns jedoch zu wissen, dass wir zu diesem Prozess beitragen.

Befürchten wir, dass andere Tools allmählich lernen, die gleichen Fehler wie PVS-Studio zu finden? Nein, nein. Unser Tool ist vorhanden und wird sofort verkauft, da wir den Fähigkeiten der Compiler immer einen Schritt voraus sind. Unser Ziel ist es, immer vorne zu bleiben. Das Bewusstsein, dass uns jemand ständig wieder gut macht, lässt uns nicht das Recht, uns zu entspannen, und es kommt allen zugute. Darüber hinaus versteht es sich, dass PVS-Studio nicht nur Warnungen ist, sondern auch:

  • Schnelle und qualitativ hochwertige Unterstützung (nur Programmierer antworten auf E-Mails);
  • Integration mit Visual Studio, IntelliJ IDEA, SonarQube, Jenkins, IncrediBuild;
  • Die Fähigkeit, das Tool sowohl lokal als auch in der Cloud zu verwenden (Docker, Travis CI);
  • Tools zur Integration von Analysen in große alte Projekte (Massenunterdrückung);
  • Detaillierte Dokumentation mit Beispielen für jedes Fehlermuster;
  • Der Mechanismus zum Senden von E-Mails an Entwickler (BlameNotifier);
  • Der Compiler führt die Überwachung aus (Compiler-Überwachung).
  • Und so weiter.

Vielen Dank für Ihre Aufmerksamkeit. Hoffentlich teilen Sie unsere Freude für PVS-Studio. Testen Sie unseren Analysator für die kontinuierliche Kontrolle der Codequalität Ihrer Projekte.

Zusätzliche Links:

  1. PVS-Studio-Diagramm zur Entwicklung diagnostischer Fähigkeiten .
  2. Im PVS-Studio-Code-Analysator verwendete Technologien zum Auffinden von Fehlern und potenziellen Schwachstellen .

Source: https://habr.com/ru/post/de464411/


All Articles