Partage via


Démarrage rapide : analyse du code pour C/C++

Vous pouvez améliorer la qualité de votre application en exécutant l'analyse de code de manière régulière sur le code C ou C++. Code Analysis peut vous aider à trouver des problèmes courants et des violations de bonnes pratiques de programmation. Elle trouve aussi des défauts qui sont difficiles à découvrir avec les tests. Ses avertissements diffèrent des erreurs et des avertissements du compilateur : elle recherche des schémas de code spécifiques qui sont connus pour provoquer des problèmes. C’est-à-dire du code qui est valide, mais qui peut quand même créer des problèmes pour vous ou pour d’autres personnes qui l’utilisent.

Configurer des ensembles de règles pour un projet

  1. Dans l’Explorateur de solutions, ouvrez le menu contextuel du nom du projet et choisissez Propriétés.

  2. Éventuellement, dans les listes Configuration et Plateforme, choisissez la configuration de build et la plateforme cible.

  3. Pour exécuter Code Analysis chaque fois que le projet est généré avec la configuration sélectionnée, cochez la case Activer Code Analysis au moment de la génération. Vous pouvez également exécuter manuellement Code Analysis en ouvrant le menu Analyser, puis en choisissant Exécuter Code Analysis sur NomProjet ou Exécuter Code Analysis sur le fichier.

  4. Choisissez l’ensemble de règles que vous souhaitez utiliser ou créez un ensemble de règles personnalisé. Si vous utilisez LLVM/clang-cl, consultez Utilisation de Clang-Tidy dans Visual Studio pour configurer les options d’analyse Clang-Tidy.

Ensembles de règles standard C/C++

Visual Studio inclut ces ensembles de règles standard pour le code natif :

Ensemble de règles Description
Règles arithmétiques C++ Core Check Ces règles appliquent des vérifications liées aux opérations arithmétiques de C++ Core Guidelines.
Règles de limites C++ Core Check Ces règles appliquent le profil Limites de C++ Core Guidelines.
Règles de classe C++ Core Check Ces règles appliquent des vérifications liées aux classes de C++ Core Guidelines.
Règles de concurrence C++ Core Check Ces règles appliquent des vérifications liées à la concurrence de C++ Core Guidelines.
Règles de constante C++ Core Check Ces règles appliquent des vérifications liées aux constantes de C++ Core Guidelines.
Règles de déclaration C++ Core Check Ces règles appliquent des vérifications liées aux déclarations de C++ Core Guidelines.
Règles d’enum C++ Core Check Ces règles appliquent des vérifications liées aux enums de C++ Core Guidelines.
Règles expérimentales C++ Core Check Ces règles collectent certaines vérifications expérimentales. Elles devraient finir par être déplacées vers d’autres ensembles de règles ou supprimées complètement.
Règles de fonction C++ Core Check Ces règles appliquent des vérifications liées aux fonctions de C++ Core Guidelines.
Règles GSL C++ Core Check Ces règles appliquent des vérifications liées à la bibliothèque GSL (Guidelines Support Library) de C++ Core Guidelines.
Règles de durée de vie C++ Core Check Ces règles appliquent le profil Durée de vie de C++ Core Guidelines.
Règles de pointeur de propriétaire C++ Core Check Ces règles appliquent des vérifications de gestion de ressources liées aux owner<T> de C++ Core Guidelines.
Règles de pointeur brut C++ Core Check Ces règles appliquent des vérifications de gestion de ressources liées aux pointeurs bruts de C++ Core Guidelines.
Règles C++ Core Check Ces règles appliquent une partie des vérifications de C++ Core Guidelines. Utilisez cet ensemble de règles pour inclure toutes les règles C++ Core Check, à l’exception des ensembles de règles Enum et Experimental.
Règles de pointeur partagé C++ Core Check Ces règles appliquent des vérifications de gestion de ressources liées aux types avec une sémantique de pointeurs bruts de C++ Core Guidelines.
Règles STL C++ Core Check Ces règles appliquent des vérifications liées à la bibliothèque C++ standard de C++ Core Guidelines.
Règles de style C++ Core Check Ces règles appliquent des vérifications liées à l’utilisation d’expressions et d’instructions de C++ Core Guidelines.
Règles de type C++ Core Check Ces règles appliquent le profil Type de C++ Core Guidelines.
Règles de pointeur unique C++ Core Check Ces règles appliquent des vérifications de gestion de ressources liées aux types avec une sémantique de pointeurs uniques de C++ Core Guidelines.
Règles de vérification de la concurrence Ces règles appliquent un jeu de vérifications de modèle de concurrence Win32 en C++.
Règles de concurrence Ajoute des règles de concurrence de C++ Core Guidelines aux Règles de vérification de la concurrence.
Règles minimales natives Microsoft Ces règles se concentrent les problèmes les plus critiques rencontrés dans votre code natif, notamment les failles de sécurité potentielles et les plantages d’application. Nous vous recommandons d’inclure cet ensemble de règles dans tout ensemble de règles personnalisé que vous créez pour vos projets natifs.
Règles recommandées natives Microsoft Ces règles se concentrent sur les problèmes les plus critiques et les plus courants dans votre code natif. Ces problèmes incluent les failles de sécurité potentielles et les plantages d’application. Nous vous recommandons d’inclure cet ensemble de règles dans tout ensemble de règles personnalisé que vous créez pour vos projets natifs. Cet ensemble de règles est conçu pour être utilisé avec Visual Studio Professional et éditions supérieures. Il inclut toutes les règles qui font partie des Règles minimales natives Microsoft.

