Erste Schritte mit dem PVS-Studio Static Analyzer für Visual C ++

Bild 8

In diesem Artikel werde ich Ihnen PVS-Studio, einen Analysator für C- und C ++ - Code, erläutern und Ihnen zeigen, wie Sie ihn in der Visual C ++ - Umgebung verwenden. Diese Anleitung richtet sich speziell an Anfänger.

Analysator installieren


PVS-Studio unterstützt Microsoft Visual Studio 2019, 2017, 2015, 2013, 2012 und 2010. Die Systemanforderungen finden Sie in der Dokumentation . Derzeit kann PVS-Studio Projekte analysieren, die in C, C ++, C # und Java geschrieben wurden. Dieser Artikel konzentriert sich jedoch auf Programmierer, die in Visual C ++ arbeiten und nach Hilfe suchen, um mit dem Analysator zu beginnen.

Das Installationspaket kann hier heruntergeladen werden . Nach dem Ausführen stehen Ihnen eine Reihe von Integrationsoptionen (Abbildung 1) zur Auswahl. Nicht verfügbare Optionen sind ausgegraut.

Abbildung 1. Auswahlfenster für Integrationskomponenten.

Abbildung 1. Auswahlfenster für Integrationskomponenten.

Öffnen Sie nach der Installation von PVS-Studio das Info-Fenster von Visual Studio und stellen Sie sicher, dass der Analysator unter den installierten Produkten vorhanden ist.

Ein Projekt überprüfen


Nach Abschluss der Installation können Sie Ihr Projekt überprüfen. Sie können auch versuchen, die gesamte Lösung zu analysieren. Klicken Sie dazu auf Erweiterungen → PVS-Studio → Prüfen → Lösung (Abbildung 2).

Abbildung 2. Überprüfen einer Lösung mit PVS-Studio.

Abbildung 2. Überprüfen einer Lösung mit PVS-Studio.

Wenn Sie Probleme beim Ausführen der Prüfung haben, lesen Sie den Abschnitt " PVS-Studio: Fehlerbehebung " auf unserer Website. Dies sind keine dummen Hinweise wie "Stellen Sie sicher, dass der Stecker in die Steckdose gesteckt ist". In diesem Abschnitt werden typische Probleme beschrieben, die unsere Benutzer gemeldet haben, und Möglichkeiten, sie zu lösen.

Umgang mit der Warnliste


Nach Abschluss der Prüfung werden die Diagnosemeldungen in einem speziellen Fenster angezeigt. Dieses Fenster enthält viele Elemente, die alle dazu dienen, die Liste so zu bearbeiten, dass Sie nur die Warnungen von Interesse anzeigen können. Zunächst könnte es jedoch etwas kompliziert aussehen.

Abbildung 3. Warnfenster. Klicken Sie auf das Bild, um es zu vergrößern.

Abbildung 3. Warnfenster. Klicken Sie auf das Bild, um es zu vergrößern.

Die vollständige Übersicht über die Elemente des Fensters finden Sie in der Dokumentation . Jetzt konzentrieren wir uns nur auf die grundlegenden:

  1. Sicherheitsstufen der Warnungen. Der Screenshot oben zeigt die aktivierten mittleren und hohen Pegel. Das niedrige Niveau befasst sich mehr mit "Code-Gerüchen" und Warnungen, die leider dazu neigen, zu viele Fehlalarme zu erzeugen. Warum gibt es so viele Warnungen auf niedriger und mittlerer Ebene, aber so wenige Warnungen auf hoher Ebene? Die Antwort ist, dass die MISRA-Diagnose aktiviert wurde, die Regeln wie "Die Funktion sollte nur einen einzigen Austrittspunkt haben" enthält. Natürlich benötigen Sie diese Diagnose normalerweise nicht, daher sind sie standardmäßig deaktiviert. Hinweis: " Wie können Sie schnell interessante Warnungen des PVS-Studio-Analysators für C- und C ++ - Code überprüfen? ".
  2. Der Filter. Sie können die Nachrichten nach Code, CWE, Text, Projekt oder Datei filtern.
  3. Die Nummer der auslösenden Leitung. Einige Diagnosen können sich auf mehrere Zeilen beziehen: Solche Warnungen haben ein Auslassungszeichen neben der Zeilennummer.

SAST


PVS-Studio ist ein Tool für statische Anwendungssicherheitstests (SAST), mit dem potenzielle Schwachstellen im Quellcode erkannt und die entsprechende Schwachstellenkennung gemäß einer bestimmten Klassifizierung angezeigt werden kann.

PVS-Studio unterstützt die folgenden Schwachstellenklassifizierungen:

  1. CWE
  2. SEI CERT
  3. Misra

Um CWE-Codes zu aktivieren, öffnen Sie das Dropdown-Menü des Analysefensters und aktivieren Sie dann Spalten anzeigen> CWE

