PVS-Studio 7.00

PVS-Studio C # \ Java \ C ++ Heute ist ein wichtiger Tag - nach 28 Releases der sechsten Version präsentieren wir unser PVS-Studio 7.00, bei dem die Schlüsselinnovation die Unterstützung der Java-Sprache ist. Im Jahr 2018 haben wir jedoch viele andere wichtige Änderungen in Bezug auf C ++, C #, Infrastruktur und Unterstützung von Codierungsstandards vorgenommen. Aus diesem Grund machen wir Sie auf einen Hinweis aufmerksam, der die wichtigsten Änderungen zusammenfasst, die in PVS-Studio zum letzten Mal 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 funktioniert in Windows-, Linux- und MacOS-Umgebungen.

Eine umfangreiche Sammlung von Fehlern, die bei der Überprüfung verschiedener Open Source-Projekte im Code gefunden wurden, zeigt deutlich die Fähigkeiten des Analysators.

Wir beginnen mit einer Änderung, aufgrund derer wir beschlossen haben, die Versionsnummer von 6.x auf 7.x zu ändern. Es ist die Analyseunterstützung der Java-Sprache, die eine lange Vorbereitungszeit erforderte.

Java


Das Wichtigste im Java-Analysator ist, dass es erschienen ist :). Wir möchten Java-Entwickler einladen, das Tool herunterzuladen und Projekte zu überprüfen, an denen Sie gerade arbeiten.

Wir haben den Benutzern die beliebtesten Methoden zur Integration des Analysators in das Build-System zur Verfügung gestellt:

  • Plugin für Maven.
  • Plugin für Gradle.
  • Plugin für IntelliJ IDEA.

Bei Verwendung von selbstgeschriebenen Build-Systemen können wir den Analysator direkt ausführen und die Quellen und den Klassenpfad auflisten.

Detaillierte Informationen zu allen Methoden zum Ausführen des Analysators finden Sie auf der Dokumentationsseite " Ausführen von PVS-Studio Java ".

Wir konnten uns nicht vor der SonarQube-Plattform der Code-Qualitätskontrolle scheuen, die bei Java-Entwicklern so beliebt ist. Deshalb haben wir die Unterstützung der Java-Sprache in unser Plugin für SonarQube aufgenommen .

C, C ++


2018 arbeitete unser Team aktiv an der Entwicklung des C ++ - Analysators. Zusammen mit den Algorithmen wurden viele neue Diagnosen erstellt, mit denen die aus dem Syntaxbaum extrahierten Daten erfasst und verarbeitet werden können.

CWE, CERT

C ++ (und C #) -Analysatorwarnungen wurden gemäß der Common Weakness Enumeration ( CWE ) klassifiziert. CWE ist ein System zur Klassifizierung potenzieller und bestätigter 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.

Zusätzlich wurden die 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 in C, C ++, Java und Perl, die vom CERT (CERT Coordination Center, CERT / CC) entwickelt wurden, um die Zuverlässigkeit und Sicherheit der Software zu verbessern.

Die Klassifizierung der C- und C ++ - Diagnose anhand dieser Warnungen ermöglicht die Verwendung von PVS-Studio als SAST-Lösung .

Misra

Im Jahr 2018 kann ein statischer Code-Analysator von PVS-Studio seine Warnungen gemäß den Standards MISRA C und MISRA C ++ klassifizieren. Aufgrund der Unterstützung dieser Standards ist es möglich geworden, den Analysator effektiv einzusetzen, um das Sicherheitsniveau, die Portabilität und die Zuverlässigkeit von Programmen für eingebettete Systeme zu erhöhen.

Lesen Sie mehr: " PVS-Studio: Unterstützung von MISRA C- und MISRA C ++ - Codierungsstandards ."

Die Unterstützung für MISRA ist im Zusammenhang mit der Entwicklung verschiedener Unterstützung für eingebettete Systeme relevant geworden, die im nächsten Abschnitt dieses Artikels erörtert werden.

Eingebettete Entwicklung

Im Jahr 2018 wurden die folgenden eingebetteten Compiler in PVS-Studio 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 zum Thema der Unterstützung eingebetteter Systeme:

  1. Static Code Analyzer PVS-Studio 6.22 unterstützt jetzt ARM-Compiler (Keil, IAR) .
  2. PVS-Studio unterstützt jetzt GNU Arm Embedded Toolchain .

Erweitern von benutzerdefinierten Anmerkungen

Manchmal werden solche benutzerdefinierten Implementierungen verschiedener Systemfunktionen, wie z. B. memcpy , malloc usw., in Projekten verwendet. Der Analysator kann Fehler in Code erkennen, der Standardfunktionen verwendet, aber in einem benutzerdefinierten Code war es bis vor kurzem unmöglich, solche Algorithmen anzuwenden. Mit der Annotation V_FUNC_ALIAS können Sie nun die Namen Ihrer Funktionen in Übereinstimmung mit den Systemnamen eingeben.

Kommentarformat:

//V_FUNC_ALIAS, implementation:sysf, function:f, namespace:ns, class:c 

  • Implementierungsschlüssel - Gibt den Namen der Standardfunktion zur Bestimmung des Alias ​​an.
  • Funktionstaste - Gibt den Namen des Alias ​​an. Die Signatur der Funktion, deren Name in diesem Schlüssel angegeben ist, muss mit der Signatur der Funktion übereinstimmen, die im Implementierungsschlüssel angegeben ist.
  • Klassenschlüssel ist der Name der Klasse. Könnte fehlen.
  • Namespace- Schlüssel ist der Name des Namespace. Könnte fehlen.

Schauen wir uns ein Beispiel an:

 //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy 

Jetzt behandelt der Analysator Aufrufe der MyMemCpy- Funktion genauso wie Aufrufe von memcpy . Für einen solchen Code wird beispielsweise eine V512-Warnung ausgegeben:

 int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int)); // Warning! 

C #


In diesem Jahr gab es keine signifikanten Änderungen am C # -Analysator. Es gab einige Verbesserungen bei der Diagnose und Fehlerbehebung. Warnungen des C # -Analysators sowie Warnungen des C ++ - Analysators wurden gemäß der Common Weakness Enumeration ( CWE ) klassifiziert. Die Zuordnung der C # -Diagnose zu den CWE-Kennungen finden Sie hier (siehe Diagnose mit den Nummern 3xxx).

Wir planen, 2019 zu einer aktiveren Entwicklung des C # -Analysators zurückzukehren. Wir planen auch, neue Diagnosen zu entwickeln und den Datenflussanalysemechanismus zu verbessern.

Berichtskonverter


Die Dienstprogramme PlogConverter.exe und plog-converter sind in PVS-Studio-Distributionen für Windows bzw. Linux / macOS enthalten. Darüber hinaus ist der Quellcode dieser Dienstprogramme 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.

Außerdem wurde die MISRA-Spalte für den Bericht in diesem Format hinzugefügt.

Berichtskonverter


Neben der CWE-ID ist die MISRA-Spalte optional und wird von Prüfern der Codesicherheit bei der Untersuchung der Analyseergebnisse aktiviert.

SonarQube Plugins


1. Vollständiges Update

Wir haben unsere Plugins mit der neuen API neu geschrieben. Dadurch konnten wir neue Funktionen hinzufügen und Kompatibilität mit SonarQube 7 x bieten. Die minimal unterstützte Version ist jetzt SonarQube 6.7 LTS .

2. PVS-Studio für Java

Die neue Version unterstützt die Diagnose in der Java-Sprache. Jetzt können Sie PVS-Studio zu anderen Qualitätskontrollwerkzeugen Ihres Java-Projekts hinzufügen.

3. MISRA-Standard

Wir haben kürzlich die Unterstützung der Standards MISRA C und MISRA C ++ angekündigt. Neue Plugins bieten auch deren Unterstützung. Beispielsweise wurde der folgende 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:

