/analyze (Analyse du code)

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

Syntaxe

Options d’analyse générales :

/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 fichiers externes :

/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 d’ensemble de règles :

/analyze:rulesetruleset_file

Options d’ensemble de règles :

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

Arguments

Options d’analyse générales

/analyze[-]
Active l’analyse du code. Permet /analyze- de désactiver explicitement l’analyse. /analyze- est le comportement par défaut.

Par défaut, la sortie d’analyse est envoyée à la console ou à la fenêtre 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 objet avant l’exécution de l’analyse du code. L’option /analyze:only permet au compilateur d’ignorer le passage de génération de code et d’effectuer directement l’analyse du code. 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 pendant le passage 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 transmet des vérifications de syntaxe de génération de code sans erreurs ni avertissements.

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

/analyze:max_paths number
Le number paramètre spécifie le nombre maximal de chemins de code à analyser. L’analyse est par défaut de 256 chemins. Les valeurs plus volumineuses provoquent 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 de la trame 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’option /WX est utilisée. Pour plus d’informations, consultez /WX (Niveau d’avertissement).

Options du plug-in Analysis

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

L’espace entre /analyze:plugin et le chemin d’accès au plugin_dll fichier est facultatif si le chemin d’accès ne nécessite 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 du fichier. Voici un exemple : /analyze:plugin"c:\path\to\EspxEngine.dll".

Le moteur d’analyse du code utilise des plug-ins pour vous aider à trouver des catégories spécifiques de défauts. Le moteur d’analyse du code est fourni avec certains 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’option /analyze:plugin .

Le plug-in LocalEspC.dll implémente des vérifications d’analyse liées à l’accès concurrentiel. Ces vérifications déclenchent des avertissements dans la plage C261XX, comme C26100 à C26167.

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

Certains plug-ins, comme EspXEngine.dll, qui sont fournis avec Visual Studio, utilisent des extensions qui peuvent effectuer une analyse plus approfondie. Visual Studio inclut ces extensions pour EspXEngine : ConcurrencyCheck.dll, , EnumIndex.dllCppCoreCheck.dll, , HResultCheck.dllet VariantClear.dll. Ils vérifient les défauts pour les problèmes d’accès concurrentiel, les violations cppCoreGuidelines, les utilisations inappropriées de enum valeurs comme index, HRESULT valeurs ou VARIANT valeurs, respectivement.

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

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

Utilisez un point-virgule (;) pour délimiter les extensions, comme illustré 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 relatif à partir du répertoire qui contient EspXEngine.dll.

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

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

set Esp.Extensions=ConcurrencyCheck.dll

Ensuite, utilisez l’option /analyze:plugin EspXEngine.dll du compilateur pour utiliser le plug-in EspXEngine.

Options d’analyse de fichiers externes

À compter de Visual Studio 2019 version 16.10, vous pouvez spécifier différentes règles d’analyse et comportement pour les en-têtes externes. Utilisez les /external:Irépertoires , /external:envou /external:anglebrackets les options pour spécifier des répertoires « externes ». Tous les fichiers inclus à #include 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 d’en-têtes externes).

L’analyse du code fournit ces options 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 comme d’autres fichiers. Lorsque l’option est définie, l’analyse /analyze:external- du code ignore tous les fichiers spécifiés en tant que fichiers externes, à l’exception des modèles provenant de fichiers externes. Les modèles définis dans les en-têtes externes sont traités comme non externes à l’aide de l’option /external:templates- . L’option n’affecte pas l’analyse /external:Wn du code. Par exemple, l’analyse du code analyse les fichiers externes et signale des défauts même lorsqu’elle /external:W0 est spécifiée.

/analyze:external:ruleset ruleset_files
Le ruleset_files paramètre spécifie un ou plusieurs fichiers de jeu 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, reportez-vous à la section « Options pour les ensembles de règles ».

Il existe une variable d’environnement (CAExcludePath) qui offre une fonctionnalité similaire mais plus simple pour ignorer l’analyse des fichiers sous les répertoires spécifiés dans la variable d’environnement. Si un répertoire est spécifié à la fois /external:* dans l’option 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 était nécessaire pour permettre la création du fichier journal d’analyse pour chacun des fichiers sources analysés. Les fichiers journaux sont désormais créés par défaut. Cet indicateur est donc principalement redondant. Lorsqu’elle est utilisée, elle modifie l’extension *.pftlog de journal par défaut à la place de .xml. Permet /analyze:autolog- de 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’extension .sarif , 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 du fichier journal généré automatiquement. Lorsque le log_path chemin a une barre oblique inverse de fin et fait référence à un répertoire existant, l’analyse du code crée tous les fichiers journaux dans le répertoire spécifié. Sinon, log_path spécifie un chemin d’accès au fichier. Un chemin d’accès au fichier indique au compilateur de combiner les journaux pour 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

