Compartilhar via


Ferramenta Microsoft.CodeCoverage.Console

Microsoft.CodeCoverage.Console é uma ferramenta de linha de comando que você pode usar para coletar 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).

Essa ferramenta é uma extensão da ferramenta dotnet dotnet-coverage que estende o suporte para os seguintes cenários:

  • Adiciona recursos de segurança para habilitar a coleta de dados de cobertura de código ASP.NET no IIS.
  • Coletando cobertura de código para código C++.

Nota

A ferramenta está disponível apenas com o Visual Studio Enterprise. Para cobertura de código do .NET, como alternativa, você pode usar a ferramenta de linha de comando, dotnet-coverage.

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:

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 collect, connect, shutdown, merge, snapshot, e uninstrument

A ferramenta Microsoft.CodeCoverage.Console é uma extensão para a ferramenta dotnet dotnet-coverage. A documentação para os comandos collect, connect, shutdown, merge, snapshot, e uninstrument 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 do ASP.NET a partir 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 de instrumento

O comando instrument é usado para instrumentar um binário nativo ou gerenciado 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. O arquivo de configurações pode ser usado para excluir alguns módulos ou métodos da análise de cobertura de código. O formato é o mesmo que a configuração do coletor de dados dentro de um arquivo de .runsettings. Para obter mais informações, confira Personalizar a análise de cobertura de código.

  • -id|--session-id <session-id>

    Especifica a ID da sessão de cobertura de código. Se não for fornecido, 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. Valores com suporte: Error, Infoe Verbose.

  • -dco|--disable-console-output

    Desabilita 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 à opção /PROFILE):

D:\ConsoleApplication\x64\Debug> .\ConsoleApplication.exe
Hello World!

Cobertura de código com o uso do comando collect e o arquivo de configuração (C++)

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

O arquivo de configurações pode ser usado para excluir alguns módulos ou métodos da análise de cobertura de código. O formato é o mesmo que a configuração do coletor de dados dentro de um arquivo de .runsettings. Para obter mais informações, confira Personalizar a análise de cobertura de código.

Cobertura de código usando comandos de instrumentação e coleta (C++)

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 de instrumentação e o comando de coleta no modo servidor (C++)

Usando esse método, você pode separar a coleção de cobertura de código da execução do 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.

Nota

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.

No segundo passo, 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!

Nota

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 diretórios adequados para Path automaticamente.

Por fim, feche o coletor da seguinte maneira:

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