Программа Microsoft.CodeCoverage.Console

Microsoft.CodeCoverage.Console — это программа командной строки. Ее можно использовать для сбора данных о объеме протестированного кода C++ и C#. Она также поддерживает отчеты об объеме протестированного кода для объединения и преобразования. Эту программу можно использовать в нетестовых сценариях (например, для простого консольного приложения).

Программа Microsoft.CodeCoverage.Console доступна в Visual Studio 2022 17.3 в папке Common7\IDE\Extensions\Microsoft\CodeCoverage.Console. Ее можно использовать в Командной строке разработчика и в PowerShell для разработчиков:

Примечание.

Средство доступно только в Visual Studio Enterprise. Для покрытия кода .NET можно также использовать средство командной строки 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.

Команды сбора, подключения, завершения работы, объединения и создания моментальных снимков

Программа Microsoft.CodeCoverage.Console является расширением средства dotnet-coverage dotnet. Документацию по командам сбора, подключения, завершения работы, объединения и создания моментальных снимков можно найти здесь. Кроме того, программа Microsoft.CodeCoverage.Console поддерживает сбор данных об объеме протестированного кода C++.

Команда instrument

Команда инструментирования используется для инструментирования собственного или управляемого двоичного файла на диске.

Краткие сведения

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>

Аргументы

  • <input-file>

    Входной двоичный файл.

Параметры

  • -s|--settings <settings>

    Задает путь к параметрам покрытия кода XML.

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

    Задает идентификатор сеанса для объема протестированного кода. Если этот параметр не указан, средство создаст случайный идентификатор GUID.

  • -o|--output <output>

    Задает путь к двоичному файлу вывода. Если это не указано, инструментирование будет выполняться на месте.

  • -l|--log-file <log-file>

    Установка пути к файлу журнала. Когда вы указываете каталог (с разделителем пути в конце), создается новый файл журнала для каждого процесса в изучаемой области.

  • -ll|--log-level <log-level>

    Задает уровень ведения журнала. Поддерживаемые значения: Error, Info и Verbose.

Статический объем протестированного кода C++

Программу Microsoft.CodeCoverage.Console можно применять для сбора данных об объеме протестированного кода C++ с помощью статического инструментирования. Существует три различных способа. Для примера предположим, что у нас есть простое консольное приложение C++ (связанное с параметром /PROFILE):

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

Использование только команды collect с конфигурацией

Если вы не хотите использовать команду instrument, необходимо указать файлы для инструментирования в файле конфигурации:

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

Затем можно собирать данные об объеме протестированного кода следующим образом:

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.

Использование команд instrument и collect

В этом случае необходимо инструментировать первый двоичный файл:

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

Затем можно собирать данные об объеме протестированного кода следующим образом:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect .\ConsoleApplication.exe
SessionId: e85e657f-9ff3-42a0-88d7-2349598a1ecd
Hello World!
Code coverage results: output.coverage.

Использование команд instrument и collect в серверном режиме

В этом случае можно полностью отделить сбор данных о протестированном объеме от запуска приложения. Сначала инструментируйте двоичный файл следующим образом:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 ConsoleApplication.exe
Input file successfully instrumented.

Примечание.

В этом сценарии необходимо использовать идентификатор сеанса, чтобы убедиться, что приложение может подключаться к внешнему сборщику и предоставлять данные.

На втором шаге необходимо запустить сборщик данных о протестированном объеме:

D:\ConsoleApplication\x64\Debug>Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
SessionId: 73c34ce5-501c-4369-a4cb-04d31427d1a4

Затем приложение можно запустить следующим образом:

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

Примечание.

Инструментированные собственные двоичные данные содержат ссылку на static_covrun64.dll. Убедитесь, что этот файл находится рядом с инструментированным двоичным файлом или что каталог, где находится static_covrun64.dll, указан в переменной среды Path. Команды collect и connect автоматически добавляют правильные каталоги в Path.

Теперь сборщик можно закрыть:

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