cmreport – 代码覆盖率报告生成
cmreport 是一个工具,可以从一个 instrument 数据库(一个 .csmes 文件)生成文本、HTML、XML 或 CSV 报告。它生成的报告与 CoverageBrowser 生成的报告完全相同(见 报告生成)。
最简单的用例是从单个 instrument 数据库生成 HTML 报告。如果文件名为 project.csmes,我们可以编写
$ cmreport --csmes=project.csmes --html=report
此命令将创建一个名为 report.html 的文件和一个名为 report_html 的目录。文件 report.html 是报告的主页,可以用浏览器打开,而 report_html 包含所有其他文件。大多数其他命令行选项只是修改了这样的报告的内容。
语法
cmreport -m <csmes_file> ...
选项
-m<filename> |--csmes=<filename>: 设置主.csmes文件名称(必须)。-p<filename> |--patch=<filename>: 启用补丁/差异文件分析。<filename> 是一个使用 统一差异 格式的文件(见 差异文件生成)。文件必须包含.csmes文件覆盖目录树中的文件与同一目录树的修改版本之间的差异。补丁报告可以以 CSV 和 HTML 格式生成。使用
--section选项(见 HTML 或 CSV 报告的选项)可以选择显示报告的哪些部分。--source-type=<argument>: 用于分析的数据源类型。可能的值preprocessed: 分析预处理的代码。original: 分析原始源代码。在此模式下忽略 C 宏。
-l<number> |--level=<number>: 设置代码覆盖率级别。<number> 必须是一个大于 0 的整数。--max-threads=<数字>:用于报表计算的线程的最大数量。默认情况下,线程数量与系统中的CPU数量相同。--stat:将全局覆盖率统计信息打印到标准输出。--max-lines-per-page=<数字>:HTML表中每页的最大行数。@<路径>:从位于<路径>的文件中读取命令行选项,并将其插入到本选项的位置。选项文件是每行一个选项的文本文件。忽略前导和尾随空白以及空行。
文件选择选项
以下选项指定在报表中显示的源文件。
--include-file-abs-regex=<正则表达式>:将与正则表达式<正则表达式>匹配的源文件包含在报表中。--exclude-file-abs-regex=<正则表达式>:将与正则表达式<正则表达式>匹配的源文件从报表中排除。--include-file-abs-wildcard=<通配符>:将匹配通配符模式<通配符>的源文件包含在报表中。--exclude-file-abs-wildcard=<通配符>:将匹配通配符模式<通配符>的源文件从报表中排除。--sources-without-instrumentation:包含带有插桩但不包含任何要覆盖的代码的源文件。
如果有两个或更多选项匹配文件,则最后一个选项决定是否包含或排除。有关正则表达式和通配符语法的语法,请参阅使用通配符或正则表达式进行过滤。
执行选择选项
以下选项指定报表中发生的执行。
-s<正则表达式> |--select=<正则表达式>:使用正则表达式选择执行。如果未使用,则隐式选择所有执行。-d<正则表达式> |--deselect=<正则表达式>:使用正则表达式取消选择执行。--deselect-to-check:取消选择状态为CHECK_MANUALLY的所有执行。--select-passed:选择状态为PASSED的所有执行。--deselect-passed:取消选择状态为PASSED的所有执行。--select-failed:选择状态为FAILED的所有执行。--deselect-failed:取消选择状态为FAILED的所有执行。--select-unknown:选择未知状态的所有执行。--deselect-unknown:取消选择未知状态的所有执行。--executions-reference-from-csmes=<参数>:选择指定<参数>的.csmes文件中存在的所有执行。
版本比较
使用以下选项,可以比较两个版本的覆盖率。
-mr<文件名> |--csmes-reference=<文件名>:设置<文件名>的.csmes参考文件。使用此选项,cmreport比较两个软件版本。--release-comparison=<参数>:比较两个软件版本时的比较模式。可能的值none:仅显示两个软件版本之间的差异。modified_functions:仅显示修改函数的覆盖率。unmodified_functions:仅显示相同函数的覆盖率。
-sr<正则表达式> |--select-reference=<正则表达式>:使用正则表达式选择参考执行。此选项激活执行比较。-dd<正则表达式> |--deselect-reference=<正则表达式>:使用正则表达式取消选择参考执行。此选项激活执行比较。--deselect-to-check-reference: 取消选中全部具有CHECK_MANUALLY状态的参考执行。--select-passed-reference: 选中全部具有PASSED状态的参考执行。--deselect-passed-reference: 取消选中全部具有PASSED状态的参考执行。--select-failed-reference: 选中全部具有FAILED状态的参考执行。--deselect-failed-reference: 取消选中全部具有FAILED状态的参考执行。--select-unknown-reference: 选中所有状态未知的参考执行。--deselect-unknown-reference: 取消选中所有状态未知的参考执行。
HTML 或 CSV 报告选项
命令行参数
-h<filename> |--html=<filename>: 生成多页面上 HTML 报告。报告包括一个文件 <file_name>.
html,指向报告的索引文件,以及一个目录 <file_name>_html,其中包含报告中的所有其他文件。如果 <filename> 以
.html结尾,则忽略扩展名,因此不会生成以双html结尾的文件名或目录。--html-single=<filename>: 作为文件 <filename> 生成单个 HTML 报告。如果 <filename> 不以
.html结尾,将自动添加。--csv-excel=<filename>: 生成 CSV 报告。报告格式用于 Excel 和 OpenOffice。如果 <filename> 不以
.csv结尾,将自动添加。--title=<string>: 设置报告的标题。--execution-level=<number>: 设置所需的代码覆盖率级别为 <number>。只有在至少执行 <number> 次的情况下,才会将代码段计入生成的报告中。默认级别为 1。
--section=<section_name>: 选择生成的报告的章节。此选项可以重复使用以选择多种章节类型。如果没有选择任何内容,cmreport 将自动生成所有相关章节。以下章节是可能的
global: 全局统计function: 函数统计function-tree: 带统计的功能树class: 类/命名空间统计execution: 执行统计source: 源文件统计source-tree: 带统计的源树directory: 目录文件统计manually-validated: 手动验证的代码片段unexecuted: 未执行的代码片段dead-code: 死代码片段executed: 执行的代码片段
如果使用
--patch选项,则还有以下章节是可能的。patch-execution-statistic: 补丁的全局执行统计patch-source-statistic: 补丁的全局源代码统计patch-execution: 受补丁影响的执行patch-source: 标注的补丁文件patch-source-instrumented: 仅针对已加固文件的标注补丁文件
有关这些章节的内容,请参阅 补丁分析。默认情况下,如果没有设置
--section选项,它们都会出现在报告中。--coverage-mcc: 报告多个条件代码覆盖率测量。--coverage-mcdc: 报告MC/DC覆盖率测量。--coverage-condition: 报告条件覆盖率测量。--coverage-decision: 报告决策覆盖率测量。-b | --coverage-statement-block: 报告语句(代码块)覆盖率测量。--line-coverage: 报告行覆盖率测量。--function-coverage: 报告函数覆盖率测量。--coverage-line: 报告行覆盖率测量(等同于--line-coverage)。--coverage-function: 报告函数覆盖率测量(等同于--function-coverage)。-t | --test-coverage: 测试计数模式-D | --debug: 调试标志--no-line-metrics: 不报告eLOC(有效代码行数)指标。--no-mccabe-metrics: 不报告McCabe(或圈复杂度)指标。--mccabe-group-case-metrics: 以合并的case形式报告McCabe指标(或圈复杂度)。--mccabe-condensed-switches-metrics: 以压缩的switch形式报告McCabe指标(或圈复杂度)。
仅限于HTML的选项
--css=<filename>: CSS样式表--icon=<filename>: 图标--global-threshold-low-medium=<num>: 全局阈值设置--global-threshold-medium-high=<num>: 全局阈值设置--source-threshold-low-medium=<num>: 源/目录阈值设置--source-threshold-medium-high=<num>: 源/目录阈值设置--function-threshold-low-medium=<num>: 函数、类或命名空间阈值设置--function-threshold-medium-high=<num>: 函数、类或命名空间阈值设置
仅限于CSV的选项
--csv-field-separator=<char>: CSV文件的字段分隔符--csv-comma=<char>: CSV文件中用于浮点数的分隔符(逗号或点)
文本报告选项
命令行参数
-t<filename> |--text=<filename>: 文本报告输出文件名--format-executed=<argument>: 代码片段执行的行格式--format-unexecuted=<argument>: 代码片段未执行的行格式--format-manually=<argument>: 手动验证的代码片段的行格式--format-dead-code=<argument>: 不可执行代码片段的行格式
以下为支持的转义序列
%f: 绝对源代码文件名%r: 相对于当前构建目录的源代码文件名%l: 行号%c: 列号%m: 说明%t: 源代码片段%e: 运行插件的测试列表
可以将输出文件设置为空字符串(即:--text=),在这种情况下使用控制台的默认输出。
EMMA-XML报告选项
生成EMMA XML格式的报告时使用以下选项
--emma=<filename>: 生成EMMA-XML报告。 <filename>是生成的XML文件名。--emma-source-pattern=<argument>: EMMA-XML报告的源文件模式。--emma-package-pattern=<argument>: EMMA-XML报告的包名模式。
模式有以下格式
%f:文件名(不含路径)%b:不含路径和扩展名的文件名%e:文件扩展名%p:文件路径(不含文件名)%P:绝对文件路径(不含文件名)
注意: 对于 Jenkins-CI 用户,不建议使用最后两个参数。默认值被选择以配合 EMMA-XML 插件。
JUnit 报告选项
命令行参数
-j<filename> |--junit=<filename>:生成 JUnit 报告
JUnit 报告不包含任何代码覆盖率信息。报告仅列出执行过的测试、它们的状态(通过或失败)和它们的注释。
Coberatura 报告选项
要生成 Coberatura 报告,您需要指定以下选项中的前两个或最后一个:
--cobertura=<file>:生成 Coberatura-XML 报告。<file> 是生成的输出文件路径。--cobertura-azure-devops:为 Azure DevOps 生成 Coberatura-XML 报告。--cobertura-manual-validation-hits=<int>:对于手动验证,在 Coberatura-XML 报告中设置行覆盖率命中数。--cobertura-source=<directory>:生成 Coberatura-XML 报告时,源代码的根目录。此选项在存在
--cobertura时是必需的;否则没有意义。--sonarqube-project=<path>:为 SonarQube 项目生成 Coberatura-XML 报告。<path> 是
sonar-project.properties文件的路径。项目的根目录从这个文件的位置确定。然后从其内容中提取输出 XML 文件的路径。这是sonar.cxx.coverage.reportPath、sonar.cxx.coverage.itReportPath或sonar.cxx.coverage.overallReportPath属性的值。设置这些属性中的任何一个都有相同的效果。注意: 为了读取 Cobertura-XML 报告,SonarQube 需要一个第三方插件,这个插件可能不是每个安装中都可用。您可以使用下面的 SonarQube 报告选项,它根据 SonarQube 的通用测试覆盖率格式生成报告。
SonarQube 报告选项
以下选项用于生成 SonarQube-XML 报告
--sonarqube=<file>:生成 SonarQube-XML 报告。<file> 是生成的输出文件路径。--sonarqube-report=<file>:等同于--sonarqube。它提供向后兼容性。--sonarqube-source=<directory>:生成 SonarQube-XML 报告时,源代码的根目录。它用于确定报告中源文件的相对路径。当存在
--sonarqube或--sonarqube-report时,此选项是必需的;否则没有意义。--sonarqube-manual-validation:将手动验证包含在 SonarQube-XML 报告中的行覆盖率。
Coco v7.2.0©2024 The Qt Company Ltd.
Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和/或其他国家/地区的商标。所有其他商标均为其各自所有者的财产。