Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

Utilisation du test Parasoft C / C ++ avec CMake pour l'analyse statique

Par Miroslaw Zielinski

29 April 2020

4  min lire

CMake est l'un des outils les plus populaires pour créer, tester et empaqueter des logiciels. Cela simplifie considérablement la gestion du processus de construction pour les projets de grande taille. La version de test Parasoft C / C ++ 2020.1 introduit un ensemble d'améliorations qui rationalisent l'intégration avec les projets basés sur CMake.

Nous avons développé ces améliorations lors du déploiement de notre solution de test pour l'un des constructeurs automobiles les plus importants et les plus connus.

Notre défi consistait à introduire des capacités d'analyse statique et de tests unitaires dans des projets vastes et complexes basés sur la plateforme AUTOSAR adaptative. Ces projets étaient composés de plusieurs bibliothèques statiques et dynamiques et de nombreux exécutables.

Dans cet article de blog, je vais vous expliquer comment intégrer les capacités d'analyse statique de test Parasoft C / C ++ dans des projets basés sur CMake. Restez à l'écoute pour mon prochain article où je vais vous expliquer comment faire de même pour les tests unitaires.

Intégration de l'analyse statique dans les projets basés sur CMake

Pour effectuer une analyse de code statique, des outils tels que le test Parasoft C / C ++ nécessitent des informations sur la génération du projet. En règle générale, tout ce qui est nécessaire, ce sont des lignes de commande de compilation pour appeler les fichiers destinés à l'analyse.

Avec le test Parasoft C / C ++, il existe différentes manières d'intégrer les builds. Différents systèmes de construction peuvent nécessiter des approches différentes. Avec les projets basés sur CMake, il existe d'excellentes options pour rendre l'analyse statique sans effort et nécessiter des modifications minimes du processus. Cela permet une intégration fluide avec le test C / C ++.

Les scripts CMake peuvent être facilement configurés pour générer des informations de compilation sous forme de fichier JSON. Vous obtenez généralement un fichier JSON par build. Ce fichier JSON contient tout ce dont l'analyseur statique a besoin pour effectuer l'analyse de code. Le fichier JSON avec les lignes de commande de compilation est ensuite créé au moment de la génération du script de construction. La version de test C / C ++ 2020.1 comprend ce format et peut l'utiliser directement comme entrée pour effectuer une analyse statique.

Comment exécuter une analyse statique sur des projets basés sur CMake

La procédure pour exécuter l'analyse statique sur des projets basés sur CMake comprend les étapes suivantes:

  1. Activez la génération du fichier JSON avec les commandes de compilation. Il s'agit d'une activité ponctuelle.
  2. Générez vos scripts de construction. Cela inclura la génération de fichier JSON compile-info.
  3. Exécutez une analyse statique en alimentant les informations de compilation du fichier JSON en tant qu'entrée de l'analyseur statique.

C'est tout!

Un exemple d'analyse statique sur des projets basés sur CMake

Passons en revue un exemple d'exécution d'une analyse statique sur des projets basés sur CMake. Si vous ne l'avez pas déjà fait, veuillez installer l'édition standard du test C ++ 2020.1

Suivez ces étapes

Après l'installation, allez dans le répertoire d'installation et dans le sous-dossier des exemples. Faites une copie de l'exemple Timer et entrez dans le répertoire Timer. (Ces étapes utilisent Linux comme plate-forme de développement.)

Vous devriez voir le contenu suivant:

Cet exemple est préparé pour être construit avec un makefile «statique» situé dans le répertoire principal ou en utilisant les scripts de construction générés par CMake.

Créez un dossier de construction dans le répertoire Timer à l'aide de cd. Appelez la génération de scripts de construction à l'aide de CMake.

Si nous listons le contenu du répertoire de construction après génération, nous verrons que le fichier compile_commands.json a été généré.

Pour l'exemple de projet suivant, la génération de fichiers JSON d'informations de compilation a déjà été activée.

Nous sommes maintenant prêts à exécuter l'analyse statique à l'aide du fichier compile_commands.json généré. Un grand avantage est que nous pouvons ajouter le fichier .json directement dans l'interface de ligne de commande du produit standard de test Parasoft C / C ++:

C'est tout. L'analyse statique est effectuée et les résultats sont renvoyés.

Cette approche d'intégration peut être utilisée pour CI ou localement sur le bureau du développeur. La seule modification qui pourrait être nécessaire est l'activation de la génération du fichier compile_command.json.

Comment activer le fichier de génération dans votre projet

Si vous n'avez pas activé la génération du fichier compile_command.json dans votre projet, vous pouvez le faire de deux manières.

Option 1

Définissez les options CMAKE_EXPORT_COMPILE_COMMANDS sur ON dans le fichier CMakeLists.txt.

Exemple

set (CMAKE_EXPORT_COMPILE_COMMANDS ON)

Option 2

Ajoutez-le à l'appel en ligne de commande de cmake lors de la génération des scripts de construction.

Exemple

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS = 1

C'est tout ce qu'il y a pour intégrer l'analyse statique dans les projets basés sur CMake. Ensuite, je couvrirai les tests unitaires avec CMake. Article de blog à venir.

Test de développement unifié pour les applications C et C ++

Par Miroslaw Zielinski

Chef de produit pour les solutions de test embarquées de Parasoft, les spécialités de Miroslaw comprennent le C / C ++, les RTOS, l'analyse de code statique, les tests unitaires, la gestion de la qualité des logiciels pour les applications critiques pour la sécurité et la conformité des logiciels aux normes de sécurité.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.