Herramienta Microsoft.CodeCoverage.Console
Microsoft.CodeCoverage.Console es una herramienta de línea de comandos. Puede usarlo 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).
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 .NET, también puede usar la herramienta de línea de comandos dotnet-coverage.
C:\Program Files\Microsoft Visual Studio\2022\Enterprise> 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 la 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 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 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
,Info
yVerbose
.-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
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.
Cobertura de código mediante comandos instrument y collect
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
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é al lado del binario instrumentado o que el directorio donde se encuentra static_covrun64.dll
aparezca en la variable de entorno Path
. Los comandos collect
y connect
agregan directorios adecuados a Path
automáticamente.
Por último, cierre el colector de la siguiente manera:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4