code-coverage - 有没有办法将两个 .gcda 文件合并为一个?

标签 code-coverage gcov

我有几个针对应用程序的单元测试,每个测试都能够生成 .gcda 文件。我希望能够生成统一的 .gcda 文件,这些文件代表整个测试套件的覆盖范围。似乎没有一种简单的方法可以做到这一点,但我可能是错的,这就是我问的原因。

With gcov, is it possible to merge to .gcda files?之前有人问过,解决方案是转换为 lcov .info 文件并以这种方式合并。如果可能的话,我希望合并操作的输出仍然是单个 .gcda 文件,这样我就不会被迫使用 lcov。

最佳答案

有代码要合并.gcda文件,但不幸的是它被埋在 libgcov.a它作为 gcc 的一部分构建。如果您退出(或以任何方式调用 __gcov_flush() )覆盖编译的程序,它实际上会检测到预先存在的 .gcda文件,加载它们,将它们的数据与正在运行的程序的数据聚合起来,然后将其保存回来。我不知道有任何工具可以在命令行提供该功能。即使是 libgcov.a您可能没有有用的钩子(Hook)来做您想做的事情,并且必须从 gcc-core 发行版中获取源代码并对其进行修改。

我过去所做的只是将所有数据提取到带注释的源(.gcov)并在该级别聚合。 .gcda格式能够存储的不仅仅是行覆盖信息(例如分支计数)和libgcov.a聚合知道如何组合它们(对于某些人来说,它不像求和那么简单)。

关于code-coverage - 有没有办法将两个 .gcda 文件合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6513622/

相关文章:

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

angularjs - Karma 覆盖率始终显示为 100%

c++ - Makefile.am/Configure.ac 条件环境变量检查

linux - 尽管安装了调试信息,但 GDB 未显示行号信息

tfs - 如何仅为部分构建启用代码覆盖率 (TFS)

code-coverage - Xcode 7生成GCOV

c++ - 如何合并多个版本的gcda文件?

junit - 如何处理日志记录和单元测试覆盖率?

testing - SonarQube 不显示 Ruby on Rails 项目的测试代码覆盖率

android - "EMMA: nothing to do: no metadata found in any of the data files"与 Emma 在 android 中创建 coverage.html