Visual Studio inclut ces ensembles de règles standard pour le code managé :

Ensemble de règles Description
Règles d’exactitude de base Microsoft Ces règles se concentrent sur les erreurs logiques et les fautes courantes qui sont faites lors de l’utilisation des API de framework. Incluez cet ensemble de règles pour étendre la liste des avertissements signalés par les règles minimales recommandées.
Règles d’instruction de conception de base Microsoft Ces règles se concentrent sur l’application de bonnes pratiques permettant de comprendre et d’utiliser plus facilement votre code. Incluez cet ensemble de règles si votre projet contient du code de bibliothèque ou si vous souhaitez appliquer des bonnes pratiques pour obtenir du code facilement maintenable.
Règles d’exactitude étendues Microsoft Ces règles viennent en complément des règles d’exactitude de base pour maximiser les erreurs d’utilisation de la logique et du framework signalées. L’accent est mis sur des scénarios spécifiques comme COM Interop et les applications mobiles. Envisagez d’inclure cet ensemble de règles si l’un de ces scénarios s’applique à votre projet ou si vous souhaitez trouver d’autres problèmes dans votre projet.
Règles d’instruction de conception étendues Microsoft Ces règles viennent en complément des règles d’instruction de conception de base pour maximiser l’utilisabilité et la maintenabilité des problèmes signalés. Une attention particulière est accordée aux recommandations de nommage. Envisagez d’inclure cet ensemble de règles si votre projet contient du code de bibliothèque, ou si vous souhaitez appliquer les standards les plus élevés pour écrire du code maintenable.
Règles de globalisation Microsoft Ces règles se concentrent sur les problèmes qui empêchent les données de votre application de s’afficher correctement lorsqu’elles sont utilisées dans différentes langues, paramètres régionaux et cultures. Incluez cet ensemble de règles si votre application est traduite et/ou mondialisée.
Règles minimales gérées Microsoft Ces règles se concentrent sur les problèmes les plus critiques dans votre code pour lequel Code Analysis est le plus exact. Ces règles ne sont pas nombreuses et sont destinées uniquement à s’exécuter dans des éditions Visual Studio limitées. Utilisez MinimumRecommendedRules.ruleset avec d’autres éditions de Visual Studio.
Règles recommandées gérées Microsoft Ces règles se concentrent sur les problèmes les plus critiques dans votre code. Ces problèmes comprennent des failles de sécurité potentielles, des plantages d’application et d’autres erreurs de logique et de conception importantes. Nous vous recommandons d’inclure cet ensemble de règles dans tout ensemble de règles personnalisé que vous créez pour vos projets.
Règles minimales mixtes (C++/CLR) Microsoft Ces règles se concentrent sur les problèmes les plus critiques dans vos projets C++ qui prennent en charge le Common Language Runtime. Ces problèmes comprennent des failles de sécurité potentielles, des plantages d’application et d’autres erreurs de logique et de conception importantes. Nous vous recommandons d’inclure cet ensemble de règles dans n’importe quel ensemble de règles personnalisé que vous créez pour vos projets C++ qui prennent en charge le Common Language Runtime.
Règles recommandées mixtes (C++/CLR) Microsoft Ces règles se concentrent sur les problèmes les plus courants et les plus critiques dans vos projets C++ qui prennent en charge le Common Language Runtime. Ces problèmes comprennent des failles de sécurité potentielles, des plantages d’application et d’autres erreurs de logique et de conception importantes. Cet ensemble de règles est conçu pour être utilisé dans Visual Studio Professional et éditions supérieures.
Règles de sécurité Microsoft Cet ensemble de règles contient toutes les règles de sécurité Microsoft. Incluez cet ensemble de règles pour maximiser le nombre de problèmes de sécurité potentiels signalés.

