共用方式為


Microsoft.CodeCoverage.Console 工具

Microsoft.CodeCoverage.Console 是命令行工具,可用來收集C++和 C# 程式代碼的程式代碼涵蓋範圍。 它也支援合併和轉換程式碼覆蓋率報告。 此工具可用於在非測試案例中收集程式代碼涵蓋範圍(例如,針對簡單的控制台應用程式)。

此工具是 dotnet-coverage dotnet 工具的延伸模組,可新增下列案例的支援:

  • 新增安全性功能,以啟用從 IIS 收集 ASP.NET 程式碼涵蓋率資料。
  • 收集 C++ 程式碼的程式碼覆蓋率。

注意

此工具僅適用於Visual Studio Enterprise。 針對 .NET 程式代碼涵蓋範圍,您也可以使用命令行工具,dotnet-coverage

Microsoft.CodeCoverage.Console 位於 Common7\IDE\Extensions\Microsoft\CodeCoverage.Console資料夾下的 Visual Studio 2022 17.3 中。 您可以在開發人員命令提示字元和開發人員 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>

    指定程式代碼涵蓋範圍會話標識碼。 如果未提供,此工具會生成一個隨機的 GUID(全域唯一識別碼)。

  • -o|--output <output>

    設定輸出檔案二進位檔的路徑。 如果未提供,則會就地執行檢測。

  • -l|--log-file <log-file>

    設定記錄檔路徑。 當您提供目錄時(結尾有路徑分隔符),就會針對分析中的每個進程產生新的記錄檔。

  • -ll|--log-level <log-level>

    設定記錄層級。 支援的值:ErrorInfoVerbose

  • -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.

注意

此案例中必須使用會話標識碼,以確保應用程式可以連線並提供數據給外部收集器。

在第二個步驟中,您需要啟動程式碼涵蓋範圍收集器,如下所示:

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