Herramienta Microsoft.CodeCoverage.Console

Microsoft.CodeCoverage.Console es una herramienta de línea de comandos. Puede usarla para recopilar cobertura de código para código de C++ y C#. También admite la combinación y conversión de informes de cobertura de código. Esta herramienta se puede usar para recopilar cobertura de código en escenarios que no son de prueba (por ejemplo, para una aplicación de consola simple).

Microsoft.CodeCoverage.Console está disponible en Visual Studio 2022 17.3 en la carpeta Common7\IDE\Extensions\Microsoft\CodeCoverage.Console. Puede usarla en un Símbolo del sistema para desarrolladores y PowerShell para desarrolladores:

Nota:

La herramienta solo está disponible con Visual Studio Enterprise. Para la cobertura de código de .NET, también puedes usar la herramienta de línea de comandos 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.

Recopilación, conexión, apagado, combinación e instantánea de comandos

La herramienta Microsoft.CodeCoverage.Console es la extensión de la herramienta dotnet-coverage dotnet. La documentación para recopilación, conexión, apagado, combinación e instantánea de comandos se puede encontrar aquí. Además, la herramienta Microsoft.CodeCoverage.Console admite la recopilación de cobertura de código para código de C++.

Comando instrument

El comando instrument se usa para instrumentar archivos binarios nativos o administrados en el disco.

Sinopsis

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>

Argumentos

  • <input-file>

    El archivo binario de entrada.

Opciones

  • -s|--settings <settings>

    Establece la ruta de acceso a la configuración de cobertura de código XML.

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

    Especifica el identificador de sesión de cobertura de código. Si no se proporciona, la herramienta generará un GUID aleatorio.

  • -o|--output <output>

    Establece la ruta de acceso al archivo de salida binario. Si no se proporciona, la instrumentación se realizará en contexto.

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

    Establece la ruta de archivo de registro. Cuando se proporciona un directorio (con separador de ruta de acceso al final), se genera un nuevo archivo de registro para cada proceso que se analiza.

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

    Establece el nivel de registro. Valores admitidos: Error, Info y Verbose.

Cobertura de código estático para código de C++

La herramienta Microsoft.CodeCoverage.Console se puede usar para recopilar cobertura de código para C++ mediante instrumentación estática. Hay tres métodos diferentes disponibles que puede usar. Para demostrarlo, supongamos que tenemos una sencilla aplicación de consola de C++ (vinculada con la opción /PROFILE):

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

Uso de solo el comando collect con la configuración

Si no desea usar el comando instrument, los archivos que se van a instrumentar deben especificarse en un archivo de configuración como se indica a continuación:

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

Después, puede recopilar la cobertura de código de la siguiente manera:

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.

Uso de instrumentación y recopilación de comandos

En este caso, el primer binario debe instrumentarse de la siguiente manera:

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

Después, puede recopilar la cobertura de código de la siguiente manera:

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

Uso del comando instrument y recopilación de comandos en modo de servidor

En este caso, puede separar completamente la recopilación de cobertura de la ejecución de la aplicación. En primer lugar, instrumente el binario de la siguiente manera:

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

Nota

El identificador de sesión debe usarse en este escenario para asegurarse de que la aplicación puede conectarse y proporcionar datos al recopilador externo.

En el segundo paso, debe iniciar el recopilador de cobertura de la siguiente manera:

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

Después, la aplicación se puede iniciar de la siguiente forma:

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

Nota

El archivo binario nativo instrumentado contiene una referencia a static_covrun64.dll. Asegúrese de que este archivo está junto al binario instrumentado o al directorio donde se encuentra static_covrun64.dll aparece en la variable de entorno Path. Los comandos collect y connect agregan directorios adecuados a Path automáticamente.

Para terminar, el recopilador se puede cerrar de la siguiente manera:

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