Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>

BLOG

Erste Schritte mit der Visual Studio-Codeerweiterung für die statische C / C ++ - Analyse

Erste Schritte mit der Visual Studio-Codeerweiterung für die statische C / C ++ - Analyse Lesezeit: 6 Minuten

In diesem Blog-Beitrag werde ich Ihnen einige Tipps zur Konfiguration und Verwendung unserer brandneuen statischen Analyseerweiterung für C / C ++ - Tests für den Visual Studio-Code-Editor geben.

Die Popularität des Visual Studio Code (VS Code) -Editors nimmt rasant zu. Spätestens Jährliche Entwicklerumfrage zum StapelüberlaufVS Code dominierte die Entwicklungsumgebungen und Tools Kategorie.

Es ist schnell, einfach, anpassbar, erweiterbar und läuft auf den drei führenden Entwicklungsplattformen: Windows, Linux und Mac. Seine Popularität ist nicht auf die Teams beschränkt, die mit JavaScript oder TypeScript entwickeln. Wir sehen es oft für die Entwicklung sicherheitskritischer C / C ++ - Software.

VS Code wird von einem riesigen Ökosystem von Erweiterungen unterstützt, die auf dem Markt verfügbar sind. Es gibt jedoch eine begrenzte Anzahl von Erweiterungen für die statische Analyse von C / C ++.

Bis zum 2020.1 Version des Parasoft C / C ++ - Tests Im April gab es nichts, was Ihnen helfen könnte, die Codierungsstandards MISRA, CERT und AUTOSAR C ++ einzuhalten, ohne den Editor verlassen zu müssen, um die Ergebnisse zu überprüfen. Ich meine, die vollständige Unterstützung von Standards, Clang-Tidy, ist cool, deckt aber nur einen Bruchteil dieser Standards ab.

Wir haben uns entschlossen, diese Lücke zu schließen und eine Erweiterung für diesen großartigen Editor bereitzustellen, um den Code, den Sie gerade geschrieben haben, anhand Ihres bevorzugten Codierungsstandards zu überprüfen, die Ergebnisse zu überprüfen und sie zu korrigieren oder zu unterdrücken - alles innerhalb des VS-Codes.

In diesem Beitrag konzentriere ich mich auf die statische Analyse für C / C ++, aber wir unterstützen auch C # mit der Erweiterung für statische Analyse für Parasoft dotTEST.

Erste Schritte mit dem C / C ++ - Test für VS-Code

Der einfachste Weg, um mit der statischen Analyseerweiterung Parasoft für den Visual Studio Code-Editor zu arbeiten, ist über die Microsoft Marketplace.

Starten Sie VS Code und gehen Sie zu Erweiterungen (Strg + Umschalt + X). Geben Sie im Suchfeld "C ++ test" ein und installieren Sie die Erweiterung.

Nach der Installation werden Sie von der Erweiterung mit der folgenden Meldung begrüßt:

Die Nachricht informiert Sie darüber, dass Sie die statische Analyse mit der VS Code-Erweiterung ausführen müssen Laden Sie den C / C ++ - Teststandard herunterDies ist die statische Analyse-Engine für die Befehlszeile, die von der Visual Studio Code-Erweiterung des C / C ++ - Tests verwendet wird.

Nach dem Herunterladen der C / C ++ Test Standard Distribution einfach entpacke es in ein beliebiges Verzeichnis Sie mögen und installieren die Testlizenz (oder Volllizenz). Ihre Lizenz muss die Befehlszeilenfunktion enthalten. Sie können die Lizenz installieren, indem Sie die Datei cpptestcli.properties im Hauptverzeichnis der Distribution bearbeiten oder die Datei cpptestcli.properties in Ihrem Home-Verzeichnis ablegen und die Lizenzinformationen dort ablegen.

Lassen Sie uns für unser Experiment hier Verwenden Sie das Timer-Beispielprojekt das wird mit C / C ++ Test ausgeliefert. Wechseln Sie im VS-Code zum Explorer und verwenden Sie "Ordner zum Arbeitsbereich hinzufügen ...", um den hinzuzufügen / examples / Timer-Ordner zu Ihrem Arbeitsbereich.