PVS-Studio, MISRA


Unabhängig von diesem Parameter ist die Suche nach den Tags misra und pvs-studio # misra in den Analyseergebnissen verfügbar. Informationen zur Anzahl der gefundenen MISRA-Warnungen wurden ebenfalls in Metriken hinzugefügt, die als Nächstes erläutert werden.

4. Neue Metriken

Im Menü Projekte -> Ihr Projekt -> Kennzahlen stehen verschiedene Codemetriken zur Verfügung, unter denen sich nun verschiedene Informationen von PVS-Studio befinden:

Sonarquube


Mit jeder der Metriken können Sie Diagramme erstellen und die Dynamik des Auftretens verschiedener Gruppen von Warnungen überwachen.

4. Mehrzeilige Übergänge

Einige Analysatordiagnosen geben Warnungen für mehrere Codezeilen aus. Manchmal sind sie sehr weit voneinander entfernt. In der neuen Version haben wir mehrzeilige Übergänge hinzugefügt:

Sonarquube


SonarQube unterstützt auch Übergänge zwischen verschiedenen Dateien. Später werden wir solche Übergänge für die Diagnostik hinzufügen, in denen es eine intermodulare Analyse gibt.

6. Dokumentation

Die Dokumentation hat große Veränderungen erfahren. PVS-Studio ist ein plattformübergreifendes und mehrsprachiges Produkt. Daher konzentrierten sich alle Verarbeitungen darauf, allgemeinere und leicht verständliche Anweisungen für die Arbeit an verschiedenen Systemen zu schreiben.

SAST


Bis vor kurzem haben wir in unseren Artikeln PVS-Studio als Werkzeug zur Erkennung von Codefehlern positioniert. Während wir PVS-Studio fast nie in einem Sicherheitskontext betrachtet haben. In diesem Jahr haben wir diese Situation behoben und das Tool beim Testen von Sicherheitsanwendungen und DevSecOps-Praktiken in Betracht gezogen.

PVS-Studio ist ein statisches Tool zum Testen der Anwendungssicherheit (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, kann der Analysator Warnungen in den folgenden Formaten generieren: Common Weakness Enumeration , SEI CERT Coding Standards . Zuordnungstabellen der PVS-Studio-Diagnose zu verschiedenen Standards:

  1. CWE-Zuordnung
  2. SEI-Zertifikatzuordnung

Dieses Thema wurde im Artikel " PVS-Studio als SAST-Lösung " ausführlicher beschrieben.

Wir empfehlen außerdem, diese Veröffentlichungen anzusehen:

  1. Wie kann PVS-Studio bei der Erkennung von Sicherheitslücken helfen?
  2. Schießen Sie sich beim Umgang mit Eingabedaten in den Fuß .
  3. Verteilen von PVS-Studio Analyzer-Lizenzen an Sicherheitsexperten .

PVS-Studio Kostenlos


Am Vorabend des neuen Jahres 2019 beschloss ein PVS-Studio-Team, allen Mitwirkenden von Open-Source-Projekten, die auf GitHub oder Bitbucket gehostet werden, ein schönes Geschenk zu machen. Sie können den statischen Analysator PVS-Studio kostenlos für die Entwicklung von Open Source-Projekten verwenden.

Details: " Kostenloses PVS-Studio für diejenigen, die Open Source-Projekte entwickeln ".

macOS


Im Jahr 2018 hat PVS-Studio begonnen, unter macOS zu arbeiten. Unser Team hat beschlossen, einen XNU-Kernel-Check durchzuführen, der mit diesem Ereignis zusammenfällt: " PVS-Studio ist jetzt unter macOS verfügbar: 64 Schwachstellen im XNU-Kernel von Apple ".

XNU ist ein Kernel von Computer-Betriebssystemen, die von Apple entwickelt und in OS X-Betriebssystemen (macOS, iOS, tvOS, watchOS) verwendet werden.

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


All Articles