Partager via


Outil Microsoft.CodeCoverage.Console

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

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 :

Remarque

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.

C:\Program Files\Microsoft Visual Studio\2022\Enterprise> Microsoft.CodeCoverage.Console --help
Description:
  Dynamic code coverage tools.

Usage:
  codecoverage [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 binary.

Commandes de collection, de connexion, d’arrêt, de fusion et d’instantané

L’outil Microsoft.CodeCoverage.Console est une extension de l’outil dotnet dotnet-coverage. Vous pouvez consulter la documentation relative aux commandes de collection, de connexion, d’arrêt, de fusion et d’instantané ici.

Microsoft.CodeCoverage.Console prend en charge des fonctionnalités de sécurité supplémentaires pour permettre la collecte des données de couverture de code ASP.NET depuis 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’instrumentation

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

Synopsis

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

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.

  • -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. S’il n’est pas fourni, l’instrumentation est effectuée sur place.

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

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

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

    Définit le niveau de journalisation. Les valeurs prises en charge sont : Error, Info et Verbose.

Couverture du code statique pour le code C++

L’outil Microsoft.CodeCoverage.Console permet de collecter la couverture du code pour C++ à l’aide de l’instrumentation statique. Vous pouvez utiliser trois méthodes différentes. Pour illustrer ce cas, imaginons que nous disposons d’une application console C++ simple (liée à l’option /PROFILE) :

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

Couverture de code à l’aide de la commande collecte avec le fichier de configuration

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

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

Vous pouvez ensuite collecter la couverture du code comme suit :

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.

Couverture du code à l’aide des commandes d’instrumentation et de collection

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.

Vous pouvez ensuite collecter la couverture du code comme suit :

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

Couverture de code à l’aide des commandes d’instrumentation et de collection en mode serveur

Cette méthode vous permet de séparer la collection de couverture de code de l’exécution 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.

Notes

L’ID de session doit être utilisé dans ce scénario pour s’assurer que l’application peut se connecter et fournir des données au 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 fichier 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ù static_covrun64.dll se trouve est répertorié dans la variable d’environnement Path. Les commandes collect et connect ajoutent automatiquement les répertoires appropriés à Path.

Enfin, fermez le collecteur comme suit :

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