Microsoft.CodeCoverage.Console tool
Microsoft.CodeCoverage.Console je nástroj příkazového řádku. Můžete ho použít ke shromažďování pokrytí kódu pro kód C++ a C#. Podporuje také sloučení a převod sestav pokrytí kódu. Tento nástroj lze použít ke shromažďování pokrytí kódu v netestových scénářích (například pro jednoduchou konzolovou aplikaci).
Microsoft.CodeCoverage.Console je k dispozici v sadě Visual Studio 2022 17.3 pod složkou Common7\IDE\Extensions\Microsoft\CodeCoverage.Console
. Můžete ho použít v příkazovém řádku pro vývojáře a v PowerShellu pro vývojáře:
Poznámka:
Nástroj je k dispozici pouze se sadou Visual Studio Enterprise. Pro pokrytí kódu .NET můžete alternativně použít nástroj příkazového řádku 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.
Shromažďování, připojení, vypnutí, slučování a vytváření snímků
Nástroj Microsoft.CodeCoverage.Console je rozšíření nástroje dotnet-coverage dotnet. Dokumentaci ke shromažďování, připojování, vypínání, slučování a vytváření snímků najdete tady.
Microsoft.CodeCoverage.Console podporuje další funkce zabezpečení, které umožňují shromažďování ASP.NET dat pokrytí kódu ze služby IIS. Nástroj Microsoft.CodeCoverage.Console navíc podporuje shromažďování pokrytí kódu pro kód C++. Příkaz instrument
je specifický pro tyto scénáře.
Instrumentace – příkaz
Příkaz instrumentace slouží k instrumentaci nativního nebo spravovaného binárního souboru na disku.
Synopse
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>
Argumenty
<input-file>
Vstupní binární soubor.
Možnosti
-s|--settings <settings>
Nastaví cestu k nastavení pokrytí kódu XML.
-id|--session-id <session-id>
Určuje ID relace pokrytí kódu. Pokud není zadaný, nástroj vygeneruje náhodný identifikátor GUID.
-o|--output <output>
Nastaví cestu k binárnímu výstupnímu souboru. Pokud není k dispozici, provede se instrumentace na místě.
-l|--log-file <log-file>
Nastaví cestu k souboru protokolu. Když zadáte adresář (s oddělovačem cest na konci), vygeneruje se pro každý proces v analýze nový soubor protokolu.
-ll|--log-level <log-level>
Nastaví úroveň protokolu. Podporované hodnoty:
Error
,Info
aVerbose
.
Pokrytí statického kódu pro kód C++
Nástroj Microsoft.CodeCoverage.Console lze použít ke shromažďování pokrytí kódu pro C++ pomocí statické instrumentace. K dispozici jsou tři různé metody, které můžete použít. Předpokládejme, že máme jednoduchou konzolovou aplikaci C++ (propojenou s možností /PROFILE):
D:\ConsoleApplication\x64\Debug> .\ConsoleApplication.exe
Hello World!
Pokrytí kódu pomocí příkazu collect s konfiguračním souborem
Pokud nechcete použít instrument
příkaz, můžete místo toho použít konfigurační soubor k určení souborů, které se mají instrumentovat, následujícím způsobem:
<ModulePaths>
<IncludeDirectories>
<Directory>D:\ConsoleApplication\x64\Debug</Directory>
</IncludeDirectories>
</ModulePaths>
Pak shromážděte pokrytí kódu následujícím způsobem:
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.
Pokrytí kódu pomocí instrumentu a shromažďování příkazů
Před shromažďováním dat pokrytí kódu nejprve instrumentujte binární soubor následujícím způsobem:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument ConsoleApplication.exe
Input file successfully instrumented.
Pak shromážděte pokrytí kódu následujícím způsobem:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect .\ConsoleApplication.exe
SessionId: e85e657f-9ff3-42a0-88d7-2349598a1ecd
Hello World!
Code coverage results: output.coverage.
Pokrytí kódu pomocí příkazu instrumentu a shromáždění příkazu v režimu serveru
Pomocí této metody můžete oddělit kolekci pokrytí kódu od spuštění aplikace. Nejprve instrumentujte binární soubor následujícím způsobem:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
Input file successfully instrumented.
Poznámka:
V tomto scénáři je potřeba použít ID relace, abyste měli jistotu, že se aplikace může připojit a poskytnout data externímu kolektoru.
V druhém kroku je potřeba spustit kolektor pokrytí kódu následujícím způsobem:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4
Pak spusťte aplikaci následujícím způsobem:
D:\ConsoleApplication\x64\Debug>.\ConsoleApplication.exe
Hello World!
Poznámka:
Instrumentovaný nativní binární soubor obsahuje odkaz na static_covrun64.dll
. Ujistěte se, že je tento soubor vedle instrumentovaného binárního souboru nebo adresáře, ve kterém static_covrun64.dll
se nachází, uvedený v Path
proměnné prostředí. Příkazy collect
automaticky connect
přidávají správné adresáře Path
.
Nakonec kolekci zavřete následujícím způsobem:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4