Condividi tramite


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.

Microsoft.CodeCoverage.Console supporta funzionalità di sicurezza aggiuntive per consentire la raccolta di ASP.NET dati di code coverage da IIS. Inoltre, lo strumento Microsoft.CodeCoverage.Console supporta la raccolta di code coverage per il codice C++. Il instrument comando è specifico di questi scenari.

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 genera 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!

Code coverage usando il comando Collect con il file di configurazione

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

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

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

Code coverage con instrument e raccogliere comandi

Prima di raccogliere i dati di code coverage, instrumentare il file binario come segue:

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

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

Code coverage usando il comando instrument e raccogliere il comando in modalità server

Usando questo metodo, è possibile separare la raccolta di code coverage 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

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

Chiudere infine l'agente di raccolta come segue:

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