gcc - 如何合并覆盖率报告?
问题描述
我有一个 C 程序,我用 -fprofile-arcs -ftest-coverage 标志编译它。然后我在 5 个不同的输入上运行程序,这将覆盖 .gcda 文件并给我一个组合报告。但我想要覆盖单个测试的报告并将它们存储在一个文件夹中,当我在此文件夹上运行任何覆盖工具时,我会得到每个测试的报告以及一个组合报告。有没有办法做到这一点?
解决方案
两者都gcovr
可以lcov
合并多次运行的覆盖率数据,但 gcov 没有内置功能。
Gcovr 5.0 添加了-a/--add-tracefile
可用于合并多个覆盖运行的选项。每次测试后,使用 gcovr 创建 JSON 报告。之后,您可以使用gcovr -a cov1.json -a cov2.json
合并多个覆盖数据集并以您选择的格式生成报告。您可以根据需要添加任意数量的输入 JSON 文件,gcovr -a 'coverage-*.json'
如果您有很多文件,可以使用 glob 模式(如 )。
您还可以考虑使用该lcov
工具及其--add-tracefile
选项是否可行:您可以在每次测试后运行 lcov 以生成 lcov-tracefile(您可以使用 genhtml 将其转换为 HTML 报告)。之后,您可以将跟踪文件合并为一个组合报告。不能将 lcov 的跟踪文件与 gcovr 一起使用。
推荐阅读
- java - 在 Json 响应中格式化字符串
- mongodb - 我正在学习 express 和 mongoose,我无法获得要保存的模式,但可以使用 console.log() 看到它
- apache-flink - 流处理:应该多久启动一次检查点?
- azure-policy - Azure策略如何让字段等于null?
- nlp - 导入 Pytorch_Transformers 时未找到模块错误
- javascript - 如何使用 JSON 文件创建数组作为数据库并使用 Javascript 更新/保存它
- python - isdigit() 独立工作,但不能与 np.where 一起工作
- vba - 如何通过填写表单并单击保存按钮将记录添加到表中
- javascript - 如何在纯javascript中的另一个文件中包含一个类文件
- javascript - 我如何更改在 TypeScript 中编写我的方法