So führen Sie die einfache Konfiguration durch Klicken Sie in der Statusleiste auf den Schnellstart für C / C ++ - Tests:

Sie sehen diese Konfigurationsoptionen:

Stellen Sie sie wie folgt ein:

  • Wählen Sie die C / C ++ - Testinstallation aus: Zeigen Sie auf die Stelle, an der Sie den C / C ++ - Teststandard entpackt haben.
  • Wählen Sie die Compilerkonfiguration: Wählen Sie den Compiler aus, der dem am nächsten kommt, was Sie für Ihr Projekt verwenden, z. B. "GNU GCC 9.x (x86_64)", wenn Sie GCC 9.2 verwenden.
  • Wählen Sie die Testkonfiguration: Definiert, welche statischen Analyseprüfer zum Scannen Ihres Projekts verwendet werden. Bleiben wir bei der Standardeinstellung.

Für Ihre realen Projekte müssen Sie möglicherweise noch eine Einstellung konfigurieren, um die statische Analyse zu verwenden. Wir werden später darauf zurückkommen. Vorerst mit diesen Einstellungen gemacht, Wählen Sie den Timer-Ordner im Explorer.

Aus dem Kontextmenü Wählen Sie "C / C ++ - Test: Ausgewählte Datei (en) analysieren ...".. Das OUTPUT-Bedienfeld zeigt Informationen zu den nachfolgenden Schritten der statischen Analyse an.

Sobald die Analyse abgeschlossen ist, werden im PROBLEMS-Bereich alle von der statischen Analyse gemeldeten Ergebnisse angezeigt. Es sollte wie folgt aussehen:

Sie können nur dann Analysieren Sie die Ergebnisse Klicken Sie auf die Zeilen im Bedienfeld PROBLEME. Wenn Sie einen Befund auswählen, führt Sie die C / C ++ - Testerweiterung zum Quellcode, in dem Sie sehen können, warum das Problem gemeldet wird.

Wenn der Grund nicht klar ist, Klicken Sie im PROBLEMS-Bereich mit der rechten Maustaste auf den Befund und Wählen Sie „Dokumentation anzeigen für ”. Es zeigt Ihnen die detaillierte Beschreibung.

Wenn Sie den Befund lieber ignorieren möchten, Klicken Sie mit der rechten Maustaste und wählen Sie „Verstoß gegen ”. Durch diesen Vorgang wird Ihrer Quelldatei ein spezieller Kommentar hinzugefügt, der den Analysator davon abhält, diesen Befund in Zukunft zu melden.

Oder du kannst “Verletzung von entfernen ” aus der Sicht und nicht in diesem Lauf stören. Diese Menüoptionen sind im obigen Bild dargestellt.

Festlegen von Kompilierungsbefehlszeilen für die statische Analyse

Ich erwähnte, dass Sie für Ihre realen Projekte möglicherweise eine weitere Option konfigurieren müssen, um mit der statischen Analyse zu beginnen. Hier geht es um die Informationen erstellenInsbesondere Kompilierungsbefehlszeilen.

Die statische Analyse-Engine muss die Kompilierungsbefehlszeilen für jede zu analysierende Datei kennen. Abhängig davon, wie Ihr Projekt aufgebaut ist, können Sie verschiedene Strategien anwenden, um diese Informationen bereitzustellen.

Mal sehen, wie es in unserem Timer-Beispiel passiert ist.

Wechseln Sie zum OUTPUT-Bereich, der noch die Ausgabe unseres Analyselaufs enthalten sollte.

Scrollen Sie ganz nach oben. In der zweiten Zeile der Ausgabe sollte die Befehlszeile für C / C ++ - Teststandard angezeigt werden, die von der Erweiterung ausgeführt wurde. Es beginnt mit "cpptestcli". Der interessante Teil befindet sich am Ende dieser Befehlszeile.

