Compartir vía


Herramienta Microsoft.CodeCoverage.Console

Microsoft.CodeCoverage.Console es una herramienta de línea de comandos que puede usar 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 sencilla).

Esta herramienta es una extensión de la herramienta dotnet-coverage dotnet que agrega compatibilidad con los siguientes escenarios:

  • Agrega características de seguridad para habilitar la recopilación de datos de cobertura de código ASP.NET de IIS.
  • Recopilación de cobertura de código para código de C++.

Nota

La herramienta solo está disponible con Visual Studio Enterprise. Para la cobertura de código .NET, también puede usar la herramienta de línea de comandos dotnet-coverage.

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:

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.

Comandos de recopilación, conexión, apagado, combinación, captura de instantáneas y desinstrumentación

La herramienta Microsoft.CodeCoverage.Console es una extensión de la herramienta dotnet-coverage dotnet. Aquí encontrará la documentación sobre los comandos de recopilación, conexión, apagado, combinación, instantánea y desinstrumentación.

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

Comando de Instrumento

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

Sinopsis

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]

Argumentos

  • <input-file>

    El binario de entrada.

Opciones

  • -s|--settings <settings>

    Establece la ruta de acceso a la configuración de cobertura de código XML. El archivo de configuración se puede usar para excluir algunos módulos o métodos del análisis de cobertura de código. El formato es el mismo que la configuración del recopilador de datos dentro de un archivo .runsettings. Para obtener más información, vea Personalizar el análisis de cobertura de código.

  • -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 acceso del archivo de registro. Cuando se proporciona un directorio (con un separador de ruta de acceso al final), se genera un nuevo archivo de registro para cada proceso sometido a análisis.

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

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

  • -dco|--disable-console-output

    Deshabilita la salida de la consola.

  • --nologo

    No muestre el banner Cobertura de código.

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 (C++)

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>

A continuación, recopile la cobertura de código de la manera siguiente:

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.

El archivo de configuración se puede usar para excluir algunos módulos o métodos del análisis de cobertura de código. El formato es el mismo que la configuración del recopilador de datos dentro de un archivo .runsettings. Para obtener más información, vea Personalizar el análisis de cobertura de código.

Cobertura de código utilizando los comandos "instrument" y "collect" (C++)

Antes de recopilar 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.

A continuación, recopile la cobertura de código de la manera siguiente:

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 utilizando el comando instrument y el comando collect en modo servidor (C++)

Con este método, puede separar la recopilación de 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 binario nativo instrumentado contiene una referencia a static_covrun64.dll. Asegúrese de que este archivo esté junto al binario instrumentado o que el directorio donde se encuentra static_covrun64.dll esté listado en la variable de entorno Path. Los comandos collect y connect agregan directorios adecuados a Path automáticamente.

Por último, cierre el recopilador de la siguiente manera:

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