Abbildung 4. Aktivieren von CWE-Codes über das Dropdown-Menü.

Abbildung 4. Aktivieren von CWE-Codes über das Dropdown-Menü.

Eine andere Möglichkeit hierfür ist Erweiterungen> PVS-Studio> CWE-Codes im Ausgabefenster in der Menüleiste von Visual Studio anzeigen

Abbildung 5. Untermenü PVS-Studio im Menü Erweiterungen.

Abbildung 5. Untermenü PVS-Studio im Menü Erweiterungen.

Im Gegensatz dazu ist die MISRA-Diagnose im Optionsfenster aktiviert:

Abbildung 6. Liste der feststellbaren Schwachstellen.

Abbildung 6. Liste der feststellbaren Schwachstellen.

Mehr über diese Klassifikationen erfahren Sie hier .

Überprüfen von Projekten über die Befehlszeile


PVS-Studio_Cmd.exe ist ein Dienstprogramm zum Überprüfen von C ++ .vcxproj-Projekten und -Lösungen über die Befehlszeile. Dies kann hilfreich sein, wenn Sie den Analyseprozess automatisieren möchten. Das Programm befindet sich standardmäßig im Installationsverzeichnis "C: \ Programme (x86) \ PVS-Studio".

Das Dienstprogramm verfügt über mehrere Parameter , Sie benötigen jedoch nur drei, um loszulegen:
  • --target: Die Datei des zu überprüfenden Projekts oder der zu überprüfenden Lösung.
  • --output: Die Plog-Datei, in der der Analysebericht gespeichert werden soll.
  • --progress: Verfolgen Sie den Analysefortschritt.

Folgendes sehen Sie nach dem Start der Prüfung:

Abbildung 7. Ausgabe des Dienstprogramms PVS-Studio_Cmd.exe

Abbildung 7. Ausgabe des Dienstprogramms PVS-Studio_Cmd.exe

Nach Abschluss der Prüfung wird in dem in den Startparametern angegebenen Verzeichnis eine Plog-Datei mit dem Analysebericht erstellt. Dieser Bericht kann mit dem Dienstprogramm PlogConverter.exe in andere Formate konvertiert werden. Wenn Sie den Bericht in der IDE öffnen möchten, doppelklicken Sie einfach im Windows Explorer auf die Plog-Datei.

Die Berichtsdatei kann auch über das Menü Erweiterungen geöffnet werden: Erweiterungen> PVS-Studio> Öffnen / Speichern> Analysebericht öffnen ...

Abbildung 8. Öffnen eines Analyseberichts über das Plugin-Menü.

Abbildung 8. Öffnen eines Analyseberichts über das Plugin-Menü.

Weitere Informationen zum Dienstprogramm und seinen Parametern finden Sie in der Dokumentation .

Unterdrückung von Fehlalarmen


Der Analysator bietet eine Vielzahl von Mitteln zur Unterdrückung von Fehlalarmen. Sie werden in den folgenden Abschnitten ausführlich beschrieben:


Beispielwarnung


Schauen wir uns ein Beispiel für eine vom Analysegerät ausgegebene Warnung an. Das folgende Codefragment stammt aus dem ReactOS-Projekt:

VOID NTAPI AtapiDmaInit(....) { .... ULONG treg = 0x54 + (dev < 3) ? (dev << 1) : 7; .... } 

Diagnosemeldung von PVS-Studio: V502 Möglicherweise funktioniert der Operator '?:' Anders als erwartet. Der Operator '?:' Hat eine niedrigere Priorität als der Operator '+'. uniata id_dma.cpp 1610

Der Ausdruck 0x54 + (dev <3) wird immer als wahr ausgewertet: Die Nicht-Null-Konstante 0x54 wird zuerst zum Ergebnis des Ausdrucks (dev <3) addiert, der entweder zu 0 oder 1 ausgewertet werden kann, und erst dann ist der resultierender Wert verglichen mit Null.

So sieht die richtige Version aus:

 VOID NTAPI AtapiDmaInit(....) { .... ULONG treg = 0x54 + ((dev < 3) ? (dev << 1) : 7); .... } 

Wir haben das Problem gelöst, indem wir die Operation '?:' In Klammern gesetzt haben, sodass das Ergebnis nun vom Ergebnis des Ausdrucks (dev <3) abhängt.

Fazit


Dies war eine kurze Einführung in die ersten Schritte mit PVS-Studio für Visual C ++. Es werden natürlich nicht alle Aspekte behandelt. Willkommen in unserem Blog , in dem wir ausführlich erklären, wie Sie mit dem Analysegerät arbeiten, und in der Dokumentation eine vollständige Beschreibung der Diagnosemeldungen und der Einstellungen des Tools finden.

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


All Articles