Holen Sie sich die UMFANGREICHSTE Abdeckung für die Einhaltung von MISRA C! Erfahren Sie mehr >>

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.

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:

  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.

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.

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

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.