Pour inclure chaque règle :

Ensemble de règles Description
Toutes les règles Microsoft Cet ensemble de règles contient toutes les règles. L’exécution de cet ensemble de règles peut entraîner un grand nombre d’avertissements signalés. Utilisez cet ensemble de règles pour obtenir une vue d’ensemble complète de tous les problèmes présents dans votre code. Il peut vous aider à déterminer quels ensembles de règles plus ciblés sont les plus appropriés pour être exécutés pour vos projets.

Exécuter l'analyse du code

Dans la page Code Analysis de la boîte de dialogue Propriétés du projet, vous pouvez configurer Code Analysis pour l’exécuter chaque fois que vous générez votre projet. Vous pouvez également exécuter l'analyse du code manuellement.

Pour exécuter l'analyse du code sur une solution :

  • Dans le menu Générer, choisissez Exécuter l’analyse du code sur la solution.

Pour exécuter l'analyse du code sur un projet :

  1. Dans l’Explorateur de solutions, sélectionnez le nom du projet.

  2. Dans le menu Générer, choisissez Exécuter Code Analysis sur Nom du projet.

Pour exécuter Code Analysis sur un fichier :

  1. Dans l’Explorateur de solutions, sélectionnez le nom du fichier.

  2. Dans le menu Générer, choisissez Exécuter Code Analysis sur le fichier ou appuyez sur Ctrl+Maj+Alt+F7.

    Le projet ou la solution est compilé et l'analyse du code est exécutée. Les résultats s’affichent dans la fenêtre Liste d’erreurs.

Analyser et résoudre les avertissements d'analyse du code

La fenêtre Liste d’erreurs liste les avertissements trouvés par Code Analysis. Les résultats s'affichent dans un tableau. Si des informations supplémentaires sont disponibles sur un avertissement en particulier, la première colonne contient une commande d’expansion. Choisissez-la pour développer l’affichage afin de voir plus d’informations sur le problème. Dans la mesure du possible, l'analyse du code affiche les numéros de ligne et la logique d'analyse qui a conduit à l'avertissement.

Pour obtenir des informations détaillées sur l’avertissement, notamment les solutions possibles au problème, choisissez l’ID d’avertissement dans la colonne Code pour afficher son article d’aide en ligne correspondant.

Double-cliquez sur un avertissement pour déplacer le curseur sur la ligne de code à l’origine de l’avertissement dans l’éditeur de code Visual Studio. Ou appuyez sur Entrée sur l’avertissement sélectionné.

Après avoir identifié le problème, vous pouvez le résoudre dans votre code. Ensuite, réexécutez Code Analysis pour vous assurer que l’avertissement n’apparaît plus dans la Liste d’erreurs.

Créer des éléments de travail pour les avertissements de Code Analysis

Vous pouvez utiliser la fonctionnalité de suivi des éléments de travail pour enregistrer les bogues à partir de Visual Studio. Pour utiliser cette fonctionnalité, vous devez vous connecter à une instance d’Azure DevOps Server (anciennement Team Foundation Server).

Pour créer un élément de travail pour un ou plusieurs avertissements de code C/C++

  1. Dans la Liste d’erreurs, développez et sélectionnez les avertissements.

  2. Dans le menu contextuel des avertissements, choisissez Créer un élément de travail, puis choisissez le type d’élément de travail.

  3. Visual Studio crée un élément de travail unique pour les avertissements sélectionnés et affiche l’élément de travail dans une fenêtre de document de l’IDE.

  4. Ajoutez des informations supplémentaires, puis choisissez Enregistrer l’élément de travail.

Rechercher et filtrer dans les résultats de Code Analysis

Vous pouvez effectuer une recherche dans de longues listes de messages d'avertissement, et vous pouvez filtrer les avertissements dans les solutions à projets multiples.

  • Pour filtrer les avertissements par titre ou ID d’avertissement : Entrez le mot clé dans la zone Rechercher dans la Liste d’erreurs.

  • Pour filtrer les avertissements par niveau de gravité : Par défaut, les messages de Code Analysis se voient affecter le niveau de gravité Avertissement. Dans un ensemble de règles personnalisé, vous pouvez assigner la gravité Erreur à un ou plusieurs messages. Dans la colonne Gravité de la Liste d’erreurs, choisissez la flèche déroulante, puis l’icône de filtre. Choisissez Avertissement ou Erreur pour afficher uniquement les messages auxquels a été assignée la gravité correspondante. Choisissez Tout sélectionner pour afficher tous les messages.

Voir aussi