Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>
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.
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.
Das Verfahren zum Ausführen der statischen Analyse für CMake-basierte Projekte umfasst die folgenden Schritte:
Das ist es!
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
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.
Wenn Sie die Generierung der Datei compile_command.json in Ihrem Projekt nicht aktiviert haben, können Sie dies auf zwei Arten tun.
Setzen Sie die Optionen CMAKE_EXPORT_COMPILE_COMMANDS in der Datei CMakeLists.txt auf ON.
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
Fügen Sie es dem Befehlszeilenaufruf des cmake hinzu, wenn Sie die Build-Skripte generieren.
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS = 1
Das ist alles, was Sie brauchen, um statische Analysen in CMake-basierte Projekte zu integrieren. Als nächstes werde ich Unit-Tests mit CMake behandeln. Blogpost kommt bald.
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.