CTEST_COVERAGE_COMMAND¶
在 3.1 版本加入.
在 ctest(1) 仪表板客户端脚本中指定 CTest CoverageCommand 设置。
科贝图拉¶
使用“Cobertura”作为多模块 Java 项目中的覆盖生成可以生成一系列 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 参数表示合并结果的保存位置。
组合的 coberturamerge.ser 文件然后用于使用 cobertura-report 程序生成 XML 报告。对 cobertura-report 程序的调用需要一些命名参数。
--数据文件合并的
.ser文件的路径--目的地放置输出文件的路径
--格式写入输出的文件格式:xml 或 html
其余提供的参数包括源代码树中每个模块的 /src/main/java 目录的完整路径。这些目录是必需的,不应忘记。