Logo Parasoft
Icône blanche représentant un monde intégré

Nous sommes nominés pour le prix Embedded Award 2026 dans la catégorie Outils et nous serions ravis de recevoir votre soutien ! Votez pour C/C++test CT >>

Blog Parasoft

Prise en main de l'extension de code Visual Studio pour l'analyse statique C / C ++

Portrait de Miroslaw Zielinski, directeur de la gestion des produits
By Miroslaw Zielinski Le 2 juin 2020 6 min de lecture
Le 2 juin 2020 | 6 min de lecture
By Miroslaw Zielinski
Premiers pas avec l'extension Visual Studio Code pour l'analyse statique C/C++ avec image d'un ordinateur avec le code source à droite

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.

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) augmente à un rythme rapide. Dans le dernier Enquête annuelle sur les développeurs Stack Overflow, VS Code a dominé le Environnements et outils de développement catégorie.

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 Parasoft C/C++ en avril, il n'existait aucun outil permettant de se conformer aux normes MISRA, CERT et AUTOSAR Respecter les normes de codage C++ sans quitter l'éditeur pour vérifier le résultat. Certes, la prise en charge complète des normes par Clang-Tidy est intéressante, mais elle ne couvre qu'une partie d'entre elles.

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.

Commencez votre parcours avec l'extension de test C/C++ pour l'éditeur de code Visual Studio.
Regarder le webinaire à la demande

Comment démarrer avec le test C / C ++ pour VS Code

Le moyen le plus simple de démarrer avec l'extension d'analyse statique Parasoft pour l'éditeur Visual Studio Code consiste à utiliser le Marché Microsoft.

Démarrez 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:

Message de l'extension de test C/C++ dans VS Code

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 standard de test C / C ++ simplement décompressez-le dans n'importe quel répertoire vous aimez et installez la licence d'essai (ou complète). Votre licence doit contenir la fonction de ligne de commande. Vous pouvez installer la licence en éditant le fichier cpptestcli.properties situé dans le répertoire principal de la distribution ou placer le fichier cpptestcli.properties dans votre répertoire personnel et y placer les informations de licence.

Pour notre expérience ici, nous allons utiliser l'exemple de projet Timer fourni avec le test C/C++. Dans VS Code, accédez à l'Explorateur et utilisez « Ajouter un dossier à l'espace de travail… » pour ajouter le Dossier /examples/Timer dans votre espace de travail.

Pour effectuer la configuration simple de l'extension, cliquez sur le démarrage rapide du test C / C ++ dans la barre d'état:

Capture d'écran du démarrage rapide du test C/C++ dans VS Code.

Vous verrez ces options de configuration:

Exemples de configurations de test C/C++ dans VS Code

Définissez-les comme suit:

  • Sélectionnez l'installation de test C / C ++: Pointez sur l'endroit où vous avez décompressé la norme de test C / C ++.
  • Sélectionnez la configuration du compilateur: Sélectionnez le compilateur le plus proche de celui que vous utilisez pour votre projet, par exemple « GNU GCC 9.x (x86_64) » si vous utilisez GCC 9.2.
  • Sélectionnez la configuration de test: Définit les vérificateurs d'analyse statique qui seront utilisés pour analyser votre projet. Restons avec la valeur par défaut.

Pour vos projets réels, vous devrez peut-être configurer un paramètre supplémentaire pour commencer à utiliser l'analyse statique. Nous y reviendrons plus tard. Pour l'instant, avec ces paramètres définis, sélectionnez le dossier Timer dans l'Explorateur.

Depuis le menu contextuel, sélectionnez « Test C/C++ : analyser le(s) fichier(s) sélectionné(s)… ». Le panneau OUTPUT commencera à afficher les informations sur les é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:

Capture d'écran de l'extension de test C/C++ dans VS Code

Vous pouvez analyser les résultats en cliquant sur les lignes du panneau PROBLEMES. Lorsque vous sélectionnez une constatation, l'extension de test C / C ++ vous amène au code source où vous pouvez voir pourquoi le problème est signalé.

Si la raison n'est pas claire, cliquez avec le bouton droit de la souris sur la constatation dans le panneau PROBLÈMES et choisissez « Afficher la documentation pour ". Il vous montrera la description détaillée.

Si vous préférez ignorer la découverte, faites un clic droit et choisissez « Supprimer la violation de ". Cette opération ajoutera un commentaire spécial à votre fichier source, ce qui empêchera l'analyseur de signaler cette découverte à l'avenir.

Ou tu peux "Supprimer la violation de " de la vue et ne vous inquiétez pas à ce sujet dans cette course. Ces options de menu sont présentées dans l'image ci-dessus.

Définition des lignes de commande de compilation pour l'analyse statique

J'ai mentionné que pour vos projets réels, vous devrez peut-être configurer une option supplémentaire pour commencer à travailler avec l'analyse statique. Il s'agit de la construire des informations, 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.

Capture d'écran du panneau de sortie dans VS Code après l'exécution de l'analyse statique via l'extension de test C/C++

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 souhaite réexécuter l'analyse statique? Eh bien, avec les paramètres par défaut, le test C / C ++ réexécutera votre build. Pas une bonne option pour les vrais projets.

Voici comment vous pouvez le changer.

  • Ouvrez les paramètres de l'extension.
  • Appuyez sur Ctr + Maj + P.
  • Saisissez « C/C++test : Démarrage rapide » et sélectionnez « Ouvrir les paramètres… ». (Ou utilisez le démarrage rapide de C/C++test dans la barre d'état.)

Vous verrez les paramètres d'extension comme indiqué ici:

Paramètres d'extension de test C/C++ dans VS Code

La configuration des informations de construction fait partie du paramètre de modèle de ligne de commande. Dans le panneau des paramètres, sélectionnez Minuterie (à côté de l'utilisateur et de l'espace de travail) pour modifier les paramètres uniquement pour le dossier Timer.

Accédez au modèle de ligne de commande, passez à la fin et personnalisez le modèle pour remplacer « -trace make clean all » par « -input ${workspaceFolder}/cpptest.bdf » comme indiqué ci-dessous :

Capture d'écran des paramètres du modèle de ligne de commande dans le test C/C++ dans VS Code IDE

Avec ce paramètre, chaque fois que vous exécutez l'analyse statique, le test C / C ++ ne réexécutera pas votre processus de génération, mais chargera simplement le contenu du cpptest.bdf qui a été généré lors de la première génération et effectuera l'analyse beaucoup plus rapidement. Vous pouvez en savoir plus sur les fichiers de données de construction ici.

Réglage pour CMake

Pour ceux qui utilisez CMake pour vos projets, une autre option est disponible pour simplifier le processus de configuration. C/C++test peut prendre le fichier compile_commands.json qui peut être généré automatiquement par CMake comme entrée pour l'analyse.

Configurez le compile_commands.json génération de fichiers pour notre exemple Timer dans cet article.

Quand tu as fini, visitez le panneau des paramètres une fois de plus (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 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.

Commencez votre parcours avec l'extension de test C/C++ pour l'éditeur de code Visual Studio.
Regarder le webinaire à la demande

« 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.