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
目錄的完整路徑。這些目錄是必要的,不應忘記。