Seien Sie am 30. April dabei: Vorstellung von Parasoft C/C++test CT für kontinuierliche Tests und Compliance-Exzellenz | Registrierung

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

Headshot von Miroslaw Zielinski, Direktor Produktmanagement bei Parasoft
2. Juni 2020
6 min lesen

Visual Studio Code ist eine beliebte IDE. Allerdings können Konfigurationsaufgaben großartige Entwickler aus den Socken hauen. Eine davon ist die Konfiguration der VS Code-Erweiterung für die C/C++-Statusanalyse. In diesem Beitrag erfahren Sie, wie Sie dies erreichen können.

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 Apps.

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 zur Veröffentlichung des Parasoft C/C++-Tests 2020.1 im April gab es nichts, was Ihnen helfen konnte, die C++-Codierungsstandards MISRA, CERT und AUTOSAR einzuhalten, ohne den Editor verlassen zu müssen, um die Ergebnisse zu überprüfen. Ich meine, die vollständige Standardunterstützung, 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.

Beginnen Sie Ihre Reise mit der C/C++test-Erweiterung für den Visual Studio Code-Editor.

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 Meldung informiert Sie darüber, dass Sie zum Ausführen der statischen Analyse mit der VS-Code-Erweiterung den C/C++test Standard herunterladen müssen. Hierbei handelt es sich um die statische Befehlszeilenanalyse-Engine, die vom C/C++test Visual Studio verwendet wird Codeerweiterung.

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:

Du kannst dich 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 hier.

Einstellung für CMake

Für die von euch, welche Verwenden Sie CMake für Ihre Projekte, steht eine weitere Option zur Verfügung, um den Einrichtungsprozess zu vereinfachen. C/C++test kann die Datei compile_commands.json verwenden, die automatisch von CMake als Eingabe für die Analyse generiert werden kann.

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.

Beginnen Sie Ihre Reise mit der C/C++test-Erweiterung für den Visual Studio Code-Editor.

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