Sdílet prostřednictvím


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 ve složce 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. Nástroj Microsoft.CodeCoverage.Console navíc podporuje shromažďování pokrytí kódu pro kód C++.

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, Infoa Verbose.

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!

Použití pouze příkazu collect s konfigurací

Pokud nechcete příkaz používat instrument , je potřeba v konfiguračním souboru zadat soubory, které se mají instrumentovat, následujícím způsobem:

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

Pokrytí kódu pak můžete shromáždit 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.

Použití instrumentace a shromažďování příkazů

V tomto případě musí být první binární soubor instrumentován následujícím způsobem:

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

Pokrytí kódu pak můžete shromáždit 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.

Použití příkazu instrumentu a shromáždění příkazu v režimu serveru

V takovém případě můžete zcela oddělit kolekci pokrytí 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í 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

Aplikaci pak můžete spustit 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 lze kolektor uzavřít takto:

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