Partage via


Outil Microsoft.CodeCoverage.Console

Microsoft.CodeCoverage.Console est un outil en ligne de commande que vous pouvez utiliser pour collecter la couverture du code pour le code C++ et C#. Il prend également en charge la fusion et la conversion de rapports de couverture de code. Cet outil peut être utilisé pour collecter la couverture du code dans des scénarios sans test (par exemple, pour une application console simple).

Cet outil est une extension de l’outil dotnet dotnet-coverage qui prend en charge les scénarios suivants :

  • Ajoute des fonctionnalités de sécurité pour permettre la collecte de données de couverture de code ASP.NET à partir d’IIS.
  • Collecte de la couverture du code pour le code C++.

Note

L’outil est disponible uniquement avec Visual Studio Enterprise. Pour la couverture du code .NET, vous pouvez également utiliser l’outil en ligne de commande dotnet-coverage.

Microsoft.CodeCoverage.Console est disponible dans Visual Studio 2022 17.3 sous le dossier Common7\IDE\Extensions\Microsoft\CodeCoverage.Console. Vous pouvez l’utiliser dans une invite de commandes développeur et Developer PowerShell :

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console --help

Description:
  Code coverage tools.

Usage:
  Microsoft.CodeCoverage.Console [command] [options]

Options:
  --version       Show version information
  -?, -h, --help  Show help and usage information

Commands:
  collect <command> <args>            Collect code coverage from inner process and subprocesses.
  connect <session> <command> <args>  Connects to an existing code coverage session and collects code coverage from
                                      inner process and subprocesses.
  merge <files>                       Merge coverage reports
  shutdown <session>                  Close existing code coverage collection.
  snapshot <session>                  Creates coverage file for existing code coverage collection.
  instrument <input-file>             Instruments native and managed binary.
  uninstrument <input-file>           Restore original binary.

Commandes de collecte, de connexion, d’arrêt, de fusion, de capture instantanée et d’annulation de l’instrumentation

L’outil Microsoft.CodeCoverage.Console est une extension de l’outil dotnet dotnet-coverage. La documentation relative aux commandes de collecte, de connexion, d’arrêt, de fusion, de capture instantanée et d’annulation de l’instrumentation se trouve ici.

Microsoft.CodeCoverage.Console prend en charge des fonctionnalités de sécurité supplémentaires pour permettre la collecte de données de couverture de code ASP.NET à partir d’IIS. En outre, l’outil Microsoft.CodeCoverage.Console prend en charge la collecte de la couverture du code pour le code C++. La commande instrument est spécifique à ces scénarios.

Commande d'instrument

La commande d’instrumentalisation est utilisée pour instrumenter un binaire natif ou managé sur le disque.

Synopsis

Microsoft.CodeCoverage.Console instrument
    <input-file>
    [-s|--settings <settings>] [-id|--session-id <session-id>]
    [-o|--output <output>]
    [-l|--log-file <log-file>] [-ll|--log-level <log-level>]
    [-dco|--disable-console-output] [--nologo]
    [-?|-h|--help]

Arguments

  • <input-file>

    Binaire d’entrée.

Options

  • -s|--settings <settings>

    Définit le chemin d’accès aux paramètres de couverture du code XML. Le fichier de paramètres peut être utilisé pour exclure certains modules ou méthodes de l’analyse de la couverture du code. Le format est identique à la configuration du collecteur de données à l’intérieur d’un fichier .runsettings. Pour plus d’informations, consultez Personnaliser l’analyse de la couverture du code.

  • -id|--session-id <session-id>

    Spécifie l’ID de session de couverture du code. S’il n’est pas fourni, l’outil génère un GUID aléatoire.

  • -o|--output <output>

    Définit le chemin d’accès au fichier binaire de sortie. Si non fourni, l’instrumentation sera effectuée sur place.

  • -l|--log-file <log-file>

    Définit le chemin du fichier journal. Lorsque vous fournissez un répertoire (avec un séparateur de chemin d’accès à la fin), un nouveau fichier journal est généré pour chaque processus sous analyse.

  • -ll|--log-level <log-level>

    Définit le niveau de journalisation. Valeurs prises en charge : Error, Infoet Verbose.

  • -dco|--disable-console-output

    Désactive la sortie de la console.

  • --nologo

    N’affichez pas la bannière Couverture de code.

Couverture du code statique pour le code C++

L’outil Microsoft.CodeCoverage.Console peut être utilisé pour collecter la couverture du code pour C++ à l’aide de l’instrumentation statique. Il existe trois méthodes différentes que vous pouvez utiliser. Pour illustrer, supposons que nous avons une application console C++ simple (liée à l’option /PROFILE) :

D:\ConsoleApplication\x64\Debug> .\ConsoleApplication.exe
Hello World!

Couverture du code à l’aide de la commande collect avec le fichier de configuration (C++)

Si vous ne souhaitez pas utiliser la commande instrument, vous pouvez utiliser plutôt un fichier de configuration pour spécifier les fichiers à instrumenter, comme suit :

<ModulePaths>
  <IncludeDirectories>
    <Directory>D:\ConsoleApplication\x64\Debug</Directory>
  </IncludeDirectories>
</ModulePaths>

Ensuite, collectez la couverture du code de la manière suivante :

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --settings coverage.config .\ConsoleApplication.exe
SessionId: 85d9d49e-38a7-43a4-81ff-9e12f0e6b04b
Hello World!
Code coverage results: output.coverage.

Le fichier de paramètres peut être utilisé pour exclure certains modules ou méthodes de l’analyse de la couverture du code. Le format est identique à la configuration du collecteur de données à l’intérieur d’un fichier .runsettings. Pour plus d’informations, consultez Personnaliser l’analyse de la couverture du code.

Couverture du code à l’aide d’instruments et de commandes de collecte (C++)

Avant de collecter les données de couverture du code, commencez par instrumenter le fichier binaire comme suit :

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument ConsoleApplication.exe
Input file successfully instrumented.

Ensuite, collectez la couverture du code de la manière suivante :

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect .\ConsoleApplication.exe
SessionId: e85e657f-9ff3-42a0-88d7-2349598a1ecd
Hello World!
Code coverage results: output.coverage.

Couverture du code à l’aide de la commande instrument et collecte de commandes en mode serveur (C++)

À l’aide de cette méthode, vous pouvez séparer la collecte de couverture de code du fonctionnement de votre application. Tout d’abord, instrumentez votre binaire comme suit :

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
Input file successfully instrumented.

Note

L’ID de session doit être utilisé dans ce scénario pour vous assurer que l’application peut se connecter et fournir des données à un collecteur externe.

Dans la deuxième étape, vous devez démarrer le collecteur de couverture de code comme suit :

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4

Ensuite, démarrez l’application comme suit :

D:\ConsoleApplication\x64\Debug>.\ConsoleApplication.exe
Hello World!

Remarque

Le binaire natif instrumenté contient une référence à static_covrun64.dll. Assurez-vous que ce fichier se trouve à côté du fichier binaire instrumenté ou que le répertoire où se trouve static_covrun64.dll est répertorié dans la variable d’environnement Path. Les commandes collect et connect ajoutent automatiquement des répertoires appropriés à Path.

Enfin, fermez le collecteur comme suit :

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4