CTEST_COVERAGE_COMMAND¶
版本 3.1 中新增。
在 ctest(1)
dashboard 客户端脚本中指定 CTest 的 CoverageCommand
设置。
Cobertura¶
在多模块 Java 项目中使用 Cobertura 作为覆盖率生成器,可以生成一系列 XML 文件。
Cobertura Coverage 解析器期望从一个包含所有模块覆盖率数据的单个 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` 目录的完整路径。需要这些目录,不应忘记。