Partager 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++. L’analyse du code peut vous aider à trouver des problèmes courants et des violations de bonnes pratiques de programmation. Et il trouve des défauts difficiles à découvrir par le biais de tests. Ses avertissements diffèrent des erreurs du compilateur et des avertissements : il recherche des modèles de code spécifiques connus pour provoquer des problèmes. Autrement dit, le code valide, mais peut toujours créer des problèmes, soit pour vous, soit pour d’autres personnes qui utilisent votre code.

Configurer des ensembles de règles pour un projet

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

  2. Si vous le souhaitez, dans les listes Configuration et Plateforme, choisissez la configuration de build et la plateforme cible.

  3. Pour exécuter l’analyse du code chaque fois que le projet est généré à l’aide de la configuration sélectionnée, sélectionnez la zone Activer l’analyse du code sur build case activée. Vous pouvez également exécuter l’analyse du code manuellement en ouvrant le menu Analyser, puis en choisissant Exécuter l’analyse du code surProjectName ou Exécuter l’analyse du code 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 C/C++ standard

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

Ensemble de règles Description
Règles arithmétiques de vérification C++ Core Ces règles appliquent des case activée liées aux opérations arithmétiques à partir des instructions de base C++.
Règles de vérification de cœur C++ Ces règles appliquent le profil Bounds des instructions principales C++.
Règles de classe de vérification de base C++ Ces règles appliquent des case activée liées aux classes des instructions principales C++.
Règles de contrôle d’accès concurrentiel C++ Core Ces règles appliquent des case activée liées à la concurrence à partir des instructions de base C++.
Règles const de vérification de cœur C++ Ces règles appliquent des case activée liées à const à partir des instructions de base C++.
Règles de déclaration de vérification de base C++ Ces règles appliquent des case activée liées aux déclarations des instructions de base C++.
Règles d’énumération de vérification de cœur C++ Ces règles appliquent des case activée liées à l’énumération à partir des instructions de base C++.
Règles expérimentales de vérification de base C++ Ces règles collectent des case activée expérimentales. Finalement, nous nous attendons à ce que ces case activée soient déplacées vers d’autres ensembles de règles ou supprimées complètement.
Règles de fonction de vérification principale C++ Ces règles appliquent des case activée liées aux fonctions des instructions principales C++.
C++ Core Check GSL Rules Ces règles appliquent des case activée liées à la bibliothèque de prise en charge des instructions à partir des instructions principales C++.
Règles de durée de vie de vérification des cœurs C++ Ces règles appliquent le profil de durée de vie des instructions de base C++.
Règles de pointeur du propriétaire de vérification C++ Core Ces règles appliquent des case activée de gestion des ressources liées aux owner<T> instructions de base C++.
C++ Core Check Raw Pointer Rules Ces règles appliquent des case activée de gestion des ressources liées aux pointeurs bruts des instructions de base C++.
Règles de vérification de base C++ Ces règles appliquent un sous-ensemble des case activée des instructions de base C++. Utilisez cet ensemble de règles pour inclure toutes les règles C++ Core Check, à l’exception des ensembles de règles Enum et Expérimental.
C++ Core Vérifier les règles de pointeur partagé Ces règles appliquent des case activée de gestion des ressources liées aux types avec une sémantique de pointeur partagé à partir des instructions principales C++.
Règles STL de vérification de cœur C++ Ces règles appliquent des case activée liées à la bibliothèque standard C++ à partir des instructions principales C++.
Règles de style de vérification principale C++ Ces règles appliquent des case activée liées à l’utilisation d’expressions et d’instructions à partir des instructions de base C++.
Règles de type de vérification de cœur C++ Ces règles appliquent le profil type des instructions de base C++.
Règles de pointeur unique de vérification C++ Core Ces règles appliquent des case activée de gestion des ressources liées aux types avec une sémantique de pointeur unique à partir des instructions principales C++.
Règles de vérification d’accès concurrentiel Ces règles appliquent un ensemble de modèles d’accès concurrentiel Win32 case activée s en C++.
Règles d’accès concurrentiel Ajoute des règles d’accès concurrentiel de C++ Core Guidelines to Concurrency Check Rules.
Règles minimales microsoft natives Ces règles se concentrent sur les problèmes les plus critiques dans votre code natif, notamment les failles de sécurité potentielles et les incidents d’application. 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 natifs.
Règles recommandées par Microsoft Native Ces règles se concentrent sur les problèmes les plus critiques et les plus courants dans votre code natif. Ces problèmes incluent des failles de sécurité potentielles et des incidents d’application. 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 natifs. Ce jeu de règles est conçu pour fonctionner avec Visual Studio Professional Edition et versions ultérieures. Elle inclut toutes les règles dans Microsoft Native Minimum Rules.

