Strumento Microsoft.CodeCoverage.Console
Microsoft.CodeCoverage.Console è uno strumento da riga di comando che è possibile usare 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.
Questo strumento è un'estensione dello strumento dotnet dotnet-coverage che aggiunge il supporto per i seguenti scenari:
- Aggiunge funzionalità di sicurezza per consentire la raccolta dei dati di code coverage di ASP.NET da IIS.
- Raccolta della copertura del codice per il codice C++.
Nota
Lo strumento è disponibile solo con Visual Studio Enterprise. Per la copertura del codice .NET, in alternativa è possibile usare lo strumento da riga di comando dotnet-coverage.
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:
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.
Raccogliere, connettere, arrestare, unire, creare un'istantanea e disinstallare comandi
Lo strumento Microsoft.CodeCoverage.Console è un'estensione allo strumento dotnet-coverage dotnet. La documentazione per i comandi collect, connect, shutdown, merge, snapshot e uninstrument è disponibile qui.
Microsoft.CodeCoverage.Console supporta funzionalità di sicurezza aggiuntive per consentire la raccolta dei dati di code coverage ASP.NET dal server IIS. Inoltre, lo strumento Microsoft.CodeCoverage.Console supporta la raccolta di code coverage per il codice C++. Il comando instrument
è specifico per questi scenari.
Comando Strumento
Il comando instrument viene usato per instrumentare file binari nativi o gestiti su disco.
Sinossi
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]
Argomenti
<input-file>
Binario di input.
Opzioni
-s|--settings <settings>
Imposta il percorso delle impostazioni di code coverage XML. Il file di impostazioni può essere usato per escludere alcuni moduli o metodi dall'analisi del code coverage. Il formato corrisponde alla configurazione dell'agente di raccolta dati all'interno di un file .runsettings. Per altre informazioni, vedere Personalizzare l'analisi del code coverage.
-id|--session-id <session-id>
Specifica l'ID della sessione di copertura del codice. 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>
Imposta il percorso del file di log. Quando si specifica una directory (con un separatore di percorso alla fine), viene generato un nuovo file di log per ogni processo sottoposto a analisi.
-ll|--log-level <log-level>
Imposta il livello di log. Valori supportati:
Error
,Info
eVerbose
.-dco|--disable-console-output
Disabilita l'output della console.
--nologo
Non visualizzare il banner di copertura del codice.
Copertura del codice statica 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!
Coverage del codice usando il comando Collect con il file di configurazione (C++)
Se non si vuole usare il comando instrument
, è 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 la copertura del codice 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.
Il file di impostazioni può essere usato per escludere alcuni moduli o metodi dall'analisi del code coverage. Il formato è lo stesso della configurazione del raccoglitore di dati all'interno di un file .runsettings. Per ulteriori informazioni, consultare Personalizzazione dell'analisi della copertura del codice.
Copertura del codice utilizzando i comandi strumentare e raccogliere (C++)
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 la copertura del codice 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.
Copertura del codice usando i comandi instrument e collect in modalità server (C++)
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 lo strumento di raccolta code coverage come segue:
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 si trovi accanto al file binario instrumentato o che la directory in cui si trova static_covrun64.dll
sia elencata nella variabile di ambiente Path
. I comandi collect
e connect
aggiungono automaticamente le directory appropriate a Path
.
Infine, chiudi il collettore come segue:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4