Microsoft.CodeCoverage.Console ツール

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

Microsoft.CodeCoverage.Console は、フォルダー Common7\IDE\Extensions\Microsoft\CodeCoverage.Console の Visual Studio 2022 17.3 にあります。 開発者コマンド プロンプトと開発者 PowerShell で使用できます。

Note

ツール は、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.

収集、接続、シャットダウン、マージ、スナップショット コマンド

Microsoft.CodeCoverage.Console ツールは、dotnet-coverage dotnet ツールの拡張機能です。 収集、接続、シャットダウン、マージ、スナップショットのコマンドに関するドキュメントについては、こちらを参照してください。 なお、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>

    ログ レベルを設定します。 サポートされる値: ErrorInfoVerbose

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

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

インストルメントと収集コマンドの使用

この場合、最初のバイナリは次のようにインストルメント化する必要があります。

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.

Note

アプリケーションを接続して外部コレクターにデータを提供できるようにするには、このシナリオでセッション 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!

Note

インストルメント化されたネイティブ バイナリには、static_covrun64.dll への参照が含まれます。 このファイルがインストルメント化されたバイナリの隣にあるか、または static_covrun64.dll があるディレクトリが Path 環境変数に一覧表示されていることを確認します。 collect および connect コマンドは、自動的に適切なディレクトリを Path に追加します。

最後に、コレクターを次のように終了できます。

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