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

Verwenden des Parasoft C / C ++ - Tests mit CMake für die statische Analyse

Headshot von Miroslaw Zielinski, Direktor Produktmanagement bei Parasoft
10. April 2023
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.

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 Sie die statischen Analysefunktionen von Parasoft C/C++test in CMake-basierte Projekte integrieren. Sie können dasselbe für Unit-Tests tun.

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.

Bei Parasoft C/C++test gibt es verschiedene Möglichkeiten, sich in den Build-Prozess zu integrieren. Unterschiedliche Build-Systeme können unterschiedliche Ansätze erfordern. Bei CMake-basierten Projekten stehen großartige Optionen zur Verfügung, um die statische Analyse mühelos zu gestalten und nur minimale Änderungen am Arbeitsablauf 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:

  1. Aktivieren Sie die Generierung der JSON-Datei mit Kompilierungsbefehlen. Dies ist eine einmalige Aktivität.
  2. Generieren Sie Ihre Build-Skripte. Dies umfasst die Generierung von JSON-Dateien mit Kompilierungsinformationen.
  3. 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.

Erfahren Sie, wie Sie die statische Analyse in Ihre CMake-basierten Projekte integrieren.