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>
ログ レベルを設定します。 サポートされる値:
Error
、Info
、Verbose
。
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