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