Verwenden des Parasoft C / C ++ - Tests mit CMake für die statische Analyse
Von Miroslaw Zielinski
29. April 2020
4 min lesen
Möglicherweise haben Sie CMake in Ihrer statischen Analyse verwendet. Aber haben Sie versucht, den Parasoft C/C++-Test mit CMake zu verwenden? Hier ist eine Aufschlüsselung der Verwendung von C/C++test zum Ausführen einer statischen Analyse für CMake-basierte Projekte.
Zum Abschnitt springen
CMake ist eines der beliebtesten Tools zum Erstellen, Testen und Verpacken von Software. Es vereinfacht die Verwaltung des Erstellungsprozesses für umfangreiche Projekte erheblich. Mit der Version Parasoft C / C ++ Test 2020.1 wird eine Reihe von Verbesserungen eingeführt, die die Integration in CMake-basierte Projekte optimieren.
Diese Verbesserungen haben wir bei der Einführung unserer Testlösung für einen der größten und bekanntesten Automobilhersteller entwickelt.
Unsere Herausforderung bestand darin, statische Analyse- und Komponententestfunktionen in große und komplexe Projekte einzuführen, die auf dem basieren adaptive AUTOSAR-Plattform. Diese Projekte bestanden aus mehreren statischen und dynamischen Bibliotheken und vielen ausführbaren Dateien.
In diesem Blog-Beitrag werde ich erklären, wie Sie statische Analysefunktionen für Parasoft C / C ++ - Tests in CMake-basierte Projekte integrieren können. Seien Sie gespannt auf meinen nächsten Beitrag, in dem ich Ihnen erkläre, wie Sie dasselbe für Unit-Tests tun können.
Integration der statischen Analyse in CMake-basierte Projekte
Für die statische Codeanalyse benötigen Tools wie der Parasoft C / C ++ - Test Informationen zur Projekterstellung. Im Allgemeinen sind nur Kompilierungsbefehlszeilen erforderlich, um die für die Analyse vorgesehenen Dateien aufzurufen.
Mit dem Parasoft C / C ++ - Test gibt es verschiedene Möglichkeiten, sich in die Builds zu integrieren. Unterschiedliche Build-Systeme erfordern möglicherweise unterschiedliche Ansätze. Bei CMake-basierten Projekten stehen hervorragende Optionen zur Verfügung, um die statische Analyse mühelos zu gestalten und minimale Änderungen am Prozess zu erfordern. Dies ermöglicht eine reibungslose Integration in den C / C ++ - Test.
CMake-Skripte können einfach konfiguriert werden, um Informationen zur Kompilierungszeit als JSON-Datei zu generieren. Normalerweise erhalten Sie eine JSON-Datei pro Build. Diese JSON-Datei enthält alles, was der statische Analysator benötigt, um den Code-Scan durchzuführen. Die JSON-Datei mit Kompilierungsbefehlszeilen wird dann zum Zeitpunkt der Generierung des Erstellungsskripts erstellt. Die Version C / C ++ Test 2020.1 versteht dieses Format und kann es direkt als Eingabe für die Durchführung statischer Analysen verwenden.
Ausführen einer statischen Analyse für CMake-basierte Projekte
Das Verfahren zum Ausführen der statischen Analyse für CMake-basierte Projekte umfasst die folgenden Schritte:
- Aktivieren Sie die Generierung der JSON-Datei mit Kompilierungsbefehlen. Dies ist eine einmalige Aktivität.
- Generieren Sie Ihre Build-Skripte. Dies umfasst die Generierung von JSON-Dateien mit Kompilierungsinformationen.
- Führen Sie eine statische Analyse aus, indem Sie die Kompilierungsinformationen aus der JSON-Datei als Eingabe für den statischen Analysator eingeben.
Das ist es!
Ein Beispiel für eine statische Analyse von CMake-basierten Projekten
Lassen Sie uns ein Beispiel für die statische Analyse von CMake-basierten Projekten durchgehen. Wenn Sie dies noch nicht getan haben, installieren Sie bitte die Standardversion von C ++ Test 2020.1
Folge diesen Schritten
Wechseln Sie nach der Installation in das Installationsverzeichnis und in den Unterordner examples. Erstellen Sie eine Kopie des Timer-Beispiels und geben Sie das Timer-Verzeichnis ein. (Diese Schritte verwenden Linux als Entwicklungsplattform.)
Sie sollten den folgenden Inhalt sehen:
Dieses Beispiel kann mit einem "statischen" Makefile erstellt werden, das sich im Hauptverzeichnis befindet, oder mithilfe der von CMake generierten Build-Skripte.
Erstellen Sie einen Build-Ordner im Timer-Verzeichnis, indem Sie eine CD verwenden. Rufen Sie die Generierung der Build-Skripte mit CMake auf.
Wenn wir den Inhalt des Build-Verzeichnisses nach der Generierung auflisten, sehen wir, dass die Datei compile_commands.json generiert wurde.
Für das nächste Beispielprojekt wurde die Generierung von JSON-Dateien mit Kompilierungsinformationen bereits aktiviert.
Wir sind jetzt bereit, die statische Analyse mit der generierten Datei compile_commands.json auszuführen. Ein großer Vorteil ist, dass wir die .json-Datei direkt an die Befehlszeilenschnittstelle des Parasoft C / C ++ - Teststandardprodukts anhängen können:
Das ist es. Die statische Analyse wird durchgeführt und die Ergebnisse werden zurückgegeben.
Dieser Integrationsansatz kann für CI oder lokal auf dem Entwickler-Desktop verwendet werden. Die einzige Änderung, die möglicherweise erforderlich ist, besteht darin, die Generierung der Datei compile_command.json zu aktivieren.
So aktivieren Sie die Generierungsdatei in Ihrem Projekt
Wenn Sie die Generierung der Datei compile_command.json in Ihrem Projekt nicht aktiviert haben, können Sie dies auf zwei Arten tun.
Option 1
Setzen Sie die Optionen CMAKE_EXPORT_COMPILE_COMMANDS in der Datei CMakeLists.txt auf ON.
Beispiel
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
Option 2
Fügen Sie es dem Befehlszeilenaufruf des cmake hinzu, wenn Sie die Build-Skripte generieren.
Beispiel
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS = 1
Das ist alles, um die statische Analyse in CMake-basierte Projekte zu integrieren. Als nächstes schauen Sie sich unseren Blog an Erfahren Sie, wie Sie Parasoft C/C++test mit CMake für Komponententests verwenden.