Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Microsoft.CodeCoverage.Console — это средство командной строки, которое можно использовать для сбора покрытия кода для кода C++ и C#. Он также поддерживает объединение и преобразование отчетов о покрытии кода. Это средство можно использовать для сбора покрытия кода в сценариях без тестирования (например, для простого консольного приложения).
Это расширение к инструменту dotnet-coverage dotnet, которое добавляет поддержку следующих сценариев:
- Добавляет возможности безопасности для сбора данных покрытия кода ASP.NET в IIS.
- Сбор данных о покрытии кода для C++.
Заметка
Покрытие кода доступно в версиях Visual Studio Enterprise, Community и Professional. В Visual Studio 2022 и предыдущих версиях функция покрытия кода была доступна только в версии Visual Studio Enterprise.
Заметка
Покрытие кода доступно только в версии Visual Studio Enterprise. Для покрытия кода .NET можно также использовать средство командной строки, dotnet-coverage.
Microsoft.CodeCoverage.Console доступен в Visual Studio 2022 17.3 в папке Common7\IDE\Extensions\Microsoft\CodeCoverage.Console. Его можно использовать в командной строке разработчика и PowerShell разработчика:
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.
Сбор, подключение, завершение работы, слияние, моментальный снимок и ненадежные команды
Средство Microsoft.CodeCoverage.Console — это расширение инструмента dotnet-coverage dotnet. Документацию по командам сбору, подключению, завершении работы, слиянию, созданию моментального снимка и неинструментированию можно найти здесь.
Microsoft.CodeCoverage.Console поддерживает дополнительные функции безопасности, позволяя собирать данные покрытия кода ASP.NET от IIS. Кроме того, средство Microsoft.CodeCoverage.Console поддерживает сбор покрытия кода для C++. Команда instrument предназначена для этих сценариев.
Команда управления инструментом
Команда инструментирования используется для инструментирования собственного или управляемого двоичного файла на диске.
Синопсис
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]
Аргументы
<input-file>Входной двоичный код.
Параметры
-s|--settings <settings>Задает путь к параметрам покрытия XML-кода. Файл параметров можно использовать для исключения некоторых модулей или методов из анализа покрытия кода. Формат совпадает с конфигурацией сборщика данных в файле .runsettings. Для получения дополнительной информации см. раздел Настройка анализа покрытия кода.
-id|--session-id <session-id>Указывает идентификатор сеанса покрытия кода. Если это не указано, средство создает случайный GUID.
-o|--output <output>Задает путь к файлу вывода в бинарном формате. Если не указано иное, инструментирование будет выполняться на месте.
-l|--log-file <log-file>Задает путь к файлу журнала. При предоставлении каталога (с разделителем пути в конце) создается новый файл журнала для каждого процесса при анализе.
-ll|--log-level <log-level>Устанавливает уровень логирования. Поддерживаемые значения:
Error,InfoиVerbose.-dco|--disable-console-outputОтключает выходные данные консоли.
--nologoНе отображайте баннер покрытия кода.
Покрытие статического кода для кода C++
Средство Microsoft.CodeCoverage.Console можно использовать для сбора покрытия кода для C++ с помощью статического инструментирования. Существует три различных метода, которые можно использовать. Для демонстрации предположим, что у нас есть простое консольное приложение C++ (связанное с параметром /PROFILE):
D:\ConsoleApplication\x64\Debug> .\ConsoleApplication.exe
Hello World!
Покрытие кода с использованием команды сбора и файла конфигурации (C++)
Если вы не хотите использовать команду 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.
Файл параметров можно использовать для исключения некоторых модулей или методов из анализа покрытия кода. Формат совпадает с конфигурацией сборщика данных в файле .runsettings. Для получения дополнительной информации см. раздел Настройка анализа покрытия кода.
Покрытие кода с использованием команд instrument и collect (C++)
Перед сбором данных о покрытии кода сначала инструментируйте двоичный файл следующим образом:
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.
Покрытие кода с использованием команды инструментирования и команды сбора данных в серверном режиме (C++)
С помощью этого метода можно разделить коллекцию покрытия кода от запуска приложения. Сначала инструментируйте двоичный файл следующим образом:
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