/analyze (Analyse du code)

Active l'analyse du code et les options de contrôle.

Syntaxe

Options d’analyse générale :

/analyze[-]
/analyze:only
/analyze:quiet
/analyze:max_paths number
/analyze:stacksize number
/analyze:WX-

Options du plug-in d’analyse :

/analyze:plugin plugin_dll

Options d’analyse de fichier externe :

/analyze:external-
/analyze:external:ruleset ruleset_files

Options du journal d’analyse :

/analyze:autolog[-]
/analyze:autolog:ext extension
/analyze:log log_path

Options de format de fichier journal :

/analyze:log:format:sarif
/analyze:log:format:xml

Options de contenu du fichier journal :

/analyze:sarif:analyzedfiles[-]
/analyze:sarif:configuration[-]
/analyze:log:compilerwarnings
/analyze:log:includesuppressed

Options de l’ensemble de règles :

/analyze:rulesetruleset_file

Options de l’ensemble de règles :

/analyze:projectdirectory project_directory
/analyze:rulesetdirectory ruleset_directories
/analyze:ruleset ruleset_files

Arguments

Options d’analyse générale

/analyze[-]
Active l’analyse du code. Utilisez /analyze- pour désactiver l’analyse de manière explicite. /analyze- est le comportement par défaut.

par défaut, les résultats de l’analyse sont transmis à la console ou à la fenêtre de sortie de Visual Studio, comme d’autres messages d’erreur. L’analyse du code crée également un fichier journal nommé filename.nativecodeanalysis.xml , où filename est le nom du fichier source analysé.

/analyze:only
Par défaut, le compilateur compile le code pour générer des fichiers objets avant l’exécution de l’analyse du code. L' /analyze:only option fait en sorte que le compilateur ignore l’étape de génération de code et effectue l’analyse du code directement. Les erreurs du compilateur empêchent toujours l’exécution de l’analyse du code. Toutefois, le compilateur ne signale pas d’autres avertissements qu’il peut trouver au cours de l’étape de génération de code. Si le programme n’est pas exempt d’avertissements de génération de code, les résultats d’analyse peuvent ne pas être fiables. Nous vous recommandons d’utiliser cette option uniquement si le code passe des vérifications de syntaxe de génération de code sans erreurs ou avertissements.

/analyze:quiet
désactive la sortie de l’analyse vers la console ou Visual Studio fenêtre sortie.

/analyze:max_paths number
Le number paramètre spécifie le nombre maximal de chemins de code à analyser. L’analyse par défaut est de 256 chemins. Des valeurs plus élevées entraînent une vérification plus approfondie, mais l’analyse peut prendre plus de temps.

/analyze:stacksize number
Le number paramètre spécifie la taille en octets du frame de pile qui génère l’avertissement C6262. La taille du frame de pile par défaut est de 16 Ko.

/analyze:WX-
Indique au compilateur de ne pas traiter les avertissements d’analyse du code comme des erreurs, même lorsque l' /WX option est utilisée. Pour plus d’informations, consultez /WX (niveau d’avertissement).

Options du plug-in d’analyse

/analyze:plugin plugin_dll
Active la DLL du plug-in d’analyse du code spécifié pour l’analyse du code.

