다음을 통해 공유


Microsoft.CodeCoverage.Console 도구

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, InfoVerbose.

  • -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 환경 변수에 나열되어 있는지 확인합니다. collectconnect 명령은 자동으로 Path 적절한 디렉터리를 추가합니다.

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

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