Visual Studio inclut ces ensembles standard de règles 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 erreurs courantes effectuées dans l’utilisation des API de framework. Incluez cet ensemble de règles pour développer la liste des avertissements signalés par les règles minimales recommandées.
Règles de recommandations de conception de base microsoft Ces règles se concentrent sur l’application des meilleures pratiques pour faciliter la compréhension et l’utilisation de votre code. Incluez cet ensemble de règles si votre projet inclut du code de bibliothèque ou si vous souhaitez appliquer les meilleures pratiques pour du code facilement gérable.
Règles d’exactitude étendue Microsoft Ces règles s’étendent sur les règles de correction de base pour optimiser les erreurs d’utilisation de la logique et du framework signalées. L’accent est mis sur des scénarios spécifiques tels que l’interopérabilité COM et les applications mobiles. Envisagez d’inclure cet ensemble de règles si l’un de ces scénarios s’applique à votre projet ou pour trouver plus de problèmes dans votre projet.
Règles de recommandations relatives à la conception étendue Microsoft Ces règles s’étendent sur les règles de référence de conception de base pour optimiser la facilité d’utilisation et les problèmes de facilité de maintenance signalés. Une attention particulière est accordée aux recommandations de nommage. Envisagez d’inclure cet ensemble de règles si votre projet inclut du code de bibliothèque ou si vous souhaitez appliquer les normes les plus élevées pour écrire du code gérable.
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 localisée et/ou globalisée.
Règles minimales gérées par Microsoft Ces règles se concentrent sur les problèmes les plus critiques dans votre code pour lequel l’analyse du code est la plus précise. Ces règles sont petites en nombre et elles 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 par Microsoft Managed Ces règles se concentrent sur les problèmes les plus critiques dans votre code. Ces problèmes incluent des trous de sécurité potentiels, des incidents 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.
Règles minimales Microsoft Mixed (C++ /CLR) Ces règles se concentrent sur les problèmes les plus critiques dans vos projets C++ qui prennent en charge Common Language Runtime. Ces problèmes incluent des trous de sécurité potentiels, des incidents 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 pour Microsoft Mixed (C++ /CLR) Ces règles se concentrent sur les problèmes les plus courants et critiques dans vos projets C++ qui prennent en charge Common Language Runtime. Ces problèmes incluent des trous de sécurité potentiels, des incidents d’application et d’autres erreurs de logique et de conception importantes. Cet ensemble de règles est conçu pour être utilisé dans l’édition Visual Studio Professional et les versions ulté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 optimiser le nombre de problèmes de sécurité potentiels signalés.

Pour inclure chaque règle :

Ensemble de règles Description
Règles Microsoft All 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 image complète de tous les problèmes dans votre code. Il peut vous aider à déterminer quels ensembles de règles plus ciblés sont les plus appropriés pour s’exécuter pour vos projets.

Exécuter l'analyse du code

Dans la page Analyse du code de la boîte de dialogue Propriétés du projet, vous pouvez configurer l’analyse du code pour qu’elle s’exécute 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 le Explorateur de solutions, sélectionnez le nom du projet.

  2. Dans le menu Générer , choisissez Exécuter l’analyse du code surle nom du projet.

Pour exécuter l’analyse du code sur un fichier :

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

  2. Dans le menu Générer , choisissez Exécuter l’analyse du code dans 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 répertorie les avertissements d’analyse du code trouvés. Les résultats sont affichés dans un tableau. Si des informations supplémentaires sont disponibles sur un avertissement particulier, la première colonne contient un contrôle d’expansion. Choisissez-le pour développer l’affichage pour 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 plus d’informations sur l’avertissement, y compris 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 vers la ligne de code qui a provoqué 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 l’analyse du code 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 d’analyse du code

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.

Résultats d’analyse de code de recherche et de filtrage

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 Liste d’erreurs de recherche.

  • Pour filtrer les avertissements par gravité : par défaut, les messages d’analyse du code reçoivent une gravité d’avertissement. Vous pouvez affecter la gravité d’un ou plusieurs messages en tant qu’erreur dans un ensemble de règles personnalisé. 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 affectés à la gravité respective. Sélectionnez Tout pour afficher tous les messages.

Voir aussi