Strumento Microsoft.CodeCoverage.Console

Microsoft.CodeCoverage.Console è uno strumento da riga di comando. È possibile usarlo per raccogliere il code coverage per il codice C++ e C#. Supporta anche l'unione e la conversione dei report di code coverage. Questo strumento può essere usato per raccogliere code coverage in scenari non di test, ad esempio per una semplice applicazione console.

Microsoft.CodeCoverage.Console è disponibile in Visual Studio 2022 17.3 nella cartella Common7\IDE\Extensions\Microsoft\CodeCoverage.Console. È possibile usarlo in un prompt dei comandi per gli sviluppatori e in powerShell per sviluppatori:

Nota

Lo strumento è disponibile solo con Visual Studio Enterprise. Per il code coverage .NET, in alternativa è possibile usare lo strumento da riga di 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.

Raccogliere, connettere, arrestare, unire e creare snapshot comandi

Lo strumento Microsoft.CodeCoverage.Console è l'estensione dello strumento dotnet-coverage dotnet. La documentazione per i comandi collect, connect, shutdown, merge e snapshot è disponibile qui. Inoltre, lo strumento Microsoft.CodeCoverage.Console supporta la raccolta di code coverage per il codice C++.

Comando Instrument

Il comando instrument viene usato per instrumentare file binari nativi o gestiti su disco.

Riepilogo

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>

Argomenti

  • <input-file>

    Binario di input.

Opzioni

  • -s|--settings <settings>

    Imposta il percorso delle impostazioni di code coverage XML.

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

    Specifica l'ID sessione di code coverage. Se non specificato, lo strumento genererà un GUID casuale.

  • -o|--output <output>

    Imposta il percorso del file binario di output. Se non specificato, la strumentazione verrà eseguita sul posto.

  • -l|--log-file <log-file>

    Immettere il percorso del file log. Quando si specifica una directory (con un separatore di percorso alla fine), viene generato un nuovo file di log per ogni processo sottoposto ad analisi.

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

    Imposta il livello di log. Valori supportati: Error, Info e Verbose.

Code coverage statico per il codice C++

Lo strumento Microsoft.CodeCoverage.Console può essere usato per raccogliere code coverage per C++ usando la strumentazione statica. Sono disponibili tre metodi diversi che è possibile usare. Per dimostrare, si supponga di avere una semplice applicazione console C++ (collegata con l'opzione /PROFILE):

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

Uso solo del comando collect con la configurazione

Se non si vuole usare il instrument comando , è necessario specificare i file da instrumentare in un file di configurazione come indicato di seguito:

<ModulePaths>
  <IncludeDirectories>
    <Directory>D:\ConsoleApplication\x64\Debug</Directory>
  </IncludeDirectories>
</ModulePaths>

È quindi possibile raccogliere il code coverage come segue:

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.

Uso di strumento e raccolta di comandi

In questo caso, il primo file binario deve essere instrumentato come segue:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument ConsoleApplication.exe
Input file successfully instrumented.

È quindi possibile raccogliere il code coverage come segue:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect .\ConsoleApplication.exe
SessionId: e85e657f-9ff3-42a0-88d7-2349598a1ecd
Hello World!
Code coverage results: output.coverage.

Uso del comando instrumentare e raccogliere il comando in modalità server

In questo caso, è possibile separare completamente la raccolta di copertura dall'esecuzione dell'applicazione. Prima di tutto, instrumentare il file binario come segue:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
Input file successfully instrumented.

Nota

L'ID sessione deve essere usato in questo scenario per assicurarsi che l'applicazione possa connettersi e fornire dati all'agente di raccolta esterno.

Nel secondo passaggio è necessario avviare l'agente di raccolta code coverage come indicato di seguito:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4

È quindi possibile avviare l'applicazione come segue:

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

Nota

Il file binario nativo instrumentato contiene un riferimento a static_covrun64.dll. Assicurarsi che questo file sia accanto al file binario instrumentato o alla directory in cui static_covrun64.dll si trova è elencato nella Path variabile di ambiente. I collect comandi e connect aggiungono automaticamente directory Path appropriate.

Infine, l'agente di raccolta può essere chiuso nel modo seguente:

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