
Heute ist ein wichtiger Tag - nach 28 Versionen der sechsten Version veröffentlichen wir PVS-Studio 7.00, bei dem die Unterstützung für die Java-Sprache die wichtigste Neuerung ist. Im Jahr 2018 haben sich jedoch viele andere wichtige Änderungen in Bezug auf C ++, C #, Infrastruktur und Unterstützung für Codierungsstandards angesammelt. Aus diesem Grund machen wir Sie auf einen Hinweis aufmerksam, in dem die wichtigsten Änderungen zusammengefasst sind, die kürzlich in PVS-Studio vorgenommen wurden.
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 läuft unter Windows, Linux und MacOS.
Die Fähigkeiten des Analysators werden durch die umfangreiche
Sammlung von Fehlern im Code, die wir bei der
Überprüfung verschiedener offener Projekte gefunden haben, gut demonstriert.
Wir werden mit der Änderung beginnen, aufgrund derer tatsächlich beschlossen wurde, die Versionsnummer von 6.x auf 7.x zu ändern. Dies ist die Unterstützung des Java-Sprachanalysators, den wir seit langem
vorbereiten .
Java
Das Wichtigste im Java-Analysator ist, dass es erschienen ist :). Wir laden Java-Entwickler ein, das Tool herunterzuladen und sich die Projekte anzusehen, an denen sie arbeiten.
Wir haben den Benutzern die beliebtesten Möglichkeiten zur Integration des Analysators in das Montagesystem zur Verfügung gestellt:
- Plugin für Maven.
- Plugin für Gradle.
- Plugin für IntelliJ IDEA.
Bei Verwendung von selbstgeschriebenen Assemblierungssystemen kann der Analysator direkt ausgeführt werden, indem die Quellen und der
Klassenpfad aufgelistet werden .
Detaillierte Informationen zu allen Methoden zum Starten des Analysators finden Sie auf der Dokumentationsseite "
So starten Sie PVS-Studio Java ".
Wir konnten die bei Java-Entwicklern so beliebte Plattform zur Qualitätskontrolle von SonarQube-Code nicht ignorieren. Deshalb haben wir unserem
SonarQube-Plugin Java-Sprachunterstützung hinzugefügt.
C, C ++
2018 arbeitete unser Team aktiv an der Entwicklung des C ++ - Analysators. Es wurden viele neue Diagnosen sowie verbesserte
Algorithmen veröffentlicht , mit denen Sie Informationen aus dem Syntaxbaum erfassen und verarbeiten können.
CWE, CERTNachrichten aus dem C ++ - Parser (wie dem C # -Parser) wurden gemäß der Common Weakness Enumeration (
CWE ) klassifiziert. CWE ist ein Klassifizierungssystem für potenzielle und bestätigte Schwachstellen. Es wird von der Community unterstützt, um Softwareprobleme zu identifizieren und automatisierte Tools zu erstellen, mit denen diese Probleme identifiziert und behoben werden können.
Darüber hinaus wurden Nachrichten gemäß CERT C Coding Standard und CERT C ++ Coding Standard klassifiziert.
SEI CERT Coding Standards ist eine Reihe von Standards zum Schreiben von Software (Software) in C, C ++, Java und Perl, die vom CERT Coordination Center (CERT Coordination Center, CERT / CC) entwickelt wurden, um die Zuverlässigkeit und Sicherheit der Software zu erhöhen.
Die Klassifizierung der C- und C ++ - Diagnose anhand dieser Warnungen ermöglicht die Verwendung von PVS-Studio als
SAST-Lösung .
MisraIm Jahr 2018 begann der statische Code-Analysator PVS-Studio, seine Warnungen gemäß den Standards MISRA C und MISRA C ++ zu klassifizieren. Dank der Unterstützung dieser Standards ist es möglich geworden, den Analysator effektiv einzusetzen, um die Sicherheit, Portabilität und Zuverlässigkeit von Programmen für eingebettete Systeme zu verbessern.
Weitere Details: "
PVS-Studio: Unterstützung für Codierungsstandards MISRA C und MISRA C ++ ".
Die MISRA-Unterstützung ist im Zusammenhang mit der Entwicklung der Unterstützung für verschiedene eingebettete Systeme im Analysegerät relevant geworden, die im nächsten Abschnitt des Artikels erörtert wird.
Eingebettete EntwicklungIm Jahr 2018 wurde im PVS-Studio Analyzer Folgendes unterstützt:
- Windows IAR Embedded Workbench, C / C ++ - Compiler für ARM C, C ++
- Windows / Linux Keil µVision, DS-MDK, ARM-Compiler 5/6 C, C ++
- Windows / Linux Code Composer Studio von Texas Instruments, Tools zur ARM-Codegenerierung C, C ++
- Windows / Linux / macOS. GNU Arm Embedded Toolchain, Arm Embedded GCC-Compiler, C, C ++
Zwei Hinweise zur Unterstützung eingebetteter Systeme:
- Der statische Code-Analysator PVS-Studio 6.22 ist für ARM-Compiler (Keil, IAR) angepasst .
- PVS-Studio hat die Unterstützung für die GNU Arm Embedded Toolchain eingeführt .
Benutzerdefinierte AnmerkungserweiterungManchmal verwenden Projekte ihre eigenen Implementierungen verschiedener Systemfunktionen, z. B.
memcpy ,
malloc usw. Der Analysator ist sehr gut darin, mit Standardfunktionen nach Fehlern zu suchen, aber es war bis vor kurzem unmöglich, solche Algorithmen im Benutzercode zu verwenden. Mit der Annotation
V_FUNC_ALIAS können Sie nun den
Systemnamen die Namen Ihrer Funktionen
zuweisen .
Kommentarformat:
- Schlüsselimplementierung - Legt den Namen einer Standardfunktion fest, für die ein Alias definiert ist.
- Funktionstaste - Legt den Aliasnamen fest. Die Signatur der Funktion, deren Name in diesem Schlüssel angegeben ist, muss mit der Signatur der im Implementierungsschlüssel angegebenen Funktion übereinstimmen.
- Die Schlüsselklasse ist der Name der Klasse. Kann fehlen.
- Der Namespace- Schlüssel ist der Namespace- Name. Kann fehlen.
Betrachten Sie ein Beispiel:
Jetzt verarbeitet der Analysator Aufrufe der
MyMemCpy- Funktion genauso wie Aufrufe von
memcpy . Beispielsweise wird für einen solchen Code eine Warnung V512 ausgegeben:
int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int));
C #
In diesem Jahr gab es keine signifikanten Änderungen am C # -Analysator. Es gab einige Verbesserungen bei der Diagnose und Fehlerbehebung. Nachrichten aus dem C # -Parser wurden wie der C ++ - Parser gemäß der Common Weakness Enumeration (
CWE ) klassifiziert. Hier wird die Entsprechung der C # -Diagnose mit den CWE-Kennungen angegeben (siehe Diagnose mit den Nummern 3xxx).
Wir planen, 2019 zu einer aktiveren Entwicklung des C # -Analysators zurückzukehren. Es ist geplant, neue Diagnosen zu entwickeln und den Mechanismus der Datenflussanalyse (Datenflussanalyse) zu verbessern.
Berichtskonverter
Die Dienstprogramme PlogConverter.exe und plog-converter sind in den PVS-Studio-Distributionen für Windows bzw. Linux / macOS enthalten. Der Quellcode für diese Dienstprogramme ist auch auf
GitHub verfügbar.
Mit dem Aufkommen von PVS-Studio für Java haben wir die Code-Hervorhebung für C, C ++, C # neu gestaltet und Java im FullHtml-Format (
für einen Webbrowser ) hinzugefügt.
Für den Bericht in diesem Format wurde außerdem die Spalte MISRA hinzugefügt:
Wie die CWE-ID ist die MISRA-Spalte optional und wird von Codesicherheitsforschern bei der Prüfung der Analyseergebnisse berücksichtigt.
SonarQube Plugins
1. Vollständiges UpdateWir haben unsere Plugins mit der neuen API neu geschrieben. Dies ermöglichte es, neue Funktionen hinzuzufügen und die Kompatibilität mit SonarQube 7.x sicherzustellen. Die minimal unterstützte Version ist jetzt
SonarQube 6.7 LTS .
2. PVS-Studio für JavaDie neue Version der Plugins wurde um Diagnoseunterstützung für die Java-Sprache erweitert. Jetzt können Sie PVS-Studio zu anderen Qualitätskontrollwerkzeugen Ihres Java-Projekts hinzufügen.
3. MISRA-StandardWir haben kürzlich die
Unterstützung der Standards MISRA C und MISRA C ++ angekündigt. Neue Plugins werden ebenfalls unterstützt. Zum Beispiel wurde ein Parameter hinzugefügt (zusätzlich zu CWE):
sonar.pvs-studio.misra=active
Dazu gehört das Hinzufügen der MISRA-Kennung zu den Warnungen des Analysators:
Unabhängig von diesem Parameter ist eine Suche nach den
Tags misra und
pvs-studio # misra in den Analyseergebnissen verfügbar. Informationen zur Anzahl der gefundenen MISRA-Warnungen wurden ebenfalls zu den Metriken hinzugefügt, die später erläutert werden.
4. Neue MetrikenIm Menü
Projekte -> Ihr Projekt -> Maßnahmen stehen verschiedene Codemetriken zur Verfügung, darunter nun verschiedene Informationen von PVS-Studio:
Für jede der Metriken können Sie Diagramme erstellen und die Dynamik des Erscheinungsbilds verschiedener Warngruppen für Analysegeräte überwachen.
4. Mehrzeilige ÜbergängeEinige Analysatordiagnosen geben Warnungen in mehreren Zeilen der Datei aus. Manchmal sind sie sehr weit voneinander entfernt. In der neuen Version haben wir mehrzeilige Übergänge hinzugefügt:
SonarQube unterstützt auch Übergänge zwischen verschiedenen Dateien. Später werden wir solche Übergänge für die Diagnostik hinzufügen, bei denen es eine intermodulare Analyse gibt.
6. DokumentationDie Dokumentation wurde grundlegend geändert. PVS-Studio ist ein plattformübergreifendes und mehrsprachiges Produkt, daher zielten alle Verarbeitungen darauf ab, allgemeinere und verständlichere Anweisungen für die Arbeit an einem bestimmten System zu schreiben.
SAST
Bis vor kurzem haben wir in unseren Artikeln PVS-Studio als Werkzeug zur Erkennung von Codefehlern positioniert. Gleichzeitig haben wir PVS-Studio im Sicherheitskontext fast nicht berücksichtigt. In diesem Jahr haben wir diese Situation korrigiert und das Tool unter dem Gesichtspunkt des Testens der Anwendungssicherheit und der DevSecOps-Praktiken betrachtet.
PVS-Studio ist ein Tool für statische Anwendungssicherheitstests (Static Application Security Testing, SAST). Mit anderen Worten, der PVS-Studio-Analysator erkennt nicht nur Tippfehler, toten Code und andere Fehler, sondern auch potenzielle Schwachstellen.
Für Spezialisten, die PVS-Studio als SAST-Tool verwenden, zeigt der Analysator seine Warnungen in den
SEI CERT-Codierungsstandards Common Weakness Enumeration an . Konformitätstabellen der PVS-Studio-Diagnose zu verschiedenen Standards:
- CWE-Konformität
- Compliance SEI CERT
Dieses Thema wird im Artikel "
PVS-Studio als SAST-Lösung " ausführlicher beschrieben.
Wir bieten auch an, sich mit den Veröffentlichungen vertraut zu machen:
- Wie kann PVS-Studio bei der Suche nach Schwachstellen helfen?
- Wir schießen in den Fuß und verarbeiten die Eingabedaten .
- Wir stellen den PVS-Studio-Analysator Sicherheitsexperten zur Verfügung .
PVS-Studio Kostenlos
Am Vorabend der Feier des neuen Jahres 2019 beschloss das PVS-Studio-Team, allen Mitwirkenden von Open-Source-Projekten, die auf GitHub oder Bitbucket gehostet werden, ein angenehmes Geschenk zu machen. Sie haben die Möglichkeit, den statischen Analysator PVS-Studio kostenlos zur Entwicklung von Open Source-Projekten zu verwenden.
Details: "
Kostenloses PVS-Studio für diejenigen, die Open Source-Projekte entwickeln ."
macOS
Im Jahr 2018 lernte PVS-Studio, unter der Kontrolle von macOS zu arbeiten. Unser Team widmete den XNU-Kernel-Check diesem Ereignis: "
PVS-Studio-Version für macOS: 64 Schwachstellen im Apple XNU-Kernel ".
XNU ist der Kern von Computer-Betriebssystemen, die von Apple entwickelt und in der OS X-Betriebssystemfamilie (macOS, iOS, tvOS, watchOS) verwendet werden.

Wenn Sie diesen Artikel einem englischsprachigen Publikum zugänglich machen möchten, verwenden Sie bitte den Link zur Übersetzung: Andrey Karpov, Svyatoslav Razmyslov.
PVS-Studio 7.00 .