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 参数表示将把合并结果保存在哪里。
然后使用 cobertura-report 程序使用组合的 coberturamerge.ser 文件生成 XML 报告。对 cobertura-report 程序的调用需要一些命名参数。
--datafila合并的
.ser文件的路径--destination放置输出文件(s)的路径
--format要写入输出的文件格式:xml 或 html
其余提供的参数包括源树中每个模块的 /src/main/java 目录的完整路径。需要这些目录,不应忘记。