Durch Kommunikation zur Unterstützung und einige andere indirekte Anzeichen stellten wir fest, dass unter unseren kostenlosen Benutzern viele Studenten waren. Grund: Der PVS-Studio-Analysator wurde von einigen Lehrern in den Disziplinen der Softwareentwicklung eingesetzt. Das ist sehr angenehm für uns und wir haben beschlossen, diese kleine Notiz zu schreiben, um die Aufmerksamkeit anderer Lehrer auf sich zu ziehen. Wir freuen uns, dass die Studierenden in die Methodik der statischen Code-Analyse im Allgemeinen und in das PVS-Studio-Tool im Besonderen eingeführt werden. Unser Team wird versuchen, zur Entwicklung dieses Trends beizutragen.
Die Entwicklung moderner Software ist ohne einen integrierten Ansatz zur Gewährleistung der Qualität und Zuverlässigkeit von Software nicht möglich. Der Grund ist, dass die Größe der Codebasis moderner Anwendungen schnell wächst. Ich werde dies anhand von Zahlen erklären. Nehmen Sie zum Beispiel Betriebssysteme:
- MS DOS 1.0: 4.000 Codezeilen. Eine Person konnte den gesamten Code lesen, herausfinden und Fehler finden.
- Linux-Kernel 1.0.0: 176.000 Codezeilen. Das Team hat weiterhin die Möglichkeit, eine detaillierte Überprüfung des Codes durchzuführen, obwohl dies viel Zeit und Mühe kostet.
- Linux-Kernel 5.0: über 26.000.000 Codezeilen. Es ist unmöglich, das Projekt zu realisieren.
Am Beispiel des Linux-Kernels können Sie sehen, dass die Größe der Codebasis in 25 Jahren um das 150-fache gestiegen ist. Jetzt ist es für einen Programmierer unmöglich, sich einfach hinzusetzen und den Code der gesamten Anwendung zu überprüfen, ihn zu verstehen, Fehler zu finden und Architekturlösungen zu verbessern. Das Gerät moderner Programme passt einfach nicht in den Kopf einer Person, und es gibt keine Spezialisten mehr, die Fragen zur Gestaltung des Projekts beantworten können.
Die Unfähigkeit, das Projekt zu realisieren, ist nur die halbe Miete. Mit zunehmender Projektgröße steigt auch die Fehlerdichte. Ich betone: Es
geht nicht nur um eine Erhöhung der Fehleranzahl, sondern auch um deren Dichte ! In einem Programm, das als Teil einer Hausarbeit geschrieben wurde, können Sie 1000 Codezeilen schreiben und keinen einzigen Fehler machen. Und es ist unrealistisch, einer großen Anwendung 1000 Codezeilen hinzuzufügen und nicht ein paar Fehler zu machen. Zur Verdeutlichung greifen wir erneut auf die Zahlen zurück:
Abbildung 1. Typische Fehlerdichte in Projekten unterschiedlicher Größe. Daten stammen aus Steve McConnells Buch Perfect Code.Es ist daher unmöglich, zuverlässige Programme mit denselben Ansätzen wie vor 20 bis 30 Jahren zu schreiben. Es ist erforderlich, eine Reihe von Methoden zu verwenden, mit denen das Wachstum der Komplexität eines Softwareprojekts gesteuert und die erforderliche Codequalität sichergestellt werden kann:
- Codierungsstandards
- Codeüberprüfungen
- Unit-Tests
- Regressionstests
- Lasttest
- Manuelle Prüfung
- ....
- Dynamische Analyse
- Statische Analyse
Die Methoden von oben auf der Liste sind Programmierern vertraut und werden seit langem von fast allen Teams erfolgreich angewendet. Die letzten beiden Methoden sind zwar nicht neu, aber weitaus seltener. Daher lohnt es sich jetzt bei der Vorbereitung der Studierenden, dem Studium der Werkzeuge der statischen und dynamischen Analyse besondere Aufmerksamkeit zu widmen.
Ich werde jetzt nicht über dynamische Analyse sprechen, obwohl sie nicht weniger
wichtig als statisch ist.
Die statische Analyse ist jedoch unser Element, und ich lade die Lehrer ein, auf unser Softwareprodukt PVS-Studio zu achten.
PVS-Studio ist ein Tool zum Erkennen von Fehlern und potenziellen Schwachstellen im Quellcode von Programmen, die in C, C ++, C # und Java geschrieben wurden. Es funktioniert auf 64-Bit-Systemen unter Windows, Linux und macOS und kann Code analysieren, der für 32-Bit-, 64-Bit- und eingebettete ARM-Plattformen entwickelt wurde.
Der PVS-Studio-Analysator kann als Beispiel für ein modernes Tool zur statischen Code-Analyse angesehen werden. Zunächst ist es gut, anhand seines Beispiels die Fähigkeiten statischer Analysetools zur Erkennung von
Fehlern und Sicherheitsmängeln (
SAST )
aufzuzeigen . Zweitens können Sie die Integration in den Softwareentwicklungszyklus demonstrieren, sodass die Codesteuerung kontinuierlich erfolgt. Anhand seines Beispiels können Sie die Möglichkeit der Integration in Systeme wie
Jenkins ,
TeamCity ,
Azure DevOps ,
SonarQube ,
Travis CI usw.
aufzeigen .
Um PVS-Studio als Teil des Trainings zu verwenden, müssen Sie nichts Besonderes tun oder koordinieren.
Wir bieten verschiedene
Optionen für die kostenlose Lizenzierung von PVS-Studio, einschließlich für Open Source-Projekte. Speziell für Bildungszwecke ist es am besten, dem Code den folgenden Kommentar hinzuzufügen, wenn die Schülerarbeit nicht geöffnet ist:
// This is a personal academic project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com
Um den statischen Analysator PVS-Studio kostenlos verwenden zu können, müssen Sie die folgenden zwei Schritte ausführen:
Erster SchrittWenn Sie PVS-Studio als Plug-In für Visual Studio verwenden oder das Standalone-Dienstprogramm verwenden, geben Sie den folgenden Lizenzschlüssel ein:
Name: PVS-Studio Free
Key: FREE-FREE-FREE-FREE
Wenn Sie PVS-Studio für Linux verwenden und dann direkt mit dem zweiten Schritt fortfahren, benötigen Sie keine Datei mit einer Lizenz.
Zweiter SchrittSie müssen zwei Zeilen mit einem Kommentar am Anfang jeder Datei eingeben. Nehmen Sie Korrekturen an allen kompilierten Dateien Ihres Projekts vor. Dies bezieht sich auf Dateien mit den Erweiterungen c, cc, cpp, cs, java usw. Header-h-Dateien müssen nicht geändert werden.
Sie können Kommentare sowohl manuell hinzufügen als auch das Hilfsprogramm verwenden. Sie können das Dienstprogramm (zusammen mit dem Quellcode) hier herunterladen:
How-to-Use-pvs-studio-free .
All dies wird ausführlicher im Artikel "
Kostenlose Nutzung von PVS-Studio " beschrieben. Bitten Sie die Schüler, sich damit vertraut zu machen. Insbesondere sollte berücksichtigt werden, dass wir kostenlose Benutzer über die StackOverflow-Website unterstützen. Sie sollten Support und Fehlerbenachrichtigungen jedoch nicht verwechseln. Gerade über solche Momente und wird im Artikel beschrieben.
Vielen Dank für Ihre Aufmerksamkeit. Bei Fragen stehen wir Ihnen gerne zur Verfügung. Nehmen Sie
Kontakt mit uns auf.
Zusätzliche Links:- Ivan Ponomarev. Bericht auf der Moskauer Konferenz Heisenbug 2019: Kontinuierliche statische Code-Analyse .
- Sergey Khrenov, Philip Handelyants. Meisterklasse auf der Saint HighLoad ++ 2019 Konferenz: PVS-Studio Code Analyzer .
- Andrey Karpov. Kostenlose Lizenzoptionen von PVS-Studio .
- PVS-Studio. Dokumentation

Wenn Sie diesen Artikel einem englischsprachigen Publikum zugänglich machen möchten, verwenden Sie bitte den Link zur Übersetzung: Andrey Karpov.
Hinweis für Professoren: Verwenden Sie PVS-Studio, um die Schüler mit den Tools zur Codeanalyse vertraut zu machen .