PVS-Studio 7.00

    PVS-Studio C # \ Java \ C ++Heute ist ein wichtiger Tag - nach 28 Releases der sechsten Version veröffentlichen wir PVS-Studio 7.00, wobei die wichtigste Neuerung die Unterstützung der Java-Sprache ist. Im Jahr 2018 gab es jedoch viele andere wichtige Änderungen in Bezug auf C ++, C #, die Infrastruktur und die Unterstützung für Codierungsstandards. Wir möchten Sie daher auf einen Hinweis aufmerksam machen, in dem die wichtigsten Änderungen zusammengefasst sind, die in letzter Zeit in PVS-Studio aufgetreten sind.

    PVS-Studio ist ein Tool zum Erkennen von Fehlern und potenziellen Schwachstellen im Quellcode von Programmen, die in C, C ++, C # und Java geschrieben sind. Funktioniert unter Windows, Linux und Mac OS.

    Die Fähigkeiten des Analysators werden durch eine umfangreiche Sammlung von Fehlern im Code demonstriert , die wir beim Überprüfen verschiedener Open-Source-Projekte gefunden haben.

    Wir werden mit der Änderung beginnen, weshalb eigentlich beschlossen wurde, die Versionsnummer von 6.x auf 7.x zu ändern. Dies wird im Java Language Analyzer unterstützt, den wir seit langem vorbereiten .

    Java


    Das Wichtigste an Java Analyzer ist, dass es erschienen ist :). Wir laden Java-Entwickler ein, das Tool herunterzuladen und die Projekte zu überprüfen, an denen sie arbeiten.

    Wir haben den Benutzern die beliebtesten Möglichkeiten zur Verfügung gestellt, um den Analysator in das Build-System zu integrieren:

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

    Wenn Sie selbstgeschriebene Assemblersysteme verwenden, können Sie den Analysator direkt starten, indem Sie den Quellcode und den Klassenpfad auflisten .

    Ausführliche Informationen zu allen Methoden zum Starten des Analysators finden Sie auf der Dokumentationsseite " So starten Sie PVS-Studio Java ".

    Wir konnten die von Java-Entwicklern so beliebte Code-Qualitätskontrollplattform SonarQube nicht ignorieren. Daher haben wir unserem SonarQube-Plugin Java-Sprachunterstützung hinzugefügt .

    C, C ++


    Im Jahr 2018 arbeitete unser Team aktiv an der Entwicklung eines C ++ - Analysators. Es gibt viele neue Diagnosen sowie verbesserte Algorithmen , mit denen Sie Informationen sammeln und verarbeiten können, die aus dem Syntaxbaum extrahiert wurden. Die C ++ - Nachrichten von

    CWE und CERT

    Analyzer (sowie der C # -Analysator) wurden gemäß der Common Weakness Enumeration ( CWE ) klassifiziert . CWE ist ein Klassifizierungssystem für potenzielle und nachgewiesene 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 Nachrichten nach CERT C Coding Standard und CERT C ++ Coding Standard klassifiziert.SEI CERT Coding Standards ist ein Satz von Standards für das Schreiben von Software (Software) in C, C ++, Java und Perl, der vom CERT-Koordinierungszentrum (CERT-Koordinierungszentrum, CERT / CC) entwickelt wurde, um die Zuverlässigkeit und Sicherheit von Software zu verbessern.

    Die Klassifizierung der C- und C ++ - Diagnose gemäß diesen Warnungen ermöglicht die Verwendung von PVS-Studio als SAST-Lösung .

    MISRA

    Im 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, Tragbarkeit und Zuverlässigkeit von Programmen für eingebettete Systeme zu verbessern.

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

    . Unterstützung für MISRA hat im Zusammenhang mit der Entwicklung des Analysators aktuell worden eine Vielzahl von Embedded - Systemen zu unterstützen, wie im nächsten Abschnitt dieses Artikels diskutiert wird

    Embedded Development

    in dem PVS-Studio Analyzer Im Jahr 2018 wurden 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. Texas Instruments Code Composer Studio, ARM-Code-Generierungswerkzeuge C, C ++
    • Windows / Linux / MacOS. GNU Arm Embedded Toolchain, Arm Embedded GCC-Compiler, C, C ++

    Zwei Anmerkungen zur Unterstützung eingebetteter Systeme:

    1. Der statische Codeanalysator PVS-Studio 6.22 ist für ARM-Compiler (Keil, IAR) geeignet .
    2. PVS-Studio wurde um die eingebettete GNU Arm-Toolchain erweitert .

    Benutzerkommentare erweitern

    Manchmal verwenden Projekte eigene Implementierungen verschiedener Systemfunktionen, z. B. memcpy , malloc usw. Der Analysator kann Fehler mit Standardfunktionen sehr gut finden, im Benutzercode war es jedoch bis vor kurzem nicht möglich, solche Algorithmen zu verwenden. Mit der V_FUNC_ALIAS- Annotation können Sie nun den entsprechenden Systemnamen die Namen Ihrer Funktionen zuweisen .

    Kommentarformat:

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

    • Key Implementierungsteil - ist der Name der Standard - Funktion , für die der Spitzname definiert ist.
    • Die Schlüsselfunktion - setzt den Alias - Namen. Die Signatur der Funktion, deren Name in diesem Schlüssel angegeben ist, muss mit der Signatur der im Implementierungsschlüssel angegebenen Funktion übereinstimmen.
    • Der Klassenschlüssel ist der Name der Klasse. Kann abwesend sein
    • Der Namespace- Schlüssel ist der Name des Namespaces. Kann abwesend sein

    Betrachten Sie ein Beispiel:

    //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy

    Der Analyzer behandelt Aufrufe der MyMemCpy- Funktion jetzt genauso wie Aufrufe an memcpy . Bei einem solchen Code wird beispielsweise eine Warnung V512 ausgegeben:

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

    C #


    In diesem Jahr gab es keine wesentlichen Änderungen am C # -Analysator. Es gab separate Verbesserungen bei der Diagnose und Korrektur von Mängeln. Die Meldungen des C # -Analysators sowie des C ++ - Analysators wurden gemäß der Common Weakness Enumeration ( CWE ) klassifiziert . Die Entsprechung der C # -Diagnose mit den CWE-Bezeichnern ist hier 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 zu verbessern (Datenflussanalyse).

    Berichtkonverter


    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 PVS-Studio für Java haben wir die Code-Hervorhebung für C, C ++, C # überarbeitet und Java im FullHtml-Format ( für einen Webbrowser ) hinzugefügt .

    Auch für den Bericht in diesem Format wurde die Spalte MISRA hinzugefügt:

    PVS-Studio, MISRA

    Wie die CWE-ID ist die MISRA-Spalte optional und wird von Code-Sicherheitsforschern in die Analyseergebnisse einbezogen.

    SonarQube-Plugins


    1. Vollständiges Update

    Wir haben unsere Plugins mit der neuen API neu geschrieben. Dadurch konnten neue Funktionen hinzugefügt und die Kompatibilität mit SonarQube 7.x sichergestellt werden. Die minimale unterstützte Version ist jetzt SonarQube 6.7 LTS .

    2. PVS-Studio für Java

    Eine neue Version von Plug-Ins wurde zur Diagnoseunterstützung für die Java-Sprache hinzugefügt. Jetzt können Sie PVS-Studio zu anderen Qualitätskontrolle-Tools Ihres Java-Projekts hinzufügen.

    3. MISRA-Standard

    Vor kurzem haben wir die Unterstützung für die Standards MISRA C und MISRA C ++ angekündigt . Neue Plug-Ins 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 Analyzer-Alarmen:

    Misra


    Unabhängig von dieser Einstellung steht die Suche nach den Tags misra und pvs-studio # misra in den Analyseergebnissen zur Verfügung. Informationen über die Anzahl der gefundenen Warnungen, die MISRA zu den Metriken hinzugefügt wurde, werden weiter diskutiert.

    4. Neue Kennzahlen

    Im Menü Projekte -> Ihr Projekt -> Kennzahlen stehen verschiedene Codemetriken zur Verfügung, darunter verschiedene Informationen aus PVS-Studio:

    SonarQube


    Für jede Metrik können Sie Diagramme erstellen und die Dynamik des Erscheinungsbilds bestimmter Warnungsgruppen des Analysators verfolgen.

    4. Mehrzeilige Übergänge

    Einige Analysediagnosen geben Warnungen in mehreren Zeilen einer Datei aus. Manchmal sind sie sehr weit voneinander entfernt. In der neuen Version haben wir mehrzeilige Übergänge hinzugefügt:

    SonarQube


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

    6. Dokumentation Die

    Dokumentation hat große Änderungen erfahren. Bei PVS-Studio handelt es sich um ein plattformübergreifendes und mehrsprachiges Produkt, das darauf abzielte, allgemeinere und verständlichere Anweisungen für die Arbeit an einem bestimmten System zu erstellen.

    SAST


    Bis vor kurzem haben wir in unseren Artikeln PVS-Studio als Werkzeug zur Erkennung von Fehlern im Code positioniert. Gleichzeitig haben wir PVS-Studio im Sicherheitsbereich fast nicht berücksichtigt. In diesem Jahr haben wir diese Situation korrigiert und das Tool hinsichtlich der Prüfung der Anwendungssicherheit und der DevSecOps-Praktiken untersucht.

    PVS-Studio ist ein Tool zum statischen Testen der Anwendungssicherheit (Static Application Security Testing, SAST). Mit anderen Worten, der PVS-Studio Analyzer deckt nicht nur Tippfehler, toten Code und andere Fehler auf, sondern auch potenzielle Schwachstellen.

    Für den Komfort von Spezialisten, die PVS-Studio als SAST-Tool verwenden, zeigt der Analysator seine Warnungen zu den Common Weakness Enumeration , den SEI CERT-Codierungsstandards, an. Diagnose-Korrespondenztabellen für PVS-Studio für verschiedene Standards:

    1. CWE-Konformität
    2. SEI CERT-Konformität

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

    Wir bieten auch an, sich mit den Publikationen vertraut zu machen:

    1. Wie kann PVS-Studio bei der Suche nach Schwachstellen helfen?
    2. Wir schießen in den Fuß und verarbeiten die Eingabedaten .
    3. Wir liefern den PVS-Studio Analyzer an Sicherheitsexperten .

    PVS-Studio Kostenlos


    Am Vorabend des neuen 2019 beschloss das PVS-Studio-Team, allen Mitwirkenden von Open-Source-Projekten, die auf GitHub oder Bitbucket gehostet werden, ein schönes Geschenk zu machen. Sie erhalten die Möglichkeit, den kostenlosen statischen Analysator PVS-Studio für die Entwicklung von Open Source-Projekten zu nutzen.

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

    macOS


    Im Jahr 2018 lernte PVS-Studio, wie man unter macOS arbeitet. Für diese Veranstaltung hat unser Team den XNU-Kernel-Test zeitlich festgelegt: " Die Veröffentlichung von PVS-Studio für macOS: 64 Schwachstellen im Apple XNU-Kernel ."

    XNU ist der Kern der von Apple entwickelten Computerbetriebssysteme, die in der OS-Betriebssystemfamilie (MacOS, iOS, TVOS, WatchOS) verwendet werden.



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

    Jetzt auch beliebt: