次の方法で共有


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 では、IIS から ASP.NET コード カバレッジ データを収集できるようにするための追加のセキュリティ機能がサポートされています。 なお、Microsoft.CodeCoverage.Console ツールでは、C++ コードのコード カバレッジの収集がサポートされています。 instrument コマンドはこれらのシナリオ専用です。

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.

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.

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