Ferramenta Microsoft.CodeCoverage.Console
Microsoft.CodeCoverage.Console é uma ferramenta de linha de comando. Você pode usá-lo para coletar a cobertura de código para código C++ e C#. Ele também dá suporte à mesclagem 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 que não sã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 um PowerShell do Desenvolvedor:
Observação
A ferramenta está disponível apenas no Visual Studio Enterprise. Para cobertura de código .NET, você pode usar a ferramenta de linha de comando, 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.
Comandos collect, connect, shutdown, merge e snapshot
A ferramenta Microsoft.CodeCoverage.Console é a extensão para a ferramenta dotnet dotnet-coverage. A documentação para os comandos collect, connect, shutdown, merge e snapshot pode ser encontrada aqui.
O Microsoft.CodeCoverage.Console dá suporte a recursos de segurança adicionais para habilitar a coleta de dados de cobertura de código ASP.NET do IIS. Além disso, a ferramenta Microsoft.CodeCoverage.Console dá suporte à coleta de cobertura de código para código C++. O comando instrument
é específico para esses cenários.
Comando instrument
O comando instrument é usado para instrumentar um binário nativo ou gerenciado no disco.
Sinopse
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>
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 a ID da sessão de cobertura de código. Se não for fornecida, a ferramenta gerará um GUID aleatório.
-o|--output <output>
Define o caminho para o binário do arquivo de saída. Se ele não for fornecido, a instrumentação será executada in-loco.
-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 do log. Os valores compatíveis são:
Error
,Info
eVerbose
.
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 à 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 ao instrumento da seguinte maneira:
<ModulePaths>
<IncludeDirectories>
<Directory>D:\ConsoleApplication\x64\Debug</Directory>
</IncludeDirectories>
</ModulePaths>
Em seguida, colete a cobertura de 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 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 de 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 o comando instrument e o comando collect no modo de servidor
Usando este método, você pode separar a coleta de cobertura de código da execução de seu aplicativo. Primeiro, instrumente o 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 da sessão precisa ser usada nesse cenário para garantir que o aplicativo possa se conectar e fornecer dados ao coletor externo.
Na segunda etapa, você precisa 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 do diretório em que static_covrun64.dll
está localizado está listado na variável de ambiente Path
. Os comandos collect
e connect
estão adicionando automaticamente diretórios adequados a Path
.
Por fim, feche o coletor da seguinte maneira:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4