Rejoignez-nous le 30 avril : dévoilement de Parasoft C/C++test CT pour l'excellence en matière de tests continus et de conformité | En savoir plus

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

Portrait de Miroslaw Zielinski, directeur de la gestion des produits chez Parasoft
10 avril 2023
4 min lire

Vous avez peut-être utilisé CMake dans votre analyse statique. Mais avez-vous essayé d'utiliser le test Parasoft C/C++ avec CMake ? Voici une ventilation de la façon d'utiliser C/C++test pour exécuter une analyse statique sur des projets basés sur CMake.

CMake est l'un des outils les plus populaires pour créer, tester et empaqueter des logiciels. Le test Parasoft C/C++ rationalise le intégration avec des projets basés sur CMake en simplifiant le gestion de la construction processus. Plus le projet est grand, plus l'impact est important.

L'équipe Parasoft a développé ces améliorations lors du déploiement de notre solution de test pour un grand constructeur automobile bien connu.

Notre objectif était d'introduire des capacités d'analyse statique et de tests unitaires dans des projets vastes et complexes basés sur le 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, j'expliquerai comment intégrer les capacités d'analyse statique de test Parasoft C/C++ dans des projets basés sur CMake. Vous pouvez faire la même chose 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 Parasoft C/C++test, il existe différentes manières de s'intégrer dans le processus de construction. 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 disponibles pour effectuer une analyse statique sans effort et nécessiter des modifications minimes du flux de travail. Cela permet une intégration fluide avec C/C++test.

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 du code. Le fichier JSON avec les lignes de commande de compilation est alors créé au moment de la génération du script de construction. C/C++test 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'analyse statique sur des projets basés sur CMake. Si vous ne l'avez pas déjà fait, installer l'édition standard de C++test.

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 l'intégration continue (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 à faire pour intégrer l'analyse statique dans les projets basés sur CMake.

Découvrez comment intégrer l'analyse statique dans vos projets basés sur CMake.