In diesem Fall wurde die statische Analyse-Engine für C / C ++ - Tests angewiesen, den Build zu verfolgen, um die erforderlichen Informationen zu den Kompilierungsbefehlszeilen zu erhalten. Sie können diese Strategie auch auf andere Build-Systeme anwenden. Es funktioniert gut:

Cpptestcli führt den Build-Befehl aus, der nach der Option -trace angegeben wird. Die Build-Informationen werden automatisch gescannt und in der Datei cpptest.bdf gespeichert, die jetzt im Ordner „Timer“ sichtbar ist und als Eingabe für die statische Analyse verwendet wird.

Alles super, aber Was passiert, wenn ich die statische Analyse erneut ausführen möchte? Mit den Standardeinstellungen führt der C / C ++ - Test Ihren Build erneut aus. Keine gute Option für die realen Projekte.

So können Sie es ändern.

  • Öffnen Sie die Erweiterungseinstellungen.
  • Drücken Sie Strg + Umschalt + P.
  • Geben Sie "C / C ++ Test: Schnellstart" ein und wählen Sie "Einstellungen öffnen ...". (Oder verwenden Sie den C / C ++ - Test-Schnellstart in der Statusleiste.)

Sie sehen die hier gezeigten Erweiterungseinstellungen:

Die Konfiguration der Build-Informationen ist Teil der Befehlszeilenmustereinstellung. Im Einstellungsfeld Wählen Sie Timer (neben Benutzer und Arbeitsbereich) um die Einstellungen zu ändern Nur für den Timer-Ordner.

Gehen Sie zum BefehlszeilenmusterGehen Sie zum Ende und passen Sie das Muster an, um "-trace make clean all" durch "-input $ {workspaceFolder} /cpptest.bdf" zu ersetzen, wie unten gezeigt:

Mit dieser Einstellung führt der C / C ++ - Test bei jeder Ausführung der statischen Analyse Ihren Erstellungsprozess nicht erneut aus, sondern lädt einfach den Inhalt der Datei cpptest.bdf, die beim ersten Erstellen generiert wurde, und führt die Analyse viel schneller durch. Sie können mehr über das Erstellen von Datendateien erfahren .

Einstellung für CMake

Für diejenigen unter Ihnen, die CMake für Ihre Projekte verwenden, steht eine weitere Option zur Verfügung, um den Einrichtungsprozess zu vereinfachen. Der C / C ++ - Test kann die Datei compile_commands.json, die von CMake automatisch generiert werden kann, als Eingabe für die Analyse verwenden.

Konfigurieren Sie die Datei compile_commands.json Dateierzeugung für unser Timer-Beispiel in diesem Artikel.

Wenn du fertig bist, Besuchen Sie das Einstellungsfeld noch einmal (Strg + Umschalt + P, geben Sie "C / C ++ - Test: Schnellstart" ein und wählen Sie "Einstellungen öffnen ..." oder verwenden Sie den Schnellstart "C / C ++ - Test" in der Statusleiste).

Gehen Sie zum Befehlszeilenmuster Feld und ändern Sie es wie unten gezeigt:

Das ist es! Sie können die vom CMake-Build automatisch generierte Datei verwenden und Ihre Einrichtung vereinfachen.

In der Erweiterung stehen einige weitere interessante Optionen und Befehle zur Verfügung, die Sie zum Erkunden einladen. Beispielsweise können Sie die statischen Analyseergebnisse aus der Datei importieren, die als Teil Ihrer CI / CD-Pipeline generiert wurde, und diese lokal überprüfen.

Ich hoffe, dieser Beitrag hilft Ihnen, wenn Sie Ihre Reise mit der C / C ++ - Testerweiterung für den Visual Studio Code-Editor beginnen.

„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.

Geschrieben von

Miroslaw Zielinski

Zu den Spezialitäten von Miroslaw, dem Produktmanager für die eingebetteten Testlösungen von Parasoft, gehören C / C ++, RTOS, statische Code-Analyse, Komponententests, Verwaltung der Softwarequalität für sicherheitskritische Anwendungen und Einhaltung der Sicherheitsstandards durch die Software.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.