次の方法で共有


Microsoft.CodeCoverage.Console ツール

Microsoft.CodeCoverage.Console は、C++ および C# コードのコード カバレッジを収集するために使用できるコマンドライン ツールです。 また、コード カバレッジ レポートのマージと変換もサポートしています。 このツールを使用すると、非テスト シナリオ (単純なコンソール アプリケーションなど) でコード カバレッジを収集できます。

このツールは、dotnet-coverage dotnet ツールの拡張機能であり、次のシナリオをサポートします。

  • ASP.NET のコード カバレッジ データを IIS から収集できるようにするセキュリティ機能を追加します。
  • C++コードのコード カバレッジの収集。

手記

このツールは、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 では、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>

    ログ レベルを設定します。 サポートされている値: ErrorInfo、および Verbose

  • -dco|--disable-console-output

    コンソール出力を無効にします。

  • --nologo

    コードカバレッジのバナーを表示しないでください。

C++ コードの静的コード カバレッジ

Microsoft.CodeCoverage.Console ツールを使用すると、静的インストルメンテーションを使用して C++ のコード カバレッジを収集できます。 使用できる方法は 3 つあります。 デモンストレーションを行うために、単純な 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 を使用する必要があります。

2 番目の手順では、次のようにコード カバレッジ コレクターを起動します。

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