Udostępnij za pośrednictwem


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

  • -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