Compartir a través de


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í.

Microsoft.CodeCoverage.Console admite características de seguridad adicionales para permitir la recopilación de datos de cobertura de código de ASP.NET de IIS. Además, la herramienta Microsoft.CodeCoverage.Console admite la recopilación de cobertura de código para código de C++. El comando instrument es específico de estos escenarios.

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 genera 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!

Cobertura de código mediante el comando collect con el archivo de configuración

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

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

Después, recopile 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.

Cobertura de código mediante los comandos instrument y collect

Antes de recopilar los datos de cobertura de código, primero instrumente el binario de la siguiente manera:

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

Después, recopile 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.

Cobertura de código con los comandos instrument y collect en modo de servidor

Con este método, puede separar la cobertura de código 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 código 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

A continuación, inicie la aplicación de la siguiente manera:

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, cierre el recopilador de la siguiente manera:

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