CTEST_COVERAGE_COMMAND

在 3.1 版中增加。

ctest(1) 仪表板客户端脚本中指定 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 参数表示合并结果将保存在何处。

然后使用合并后的 coberturamerge.ser 文件,通过 cobertura-report 程序生成 XML 报告。对 cobertura-report 程序的调用需要一些命名参数。

--datafila

合并后的 .ser 文件的路径

--destination

放置输出文件路径

--format

写出输的内容的文件格式:xml 或 html

提供的其余参数由源树中每个模块的 /src/main/java 目录的完整路径组成。这些目录是必需的,切勿忘记它们。