Microsoft.CodeCoverage.Console narzędzie
Microsoft.CodeCoverage.Console to narzędzie wiersza polecenia, którego można użyć do zbierania pokrycia kodu dla kodu C++ i C#. Obsługuje również scalanie i konwertowanie raportów pokrycia kodu. To narzędzie może służyć do zbierania pokrycia kodu w scenariuszach nietestowych (na przykład w przypadku prostej aplikacji konsolowej).
To narzędzie jest rozszerzeniem dotnet-coverage dotnet tool, które dodaje obsługę następujących scenariuszy:
- Dodaje funkcje zabezpieczeń umożliwiające zbieranie danych pokrycia kodu ASP.NET z serwera IIS.
- Zbieranie pokrycia kodu dla kodu C++.
Notatka
Narzędzie jest dostępne tylko w programie Visual Studio Enterprise. W przypadku pokrycia kodu dla .NET można również użyć narzędzia wiersza polecenia, dotnet-coverage.
Microsoft.CodeCoverage.Console jest dostępny w programie Visual Studio 2022 17.3 w folderze Common7\IDE\Extensions\Microsoft\CodeCoverage.Console
. Można go używać w wierszu polecenia dla deweloperów i w programie PowerShell dla deweloperów:
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.
Zbieranie, łączenie, zamykanie, scalanie, migawka i polecenia uninstrument
Narzędzie Microsoft.CodeCoverage.Console jest rozszerzeniem narzędzia dotnet-coverage dotnet. Dokumentacja dotycząca zbierania, łączenia, zamykania, scalania, migawek i poleceń nieinstrumentowania można znaleźć tutaj.
Program Microsoft.CodeCoverage.Console zapewnia dodatkowe mechanizmy zabezpieczeń umożliwiające zbieranie danych pokrycia kodu ASP.NET z usług IIS. Ponadto narzędzie Microsoft.CodeCoverage.Console obsługuje zbieranie pokrycia kodu dla kodu C++. Polecenie instrument
jest specyficzne dla tych scenariuszy.
Instrument polecenie
Polecenie instrument jest używane do instrumentowania natywnych lub zarządzanych danych binarnych na dysku.
Streszczenie
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]
Argumenty
<input-file>
Wejściowy plik binarny.
Opcje
-s|--settings <settings>
Ustawia ścieżkę do ustawień pokrycia kodu XML. Plik ustawień może służyć do wykluczania niektórych modułów lub metod z analizy pokrycia kodu. Format jest taki sam jak konfiguracja modułu zbierającego dane w pliku .runsettings. Aby uzyskać więcej informacji, zobacz Dostosowanie analizy pokrycia kodu.
-id|--session-id <session-id>
Określa identyfikator sesji pokrycia kodu. Jeśli nie zostanie podana, narzędzie generuje losowy identyfikator GUID.
-o|--output <output>
Ustawia ścieżkę do pliku wyjściowego binarnego. Jeśli nie zostanie dostarczone, instrumentacja zostanie wykonana na miejscu.
-l|--log-file <log-file>
Ustawia ścieżkę pliku dziennika. Po podaniu katalogu (z separatorem ścieżki na końcu) dla każdego procesu analiz generowany jest nowy plik dziennika.
-ll|--log-level <log-level>
Ustawia poziom rejestrowania. Obsługiwane wartości:
Error
,Info
iVerbose
.-dco|--disable-console-output
Wyłącza dane wyjściowe konsoli.
--nologo
Nie wyświetlaj baneru pokrycia kodu.
Statyczne pokrycie kodu dla kodu C++
Narzędzie Microsoft.CodeCoverage.Console może służyć do zbierania pokrycia kodu dla języka C++ przy użyciu instrumentacji statycznej. Dostępne są trzy różne metody. Załóżmy, że mamy prostą aplikację konsolową języka C++ (połączoną z opcją /PROFILE):
D:\ConsoleApplication\x64\Debug> .\ConsoleApplication.exe
Hello World!
Pokrycie kodu za pomocą polecenia collect z plikiem konfiguracji (C++)
Jeśli nie chcesz używać polecenia instrument
, możesz zamiast tego użyć pliku konfiguracji, aby określić pliki do instrumentowania w następujący sposób:
<ModulePaths>
<IncludeDirectories>
<Directory>D:\ConsoleApplication\x64\Debug</Directory>
</IncludeDirectories>
</ModulePaths>
Następnie zbierz pokrycie testami kodu w następujący sposób:
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.
Plik ustawień może służyć do wykluczania niektórych modułów lub metod z analizy pokrycia kodu. Format jest taki sam jak konfiguracja modułu zbierającego dane w pliku .runsettings. Aby uzyskać więcej informacji, zobacz Dostosowywanie analizy pokrycia kodu.
Pokrycie kodu za pomocą poleceń 'instrument' i 'collect' (C++)
Przed zebraniem danych dotyczących pokrycia kodu najpierw zinstrumentuj plik binarny w następujący sposób:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument ConsoleApplication.exe
Input file successfully instrumented.
Następnie zbierz pokrycie testami kodu w następujący sposób:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect .\ConsoleApplication.exe
SessionId: e85e657f-9ff3-42a0-88d7-2349598a1ecd
Hello World!
Code coverage results: output.coverage.
Pokrycie kodu za pomocą polecenia instrument i zbieranie poleceń w trybie serwera (C++)
Przy użyciu tej metody można oddzielić kolekcję pokrycia kodu od uruchamiania aplikacji. Najpierw instrumentuj plik binarny w następujący sposób:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
Input file successfully instrumented.
Notatka
Identyfikator sesji musi być używany w tym scenariuszu, aby upewnić się, że aplikacja może łączyć się z zewnętrznym modułem zbierającym i dostarczać dane.
W drugim kroku należy uruchomić moduł zbierający pokrycie kodu w następujący sposób:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4
Następnie uruchom aplikację w następujący sposób:
D:\ConsoleApplication\x64\Debug>.\ConsoleApplication.exe
Hello World!
Notatka
Instrumentowany natywny plik binarny zawiera odwołanie do static_covrun64.dll
. Upewnij się, że ten plik znajduje się obok instrumentowanego pliku binarnego lub katalog, w którym znajduje się static_covrun64.dll
, jest uwzględniony w zmiennej środowiskowej Path
. Polecenia collect
i connect
automatycznie dodają odpowiednie katalogi do Path
.
Na koniec zamknij kolektor w następujący sposób:
D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4