L’espace entre /analyze:plugin et le chemin d’accès du plugin_dll fichier est facultatif si le chemin d’accès ne requiert pas de guillemets doubles ( " ). Par exemple, vous pouvez écrire /analyze:plugin EspxEngine.dll . Toutefois, si le chemin d’accès est placé entre guillemets doubles, vous ne pouvez pas avoir d’espace entre /analyze:plugin et le chemin d’accès au fichier. Voici un exemple : /analyze:plugin"c:\path\to\EspxEngine.dll".

Le moteur d’analyse du code utilise des plug-ins pour faciliter la recherche de catégories spécifiques de défauts. Le moteur d’analyse du code est fourni avec des plug-ins intégrés qui détectent différents défauts. Pour utiliser un autre plug-in avec le moteur d’analyse du code, spécifiez-le à l’aide de l' /analyze:plugin option.

Le plug- LocalEspC.dll in implémente les contrôles d’analyse liés à l’accès concurrentiel. Ces contrôles déclenchent des avertissements dans la plage C261XX, tels que C26100 à C26167.

Pour charger LocalEspC.dll , utilisez l’option /analyze:plugin LocalEspC.dll du compilateur.

certains plug-ins, comme EspXEngine.dll , qui sont fournis avec Visual Studio, utilisent des extensions qui peuvent effectuer d’autres analyses. Visual Studio comprend les extensions suivantes pour EspXEngine : ConcurrencyCheck.dll , CppCoreCheck.dll , HResultCheck.dllEnumIndex.dll , et VariantClear.dll . Ils vérifient les défauts pour les problèmes de concurrence, les violations CppCoreGuidelines, les utilisations inappropriées des enum valeurs comme index, HRESULT valeurs ou VARIANT valeurs, respectivement.

Quand vous générez sur la ligne de commande, vous pouvez utiliser la Esp.Extensions variable d’environnement pour spécifier des extensions EspXEngine. Par exemple :

set Esp.Extensions=ConcurrencyCheck.dll;CppCoreCheck.dll;

Utilisez un point-virgule ( ; ) pour délimiter les extensions, comme indiqué dans l’exemple. Un point-virgule de fin n’est pas nécessaire. Vous pouvez utiliser un chemin d’accès de fichier absolu pour une extension, ou spécifier un chemin d’accès relatif à partir du répertoire qui contient EspXEngine.dll .

Le plug-in utilise ConcurrencyCheck.dll pour implémenter les EspXEngine.dll contrôles d’analyse du code liés à l’accès concurrentiel. Ces contrôles déclenchent des avertissements dans la plage C261XX, tels que C26100 à C26167.

Si vous créez dans une fenêtre d’invite de commandes développeur, commencez par définir la Esp.Extensions variable d’environnement pour spécifier l' ConcurrencyCheck.dll extension :

set Esp.Extensions=ConcurrencyCheck.dll

Utilisez ensuite l’option /analyze:plugin EspXEngine.dll du compilateur pour utiliser le plug-in EspXEngine.

Options d’analyse de fichiers externes

à partir de Visual Studio 2019 version 16,10, vous pouvez spécifier des règles d’analyse et un comportement différents pour les en-têtes externes. Utilisez les options, ou /external:anglebrackets pour spécifier les /external:I répertoires comme des /external:env répertoires « externes ». Tous les fichiers inclus à l’aide #include de à partir d’un répertoire externe ou de ses sous-répertoires sont considérés comme des en-têtes externes. Pour plus d’informations, consultez /external (Diagnostics des en-têtes externes).

L’analyse du code fournit les options suivantes pour contrôler l’analyse des fichiers externes :

/analyze:external-
Ignore l’analyse des fichiers d’en-tête externes. Par défaut, l’analyse du code analyse les fichiers d’en-tête externes tout comme les autres fichiers. Lorsque l’option est définie, l' /analyze:external- analyse du code ignore tous les fichiers spécifiés comme externes, à l’exception des modèles des fichiers externes. Les modèles définis dans les en-têtes externes sont traités comme non externes à l’aide de l' /external:templates- option. L’option n’affecte pas l’analyse du /external:Wn code. Par exemple, l’analyse du code analyse les fichiers externes et signale les erreurs même lorsque /external:W0 est spécifié.

/analyze:external:ruleset ruleset_files
Le ruleset_files paramètre spécifie un ou plusieurs fichiers d’ensemble de règles délimités par des points-virgules à utiliser pour l’analyse des fichiers externes. Pour plus d’informations sur les ensembles de règles, consultez la section « Options pour les ensembles de règles ».

Une variable d’environnement ( CAExcludePath ) fournit une fonctionnalité similaire, mais plus simple, pour ignorer l’analyse des fichiers dans les répertoires spécifiés dans la variable d’environnement. Si un répertoire est spécifié dans les deux /external:* options et dans la CAExcludePath variable d’environnement, il est considéré comme exclu et /analyze:external* les options ne s’appliquent pas à ce répertoire.

Options du journal d’analyse

/analyze:autolog[-]
Cet indicateur doit être utilisé pour permettre la création du fichier journal d’analyse pour chacun des fichiers sources en cours d’analyse. Les fichiers journaux étant désormais créés par défaut, cet indicateur est principalement redondant. Lorsqu’il est utilisé, il remplace l’extension *.pftlog de journal par défaut par au lieu de .xml . Utilisez /analyze:autolog- pour désactiver la journalisation dans les fichiers.

/analyze:autolog:ext extension
Remplace l’extension par défaut des fichiers journaux d’analyse et utilise extension à la place. Si vous utilisez l' .sarif extension, le fichier journal utilise le format SARIF au lieu du format XML par défaut.

/analyze:log log_path
Spécifie un chemin d’accès log_path au fichier journal au lieu du chemin d’accès au fichier journal généré automatiquement. Lorsque le chemin d’accès comporte une barre oblique inverse de fin et qu’il fait référence à un répertoire existant, l’analyse du log_path code crée tous les fichiers journaux dans le répertoire spécifié. Sinon, log_path spécifie un chemin d’accès de fichier. Un chemin d’accès de fichier indique au compilateur de combiner les journaux de tous les fichiers sources analysés dans le fichier journal spécifié. Si le chemin d’accès au fichier a une .sarif extension, le fichier journal utilise le format SARIF au lieu du format XML par défaut. Vous pouvez remplacer ce comportement en utilisant l'option /analyze:log:format:*.

Options de format de fichier journal

à partir de Visual Studio 2019 version 16,9, vous pouvez spécifier des options de format de journal différentes pour l’analyse du code.

/analyze:log:format:xml
Force l’utilisation d’un format de journal XML sans incidence sur l’extension de fichier utilisée.

/analyze:log:format:sarif
Force l’utilisation du format de journal SARIF sans pertinence de l’extension de fichier utilisée.

Options de contenu du fichier journal

à partir de Visual Studio 2019 version 16,9, vous pouvez spécifier des options de contenu de journal différentes pour l’analyse du code.

/analyze:sarif:analyzedfiles[-]
Ajoute des entrées d’artefacts de fichier au fichier journal SARIF pour les fichiers analysés qui n’émettent pas d’avertissements. qui est désactivée par défaut. Artifacts pour le fichier source et les fichiers qui ont émis les résultats sont toujours inclus.

/analyze:sarif:configuration[-]
Ajoute des entrées de configuration de règle pour déterminer comment l’utilisateur a remplacé la configuration de règle par défaut (désactivée par défaut).

/analyze:log:compilerwarnings
Ajoute tous les défauts détectés par le moteur d’analyse, ainsi que tous les avertissements du compilateur, dans le fichier journal d’analyse. Par défaut, les avertissements du compilateur ne sont pas inclus dans le fichier journal d’analyse. Pour plus d’informations sur les avertissements du compilateur lors de l’analyse du code, consultez l' /analyze:only option.

/analyze:log:includesuppressed
Ajoute les avertissements supprimés et les avertissements qui n’ont pas été supprimés au fichier journal de l’analyse. Par défaut, les avertissements supprimés ne sont pas inclus dans le fichier journal d’analyse. Si des fichiers RuleSet sont spécifiés pour l’analyse, les avertissements désactivés par les fichiers RuleSet ne sont pas inclus dans le journal même si /analyze:log:includesuppressed est spécifié.

Options de l’ensemble de règles

/analyze:projectdirectory project_directory
Spécifie le répertoire du projet actuel. Si le RuleSet (ou un élément qu’il contient) est un nom de fichier, le compilateur recherche d’abord le fichier sous le spécifié project_directory . S’il est introuvable, il recherche ensuite dans le spécifié par /analyze:rulesetdirectory , le ruleset_directories cas échéant. Si le RuleSet (ou un élément qu’il contient) est un chemin d’accès relatif, le compilateur recherche d’abord le fichier dans le répertoire du projet. Si le RuleSet est introuvable, il recherche dans le répertoire de travail actuel. cette option est disponible à partir de Visual Studio 2019 version 16,9.

/analyze:rulesetdirectory ruleset_directories
Spécifie une liste de chemins de recherche de RuleSet séparés par des points-virgules. Si le RuleSet (ou un élément qu’il contient) est un nom de fichier, le compilateur recherche d’abord le fichier sous le project_directory spécifié par /analyze:projectdirectory , le cas échéant, suivi du spécifié ruleset_directories . cette option est disponible à partir de Visual Studio 2019 version 16,9.

/analyze:ruleset ruleset_files
Spécifie un ou plusieurs fichiers RuleSet à utiliser pour l’analyse. Cette option peut rendre l’analyse plus efficace ; le moteur d’analyse essaie d’exclure les contrôleurs qui n’ont pas de règles actives spécifiées dans les fichiers RuleSet avant l’exécution. Dans le cas contraire, le moteur exécute tous les contrôleurs activés.

/analyze:ruleset ruleset_file
Spécifie un fichier RuleSet à utiliser pour l’analyse. Cette option peut rendre l’analyse plus efficace ; le moteur d’analyse essaie d’exclure les contrôleurs qui n’ont pas de règles actives spécifiées dans le fichier RuleSet avant d’exécuter. Dans le cas contraire, le moteur exécute tous les contrôleurs activés.

les fichiers ruleset fournis avec Visual Studio se trouvent dans %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets .

L’exemple d’ensemble de règles personnalisé suivant indique au moteur d’analyse de vérifier C6001 et C26494, et de les signaler comme des avertissements.

Vous pouvez placer ce fichier n’importe où tant que vous spécifiez le chemin d’accès complet dans l’argument.

Vous pouvez placer ce fichier n’importe où tant que vous spécifiez le chemin d’accès complet dans l’argument ou sous les répertoires spécifiés dans les /analyze:projectdirectory options ou /analyze:rulesetdirectory .

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description="New rules to apply." ToolsVersion="15.0">
  <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
    <Rule Id="C6001" Action="Warning" />
    <Rule Id="C26494" Action="Warning" />
  </Rules>
</RuleSet>

Par défaut, l’extension de fichier pour les fichiers RuleSet est *.ruleset . Visual Studio utilise l’extension par défaut lors de l’exploration des fichiers de l’ensemble de règles. Toutefois, vous pouvez utiliser n’importe quelle extension.

Pour plus d’informations sur les ensembles de règles, consultez utiliser des ensembles de règles pour spécifier les règles C++ à exécuter.

Notes

Pour plus d’informations, consultez vue d’ensemble de l’analyse du code pour c/c++ et analyse du code pour les avertissements c/c++.

Pour définir cette option du compilateur dans l'environnement de développement Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. sélectionnez propriétés> de ConfigurationCode Analysis> page de propriétésgénéral .

  3. modifiez une ou plusieurs des propriétés de Code Analysis .

  4. Cliquez sur OK ou sur appliquer pour enregistrer vos modifications.

pour définir les options d’analyse de fichiers externes dans Visual Studio 2019 version 16,10 et versions ultérieures :

  1. Ouvrez la boîte de dialogue Pages de propriété du projet.

  2. Sélectionnez la page de propriétés Propriétés> de configurationC/C++>External includes .

  3. Définissez les propriétés :

    • désactiver les Code Analysis pour les en-têtes externes définit l' /analyze:external- option.

    • L’ensemble de règles d’analyse pour les en-têtes externes définit l' /analyze:external:ruleset path option.

  4. Cliquez sur OK ou sur appliquer pour enregistrer vos modifications.

Pour définir cette option du compilateur par programmation

  1. Consultez EnablePREfast.

Voir aussi

Options du compilateur MSVC
Syntaxe de la ligne de commande du compilateur MSVC