Microsoft.CodeCoverage.Console, narzędzie

Microsoft.CodeCoverage.Console to narzędzie wiersza polecenia. Można go 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).

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:

Uwaga

Narzędzie jest dostępne tylko w programie Visual Studio Enterprise. W przypadku pokrycia kodu platformy .NET można również użyć narzędzia wiersza polecenia 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.

Polecenia zbierania, łączenia, zamykania, scalania i migawek

Narzędzie Microsoft.CodeCoverage.Console jest rozszerzeniem narzędzia dotnet-coverage dotnet. Dokumentacja dotycząca poleceń zbierania, łączenia, zamykania, scalania i migawek można znaleźć tutaj. Ponadto narzędzie Microsoft.CodeCoverage.Console obsługuje zbieranie pokrycia kodu dla kodu C++.

Instrument , polecenie

Polecenie instrument jest używane do instrumentowania natywnych lub zarządzanych danych binarnych na dysku.

Streszczenie

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>

    Wejściowy plik binarny.

Opcje

  • -s|--settings <settings>

    Ustawia ścieżkę do ustawień pokrycia kodu XML.

  • -id|--session-id <session-id>

    Określa identyfikator sesji pokrycia kodu. Jeśli nie zostanie podany, narzędzie wygeneruje losowy identyfikator GUID.

  • -o|--output <output>

    Ustawia ścieżkę do pliku wyjściowego binarnego. Jeśli nie zostanie podana, instrumentacja zostanie wykonana w 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 dziennika. Obsługiwane wartości: Error, Infoi Verbose.

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!

Używanie tylko polecenia collect z konfiguracją

Jeśli nie chcesz używać instrument polecenia , należy określić pliki do instrumentowania w pliku konfiguracji w następujący sposób:

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

Następnie możesz zebrać pokrycie 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.

Używanie instrumentu i zbieranie poleceń

W takim przypadku najpierw należy instrumentować dane binarne w następujący sposób:

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

Następnie możesz zebrać pokrycie 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.

Używanie polecenia instrument i zbieranie poleceń w trybie serwera

W takim przypadku można całkowicie oddzielić kolekcję pokrycia 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.

Uwaga

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 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 aplikację można uruchomić w następujący sposób:

D:\ConsoleApplication\x64\Debug>.\ConsoleApplication.exe
Hello World!

Uwaga

Instrumentowany natywny plik binarny zawiera odwołanie do static_covrun64.dllelementu . Upewnij się, że ten plik znajduje się obok instrumentowanego pliku binarnego lub katalogu, w którym static_covrun64.dll znajduje się, znajduje się w zmiennej środowiskowej Path . Polecenia collect i connect dodają odpowiednie katalogi do Path automatycznego.

Na koniec moduł zbierający można zamknąć w następujący sposób:

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