CTEST_COVERAGE_COMMAND

在版本 3.1 中新增。

ctest(1) 儀表板客戶端腳本中,指定 CTest CoverageCommand 設定。

Cobertura

在您的多模組 Java 專案中使用 Cobertura 作為覆蓋率產生工具,可能會產生一系列 XML 檔案。

Cobertura 覆蓋率解析器預期從單個 XML 檔案中讀取覆蓋率資料,該檔案包含所有模組的覆蓋率資料。Cobertura 有一個程式可以合併給定的 cobertura.ser 檔案,然後另一個程式可以從先前的合併檔案產生合併的 XML 檔案。對於命令列測試,可以在 CTest 尋找覆蓋率檔案之前手動完成。對於腳本建置,請設定 CTEST_COVERAGE_COMMAND 變數,使其指向將執行這些相同步驟的檔案,例如 .sh.bat 檔案。

set(CTEST_COVERAGE_COMMAND .../run-coverage-and-consolidate.sh)

其中 run-coverage-and-consolidate.sh 腳本可能是由 configure_file() 命令建立的,並且可能包含以下程式碼

#!/usr/bin/env bash
CoberturaFiles="$(find "/path/to/source" -name "cobertura.ser")"
SourceDirs="$(find "/path/to/source" -name "java" -type d)"
cobertura-merge --datafile coberturamerge.ser $CoberturaFiles
cobertura-report --datafile coberturamerge.ser --destination . \
                 --format xml $SourceDirs

該腳本使用 find 來擷取專案來源目錄下找到的所有 cobertura.ser 檔案的路徑。它保留檔案清單,並將其作為 cobertura-merge 程式的引數提供。--datafile 引數表示合併結果將保留的位置。

然後使用合併的 coberturamerge.ser 檔案,使用 cobertura-report 程式產生 XML 報告。對 cobertura-report 程式的呼叫需要一些具名引數。

--datafila

合併的 .ser 檔案的路徑

--destination

放置輸出檔案的路徑

--format

寫入輸出的檔案格式:xml 或 html

其餘提供的引數包含來源樹中每個模組的 /src/main/java 目錄的完整路徑。這些目錄是必要的,不應忘記。