Ferramenta Microsoft.CodeCoverage.Console
Microsoft.CodeCoverage.Console é uma ferramenta de linha de comando. Você pode usá-lo para coletar cobertura de código para código C++ e C#. Ele também suporta a fusão e conversão de relatórios de cobertura de código. Essa ferramenta pode ser usada para coletar cobertura de código em cenários não de teste (por exemplo, para um aplicativo de console simples).
Microsoft.CodeCoverage.Console está disponível no Visual Studio 2022 17.3 na pasta Common7\IDE\Extensions\Microsoft\CodeCoverage.Console
. Você pode usá-lo em um Prompt de Comando do Desenvolvedor e em um PowerShell do Desenvolvedor:
Observação
A ferramenta está disponível somente com o Visual Studio Enterprise. Para cobertura de código .NET, pode-se usar, alternativamente, a ferramenta de linha de comando, 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: coletar, conectar, desligar, mesclar, criar instantâneo e desinstrumentar
A ferramenta Microsoft.CodeCoverage.Console é uma extensão da ferramenta dotnet-coverage dotnet. A documentação para os comandos collect, connect, shutdown, merge, snapshot e uninstrument pode ser encontrada aqui.
Microsoft.CodeCoverage.Console oferece suporte a recursos de segurança adicionais para permitir a coleta de dados de cobertura de código ASP.NET do IIS. Além disso, a ferramenta Microsoft.CodeCoverage.Console oferece suporte à coleta de cobertura de código para código C++. O comando instrument
é específico para esses cenários.
Comando do instrumento
O comando instrument é usado para instrumentar binários nativos ou gerenciados no disco.
Sinopse
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>
O binário de entrada.
Opções
-s|--settings <settings>
Define o caminho para as configurações de cobertura de código XML.
-id|--session-id <session-id>
Especifica o ID da sessão de cobertura de código. Se não for fornecida, a ferramenta gera um GUID aleatório.
-o|--output <output>
Define o caminho para o arquivo binário de saída. Se não for fornecida, a instrumentação será executada no local.
-l|--log-file <log-file>
Define o caminho do arquivo de log. Quando você fornece um diretório (com um separador de caminho no final), um novo arquivo de log é gerado para cada processo em análise.
-ll|--log-level <log-level>
Define o nível de log. Valores suportados:
Error
,Info
eVerbose
.-dco|--disable-console-output
Desativa a saída do console.
--nologo
Não exiba o banner de cobertura de código.
Cobertura de código estático para código C++
A ferramenta Microsoft.CodeCoverage.Console pode ser usada para coletar cobertura de código para C++ usando instrumentação estática. Há três métodos diferentes disponíveis que você pode usar. Para demonstrar, vamos supor que temos um aplicativo de console C++ simples (vinculado com a opção /PROFILE):
D:\ConsoleApplication\x64\Debug> .\ConsoleApplication.exe
Hello World!
Cobertura de código usando o comando collect com arquivo de configuração
Se você não quiser usar o comando instrument
, poderá usar um arquivo de configuração para especificar os arquivos a serem instrumentados, da seguinte maneira:
<ModulePaths>
<IncludeDirectories>
<Directory>D:\ConsoleApplication\x64\Debug</Directory>
</IncludeDirectories>
</ModulePaths>
Em seguida, colete a cobertura do código da seguinte maneira:
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 usando os comandos 'instrument' e 'collect'
Antes de coletar dados de cobertura de código, primeiro instrumente o binário da seguinte maneira:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument ConsoleApplication.exe
Input file successfully instrumented.
Em seguida, colete a cobertura do código da seguinte maneira:
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 usando os comandos "instrument" e "collect" no modo de servidor
Usando esse método, você pode separar a coleção de cobertura de código da execução do seu aplicativo. Primeiro, instrumente seu binário da seguinte maneira:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
Input file successfully instrumented.
Observação
A ID de sessão precisa ser usada neste cenário para garantir que o aplicativo possa se conectar e fornecer dados ao coletor externo.
Na segunda etapa, deve-se iniciar o coletor de cobertura de código da seguinte maneira:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4
Em seguida, inicie o aplicativo da seguinte maneira:
D:\ConsoleApplication\x64\Debug>.\ConsoleApplication.exe
Hello World!
Observação
O binário nativo instrumentado contém uma referência a static_covrun64.dll
. Verifique se esse arquivo está ao lado do binário instrumentado ou se o diretório onde static_covrun64.dll
está localizado está listado na variável de ambiente Path
. Os comandos collect
e connect
estão adicionando diretórios adequados ao Path
automaticamente.
Por fim, feche o coletor da seguinte forma:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4