Microsoft.CodeCoverage.Console 도구

Microsoft.CodeCoverage.Console은 명령줄 도구입니다. 이 도구는 C++ 및 C# 코드에 대한 코드 검사를 수집하는 데 사용할 수 있습니다. 코드 검사 보고서 병합 및 변환도 지원합니다. 이 도구는 테스트가 아닌 시나리오(예: 간단한 콘솔 애플리케이션의 경우)에서 코드 검사를 수집하는 데 사용할 수 있습니다.

Microsoft.CodeCoverage.Console은 Common7\IDE\Extensions\Microsoft\CodeCoverage.Console 폴더 아래 Visual Studio 2022 17.3에서 사용할 수 있습니다. 이 도구는 개발자 명령 프롬프트 및 개발자 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.

Collect(수집), connect(연결), shutdown(종료), merge(병합) 및 snapshot(스냅샷) 명령

Microsoft.CodeCoverage.Console 도구는 dotnet-coverage dotnet 도구에 대한 확장입니다. collect, connect, shutdown, merge 및 snapshot 명령에 대한 설명서는 여기에서 찾을 수 있습니다. 또한 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>

    코드 검사 세션 ID를 지정합니다. 제공되지 않는 경우 이 도구는 임의의 GUID를 생성합니다.

  • -o|--output <output>

    출력 이진 파일에 대한 경로를 설정합니다. 지정하지 않으면 계측이 현재 위치에서 수행됩니다.

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

    로그 파일 경로를 설정합니다. 디렉터리(끝에 경로 구분 기호 포함)가 제공될 때 분석 중인 각 프로세스에 대해 새 로그 파일이 생성됩니다.

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

    로그 수준을 설정합니다. 지원되는 값은 Error, InfoVerbose입니다.

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.

참고

애플리케이션이 외부 수집기에 데이터를 연결하고 제공할 수 있도록 하려면 이 시나리오에서 세션 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 환경 변수에 나열되어 있는지 확인합니다. collectconnect 명령은 적절한 디렉터리를 Path에 자동으로 추가합니다.

마지막으로 다음과 같이 수집기를 닫을 수 있습니다.

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