Microsoft.CodeCoverage.Console은 C++ 및 C# 코드에 대한 코드 검사를 수집하는 데 사용할 수 있는 명령줄 도구입니다. 코드 검사 보고서 병합 및 변환도 지원합니다. 이 도구는 테스트가 아닌 시나리오(예: 간단한 콘솔 애플리케이션의 경우)에서 코드 검사를 수집하는 데 사용할 수 있습니다.
이 도구는 다음 시나리오에 대한 지원을 추가하는 dotnet-coverage dotnet 도구의 확장입니다.
- IIS에서 ASP.NET 코드 검사 데이터를 수집할 수 있도록 하는 보안 기능을 추가합니다.
- C++ 코드에 대한 커버리지 수집
메모
이 도구는 Visual Studio Enterprise에서만 사용할 수 있습니다. 명령줄 도구 dotnet-coverage를 사용하여 .NET 코드 검사를 수행할 수도 있습니다.
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 커버리지 dotnet 도구의 확장입니다. 수집, 연결, 종료, 병합, 스냅샷 및 비계측 명령에 대한 설명서는 여기에서 찾을 수 있습니다.
Microsoft.CodeCoverage.Console은 IIS에서 ASP.NET 코드 검사 데이터를 수집할 수 있도록 추가 보안 기능을 지원합니다. 또한 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>
코드 검사 세션 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!
구성 파일과 함께 collect 명령을 사용하는 코드 검사(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 파일 내의 데이터 수집기 구성과 동일합니다. 자세한 내용은 코드 커버리지 분석 사용자 지정을 참조하세요.
계측 및 수집 명령을 사용하는 코드 검사(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.
메모
애플리케이션이 외부 수집기를 연결하고 데이터를 제공할 수 있도록 이 시나리오에서 세션 ID를 사용해야 합니다.
두 번째 단계에서는 다음과 같이 코드 커버리지 수집기를 시작해야 합니다.
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
관련 콘텐츠
- dotnet-coverage 코드 검사 유틸리티
- 코드 검사 분석 사용자 지정
- 실행 설정 파일 사용하여 단위 테스트 구성
- 코드 커버리지를 사용하여 테스트되는 코드의 양을 결정합니다.
- 단위 테스트 코드