Nehmen Sie am 19. September an unserem Webinar teil: KI-gestütztes API-Testing: Ein No-Code-Ansatz zum Testen | Registrierung
Zum Abschnitt springen
Verwenden des Parasoft C / C ++ - Tests mit CMake für die statische Analyse
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
Zum Abschnitt springen
CMake ist eines der beliebtesten Tools zum Erstellen, Testen und Packen von Software. Parasoft C/C++test optimiert die Integration mit CMake-basierten Projekten durch Vereinfachung der Bauverwaltung Verfahren. Je größer das Projekt, desto größer die Wirkung.
Das Parasoft-Team entwickelte diese Erweiterungen während eines Rollouts unserer Testlösung für einen großen, bekannten Automobilhersteller.
Unser Ziel war es, 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 Blogbeitrag erkläre ich, wie man integriert C / C ++ - Test statische Analysefunktionen in CMake-basierte Projekte integrieren. Sie können dasselbe für Unit-Tests tun.
Integration der statischen Analyse in CMake-basierte Projekte
Um eine statische Codeanalyse durchzuführen, benötigen Tools wie C/C++test Informationen über den Projektbuild. Im Allgemeinen sind lediglich Kompilierungsbefehlszeilen erforderlich, um die für die Analyse vorgesehenen Dateien aufzurufen.
Bei C/C++test gibt es verschiedene Möglichkeiten zur Integration in den Build-Prozess. Unterschiedliche Build-Systeme erfordern möglicherweise unterschiedliche Ansätze. Bei CMake-basierten Projekten stehen großartige Optionen zur Verfügung, um statische Analysen mühelos durchzuführen und nur minimale Änderungen am Workflow zu erfordern. Es sorgt für eine reibungslose Integration mit C/C++test.
CMake-Skripte können einfach konfiguriert werden, um Informationen zur Kompilierzeit als JSON-Datei zu generieren. Normalerweise erhalten Sie eine JSON-Datei pro Build. Diese JSON-Datei enthält alles, was der statische Analysator zum Durchführen des Code-Scans benötigt. Die JSON-Datei mit Kompilierungsbefehlszeilen wird dann zum Zeitpunkt der Build-Skript-Generierung erstellt. C/C++test 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.
Fertig! :)
Ein Beispiel für eine statische Analyse von CMake-basierten Projekten
Sehen wir uns ein Beispiel für die Ausführung einer statischen Analyse in CMake-basierten Projekten an. Falls Sie dies noch nicht getan haben, Installieren Sie die Standardedition von C++test.
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 Continuous Integration (CI) oder lokal auf dem Entwickler-Desktop verwendet werden. Die einzige möglicherweise erforderliche Änderung 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.