Программа 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 поддерживает дополнительные функции безопасности, позволяющие собирать данные ASP.NET покрытия кода из IIS. Кроме того, программа Microsoft.CodeCoverage.Console поддерживает сбор данных об объеме протестированного кода C++. Эта instrument
команда зависит от этих сценариев.
Команда 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!
Покрытие кода с помощью команды сбора с помощью файла конфигурации
Если вы не хотите использовать 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.
Покрытие кода с помощью инструментирования и сбора команд
Перед сбором данных покрытия кода сначала инструментирует двоичный файл следующим образом:
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.
Покрытие кода с помощью команды инструментирования и сбора команд в режиме сервера
С помощью этого метода можно разделить коллекцию покрытия кода от запуска приложения. Сначала инструментируйте двоичный файл следующим образом:
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