3

我可以通过 lcov 在同一目录中使用 .gcda 文件和 .gcno 文件生成 .info 文件,但是如何在不同位置使用 .gcda 文件和 .gcno 文件生成代码覆盖率?

例如,

/Users/swd/Library/Developer/Xcode/DerivedData/test1aaeyiowcssrymfbwtudrqqakuvr/Build/Intermediates/test1.build/Cov/test1.build/Objects-normal/x86_64/AppDelegate.gcno

/Volumes/Data/test1/test1/AppDelegate.gcda

我尝试了 --add-tracefile 但失败了,并输出 'lcov: ERROR: no valid records found in trace file'

我的第二个问题是 lcov 是否有一些命令可以将我的旧版本覆盖率 html 与我的新版本进行比较,以便我找到不同之处。

有任何想法吗?谢谢

4

2 回答 2

1

好吧,为了避免其他人感到困惑,需要先清除一些事情。

.gcno并且.gcda永远不会在单个目标文件的不同位置生成。(至少这是我从我的经验中知道的)
当使用自动构建器或手动命令编译源文件时,它会在同一位置生成.gcno文件和文件。.o之后,当您执行任何类型的执行时,目标文件会触发覆盖生成功能并.gcda在与“.gcno”和目标文件相同的位置生成文件。
如果它们是为不同的.gcno文件生成的,那么它们无论如何都不能一起使用。

于 2017-04-03T11:06:54.130 回答
1

如果GCOV_PREFIX设置了环境变量,就会发生这种情况。请参阅此处建议的解决方案是通过执行类似 的操作来释放.gcno文件$GCOV_PREFIX

rsync -acv --filter='+ */' --filter='+ *.gcno' --filter='- *' <directory-containing-object-files> $GCOV_PREFIX
于 2017-10-04T15:17:30.233 回答