Découvrez GoogleTest certifié TÜV avec Agentic AI pour les tests C/C++ !
Plus de détails »
Blog Parasoft
Visual Studio Code est un IDE populaire. Cependant, les tâches de configuration peuvent bouleverser les grands développeurs. L'une d'entre elles consiste à configurer l'extension VS Code pour l'analyse d'état C/C++. Consultez cet article pour découvrir un moyen éprouvé d'y parvenir.
Aller à la section
Dans cet article de blog, je vais partager quelques conseils avec vous sur la configuration et l'utilisation de notre toute nouvelle extension d'analyse statique de test C / C ++ pour l'éditeur Visual Studio Code.
La popularité de l'éditeur Visual Studio Code (VS Code) croît rapidement. Dans la dernière enquête annuelle de Stack Overflow auprès des développeurs , VS Code a dominé la catégorie « Environnements et outils de développement » .
Il est rapide, simple, personnalisable, extensible et fonctionne sur les trois principales plates-formes de développement: Windows, Linux et Mac. Sa popularité ne se limite pas aux équipes développant avec JavaScript ou TypeScript. Nous le voyons souvent utilisé pour développer des logiciels C / C ++ critiques pour la sécurité.
VS Code est pris en charge par un vaste écosystème d'extensions disponibles sur le marché. Cependant, il existe un nombre limité d'extensions pour l'analyse statique C / C ++.
Avant la sortie de la version 2020.1 du test C/C++ de Parasoft en avril, aucun outil ne permettait de se conformer aux normes de codage C++ MISRA, CERT et AUTOSAR sans quitter l'éditeur pour vérifier les résultats. Certes, la prise en charge complète des normes par Clang-Tidy est intéressante, mais elle ne couvre qu'une partie de ces normes.
Nous avons décidé de combler cette lacune et de fournir une extension à cet excellent éditeur pour vous aider à vérifier le code que vous venez d'écrire par rapport à votre norme de codage préférée, à examiner les résultats et à les corriger ou les supprimer - le tout dans le code VS
Dans cet article, je me concentre sur l'analyse statique pour C / C ++, mais nous prenons également en charge C # avec l'extension d'analyse statique pour Parasoft dotTEST.
La manière la plus simple de se familiariser avec l'extension d'analyse statique Parasoft pour l'éditeur Visual Studio Code est via le Microsoft Marketplace.
Lancez VS Code et accédez aux Extensions (Ctrl + Maj + X). Dans le champ de recherche, saisissez « C++test » et installez l’extension.
Après l'installation, l'extension vous accueillera avec le message suivant:
Le message informe que pour exécuter l'analyse statique avec l'extension VS Code, vous devez télécharger le standard de test C/C++, qui est le moteur d'analyse statique en ligne de commande utilisé par Visual Studio de test C/C++. Extension de code.
Après avoir téléchargé la distribution C/C++test Standard, décompressez-la dans le répertoire de votre choix et installez la licence d'essai (ou complète). Votre licence doit inclure l'accès à la ligne de commande. Vous pouvez l'installer en modifiant le fichier cpptestcli.properties situé dans le répertoire principal de la distribution ou en plaçant ce fichier dans votre répertoire personnel et en y ajoutant les informations de licence.
Pour notre expérience, utilisons le projet d'exemple Timer fourni avec C/C++test. Dans VS Code, basculez vers l'Explorateur et utilisez « Ajouter un dossier à l'espace de travail… » pour ajouter le dossier <répertoire d'installation de C/C++test>/examples/Timer à votre espace de travail.
Pour effectuer la configuration simple de l'extension, cliquez sur le démarrage rapide C/C++test dans la barre d'état :
Vous verrez ces options de configuration:
Définissez-les comme suit:
Pour vos projets réels, il vous faudra peut-être configurer un paramètre supplémentaire pour activer l'analyse statique. Nous y reviendrons plus tard. En attendant, une fois ces paramètres définis, sélectionnez le dossier « Timer » dans l'Explorateur Windows.
Dans le menu contextuel, sélectionnez « C/C++test : Analyser les fichiers sélectionnés… » . Le panneau de sortie affichera alors les informations relatives aux étapes suivantes de l’analyse statique.
Une fois l'analyse terminée, le panneau PROBLÈMES affichera tous les résultats rapportés par l'analyse statique. Cela devrait ressembler à ci-dessous:
Vous pouvez analyser les résultats en cliquant sur les lignes correspondantes dans le panneau PROBLÈMES. Lorsque vous sélectionnez un résultat, l'extension C/C++test vous redirige vers le code source où vous pouvez voir l'origine du problème.
Si la raison n'est pas claire, cliquez avec le bouton droit sur le résultat dans le panneau PROBLÈMES et choisissez « Afficher la documentation pour <règle d'analyse statique> » . La description détaillée s'affichera.
Si vous préférez ignorer ce résultat, cliquez avec le bouton droit et choisissez « Supprimer la violation de <règle> » . Cette opération ajoutera un commentaire spécial à votre fichier source, empêchant ainsi l'analyseur de signaler ce résultat à l'avenir.
Vous pouvez aussi masquer la violation de la règle et ne plus vous en préoccuper pour cette exécution. Ces options de menu sont illustrées dans l'image ci-dessus.
J'ai mentionné que pour vos projets concrets, vous devrez peut-être configurer une option supplémentaire pour commencer l'analyse statique. Il s'agit des informations de compilation , et plus précisément des lignes de commande de compilation.
Le moteur d'analyse statique doit connaître les lignes de commande de compilation pour chaque fichier à analyser. Selon la façon dont votre projet est construit, vous pouvez appliquer différentes stratégies pour fournir ces informations.
Voyons comment cela s'est passé pour notre exemple Timer.
Basculez vers le panneau OUTPUT, qui devrait toujours contenir la sortie de notre analyse.
Faites défiler jusqu'en haut. Sur la deuxième ligne du résultat, vous devriez voir la ligne de commande de C/C++test Standard exécutée par l'extension. Elle commence par « cpptestcli ». La partie intéressante se trouve à la fin de cette ligne de commande.
Dans ce cas, le moteur d'analyse statique de test C/C++ a reçu l'instruction de « tracer » la compilation pour obtenir les informations nécessaires sur les lignes de commande de compilation. Cette stratégie peut également être appliquée à d'autres systèmes de compilation. Elle fonctionne parfaitement :
Cpptestcli exécute la commande de construction spécifiée après l'option -trace. Les informations de construction sont automatiquement analysées et enregistrées dans le fichier cpptest.bdf, désormais visible dans le dossier « Timer » et utilisé comme entrée pour l'analyse statique.
Tout va bien, mais que se passe-t-il si je veux relancer l'analyse statique ? Eh bien, avec les paramètres par défaut, C/C++test relancera la compilation. Ce n'est pas une solution idéale pour les projets en production.
Voici comment vous pouvez le changer.
Vous verrez les paramètres d'extension comme indiqué ici:
La configuration des informations de compilation fait partie des paramètres du modèle de ligne de commande. Dans le panneau des paramètres, sélectionnez Minuteur (à côté de Utilisateur et Espace de travail) pour modifier les paramètres uniquement pour le dossier Minuteur.
Accédez au modèle de ligne de commande , déplacez-vous jusqu'à la fin et personnalisez le modèle pour remplacer « -trace make clean all » par « -input ${workspaceFolder}/cpptest.bdf » comme indiqué ci-dessous :
Avec ce paramètre, lors de l'exécution de l'analyse statique, C/C++test ne relancera pas le processus de compilation, mais chargera simplement le contenu du fichier cpptest.bdf généré lors de la première compilation et effectuera l'analyse beaucoup plus rapidement. Pour en savoir plus sur les fichiers de données de compilation, cliquez ici.
Pour ceux qui utilisent CMake dans leurs projets , une option supplémentaire permet de simplifier la configuration. C/C++test peut analyser le fichier compile_commands.json, généré automatiquement par CMake.
Configurez la génération des fichiers compile_commands.json pour notre exemple de minuteur présenté dans cet article.
Une fois terminé, accédez une dernière fois au panneau des paramètres (Ctrl+Maj+P, tapez « C/C++test : Démarrage rapide » et sélectionnez « Ouvrir les paramètres… » ou utilisez le démarrage rapide « C/C++test » dans la barre d’état).
Accédez au champ Modèle de ligne de commande et modifiez-le comme indiqué ci-dessous :
C'est tout! Vous pouvez utiliser le fichier généré automatiquement par la build CMake et simplifier votre configuration.
Il y a quelques autres options et commandes intéressantes disponibles dans l'extension, que je vous invite à explorer. Par exemple, vous pouvez importer les résultats de l'analyse statique à partir du fichier généré dans le cadre de votre pipeline CI / CD et les examiner localement.
« MISRA », « MISRA C » et le logo triangulaire sont des marques déposées de The MISRA Consortium Limited. © The MISRA Consortium Limited, 2021. Tous droits réservés.