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
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!
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
Contenuto correlato
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per