Ios lcov&;如何处理不同目录下的.gcda和.gcno文件;代码覆盖率比较

Ios lcov&;如何处理不同目录下的.gcda和.gcno文件;代码覆盖率比较,ios,code-coverage,gcov,lcov,Ios,Code Coverage,Gcov,Lcov,我可以使用同一目录中的.gcda文件和.gcno文件通过lcov生成.info文件,但是如何使用不同位置的.gcda文件和.gcno文件生成代码覆盖率 比如说, /Users/swd/Library/Developer/Xcode/DerivedData/test1aaeyiowcssrymfbwtudrqqakuvr/Build/Intermediates/test1.Build/Cov/test1.Build/Objects-normal/x86_64/AppDelegate.gcno /卷

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

比如说,

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

/卷/Data/test1/test1/AppDelegate.gcda

我尝试--添加跟踪文件,但失败,并输出“lcov:ERROR:在跟踪文件中找不到有效记录”

我的第二个问题是lcov是否有一些命令来比较我的旧版本覆盖率html和我的新版本覆盖率html,以便我能够找到差异


有什么想法吗?谢谢

好吧,没有什么事情需要先弄清楚,以免给其他人带来困惑

.gcno
.gcda
不会在单个对象文件的不同位置生成。(至少从我的经验中我知道这一点)
当使用自动生成器或手动命令编译源文件时,它会在同一位置生成
.gcno
文件和
.o
文件。然后,当您执行任何类型的执行时,目标文件触发覆盖率生成功能,并在与“.gcno”和目标文件相同的位置生成
.gcda
文件。

如果它们是为不同的
.gcno
文件生成的,那么它们无论如何不能一起使用。

如果设置了环境变量
GCOV\u PREFIX
,则可能会发生这种情况。看见 建议的解决方案是通过执行以下操作将
.gcno
文件释放到
$GCOV_PREFIX

rsync -acv --filter='+ */' --filter='+ *.gcno' --filter='- *' <directory-containing-object-files> $GCOV_PREFIX
rsync-acv-filter='+*/'-filter='+*.gcno'-filter='-*'$GCOV\u前缀

如果环境变量
GCOV\u PREFIX
设置为某个路径,则GCOV会将该路径添加到
.o
文件中绝对路径的前面,并在那里生成
.gcda
文件。