gcc - 如何合并覆盖率报告?

标签 gcc gcov lcov gcovr

我有一个 C 程序,我用 -fprofile-arcs -ftest-coverage 标志编译。然后我在 5 个不同的输入上运行该程序,这将覆盖 .gcda 文件并给我一个组合报告。但我想要覆盖单个测试的报告并将它们存储在一个文件夹中,当我在这个文件夹上运行任何覆盖工具时,我会得到每个测试的报告以及一个组合报告。有没有办法做到这一点?

最佳答案

两者 gcovrlcov可以合并来自多次运行的核心数据,但 gcov 没有内置功能。
Gcovr 5.0 添加了 -a/--add-tracefile可用于 merge multiple coverage runs 的选项.每次测试后,使用 gcovr 创建 JSON 报告。之后,您可以使用 gcovr -a cov1.json -a cov2.json合并多个覆盖率数据集并以您选择的格式生成报告。您可以根据需要添加任意数量的输入 JSON 文件,如果您有多个文件,则使用 glob 模式(如 gcovr -a 'coverage-*.json' )。
您也可以考虑是否使用lcov工具及其 --add-tracefile选项可行:您可以在每次测试后运行 lcov 以生成 lcov-tracefile(您可以使用 genhtml 将其转换为 HTML 报告)。之后,您可以将跟踪文件合并到一个组合报告中。不可能将 lcov 的跟踪文件与 gcovr 一起使用。

关于gcc - 如何合并覆盖率报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52754832/

相关文章:

gcc - 为什么 GCC 在分配一个没有后续函数调用的大数组时将错误的值减去堆栈指针?

visual-studio-2013 - Visual Studio 和 gtest 的代码覆盖率

ios5 - 代码覆盖率 GCov 不适用于 XCode 4.2 和 iOS SDK 5

g++ - GCOV 可以在不同的目录结构中创建 .gcda 文件吗?

gcc - AVR-GCC:错误:行尾有垃圾

c++ - clang 和 gcc 中是否有 Visual C++ __declspec (属性声明属性)的替代方案?

c++ - 为什么 'simplified' 代码没有向量化

c - libgcov fork 和 exec 钩子(Hook)

ios - 使用 getcov 和 lcov 的 xcode7 代码覆盖率

sonarqube - SonarQube 扫描仪中 lcov.info 路径的通配符?