À compter de Visual Studio 2019 version 16.9, vous pouvez spécifier différentes options de format de journal pour l’analyse du code.

/analyze:log:format:xml
Force l’utilisation du format de journal XML non pertinente de l’extension de fichier utilisée.

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

Options de contenu du fichier journal

À compter de Visual Studio 2019 version 16.9, vous pouvez spécifier différentes options de contenu de journal 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. Les artefacts du fichier source et des fichiers émis sont toujours inclus.

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

/analyze:log:compilerwarnings
Ajoute à la fois tous les défauts trouvés par le moteur d’analyse et tous les avertissements du compilateur au 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’option /analyze:only .

/analyze:log:includesuppressed
Ajoute des avertissements supprimés et des avertissements non supprimés au fichier journal d’analyse. Par défaut, les avertissements supprimés ne sont pas inclus dans le fichier journal d’analyse. Si les fichiers d’ensemble de règles sont spécifiés pour l’analyse, les avertissements désactivés par les fichiers de jeu de règles ne sont pas inclus dans le journal, même lorsqu’ils /analyze:log:includesuppressed sont spécifiés.

Options d’ensemble de règles

/analyze:projectdirectory project_directory
Spécifie le répertoire de projet actif. Si l’ensemble de règles (ou un élément qu’il inclut) est un nom de fichier, le compilateur recherche d’abord le fichier sous le fichier spécifié project_directory. S’il n’est pas trouvé, il recherche ensuite l’élément ruleset_directories spécifié par /analyze:rulesetdirectory, le cas échéant. Si l’ensemble de règles (ou un élément inclus) est un chemin d’accès relatif, le compilateur recherche d’abord le fichier sous le répertoire du projet. Si l’ensemble de règles est introuvable, il se trouve dans le répertoire de travail actif. Cette option est disponible à partir de Visual Studio 2019 version 16.9.

/analyze:rulesetdirectory ruleset_directories
Spécifie une liste séparée par des points-virgules des chemins de recherche d’ensemble de règles. Si l’ensemble de règles (ou un élément qu’il inclut) est un nom de fichier, le compilateur recherche d’abord le fichier sous le project_directory fichier spécifié par /analyze:projectdirectory, le cas échéant, suivi du fichier 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 d’ensemble de règles à utiliser pour l’analyse. Cette option peut rendre l’analyse plus efficace ; le moteur d’analyse tente d’exclure les vérificateurs qui n’ont aucune règle active spécifiée dans les fichiers du jeu de règles avant l’exécution. Sinon, le moteur exécute tous les vérificateurs activés.

/analyze:ruleset ruleset_file
Spécifie un fichier d’ensemble de règles à utiliser pour l’analyse. Cette option peut rendre l’analyse plus efficace ; le moteur d’analyse tente d’exclure les vérificateurs qui n’ont aucune règle active spécifiée dans le fichier d’ensemble de règles avant l’exécution. Sinon, le moteur exécute tous les vérificateurs activés.

Les fichiers d’ensemble de règles fournis avec Visual Studio sont trouvés dans %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.

L’exemple de jeu de règles personnalisé suivant indique au moteur d’analyse de rechercher C6001 et C26494 et de les signaler en tant qu’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 options ou /analyze:rulesetdirectory les /analyze:projectdirectory options.

<?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 d’ensemble de règles est *.ruleset. Visual Studio utilise l’extension par défaut lors de la navigation pour les fichiers d’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 la vue d’ensemble de l’analyse du code pour C/C++ et l’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 la page de propriétés d’analyse >du code général des propriétés>de configuration.

  3. Modifiez une ou plusieurs des propriétés d’analyse du code.

  4. Choisissez OK ou Appliquer pour enregistrer vos modifications.

Pour définir des options d’analyse de fichiers externes dans Visual Studio 2019 version 16.10 et ultérieures :

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

  2. Sélectionnez la page de propriétés C/C++External Includes des propriétés des propriétés>C/C++.>

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

    • Désactiver l’analyse du code pour les en-têtes externes définit l’option /analyze:external- .

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

  4. Choisissez OK ou 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 ligne de commande du compilateur MSVC