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. En outre, l’outil Microsoft.CodeCoverage.Console prend en charge la collecte de la couverture du code pour le code C++.

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!

Utilisation de la commande de collection uniquement avec la configuration

Si vous ne souhaitez pas utiliser la commande instrument, les fichiers à instrumenter doivent être spécifiés dans un fichier de configuration 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.

Utilisation des commandes d’instrumentation et de collection

Dans ce cas, le premier binaire doit être instrumenté 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.

Utilisation des commandes d’instrumentation et de collection en mode serveur

Dans ce cas, vous pouvez complètement séparer la collection de couverture 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 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, l’application peut être démarrée comme suit :

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

Notes

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, le collecteur peut être fermé comme suit :

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