Lcov不一致的覆盖率

12

我大约一个月前开始使用 lcov 。覆盖率计数似乎不一致。第一次运行报告大约 75% 的行覆盖率,而第二次运行报告仅有 19% 的行覆盖率。两次运行都使用了相同的测试套件。在 lcov --remove 过程中出现以下警告。是否有建议?

lcov:警告:在跟踪文件 all.info 中发现负计数

这件事需要担心吗?


我也遇到了同样的问题。一个正常工作的脚本突然开始给我返回“负数计数”。 - Vinnie Falco
2
你如何运行lcov?文件夹和文件校验和之间有区别吗?@paercebal,您认为重新开放像这样的遗留线程并设置赏金以及可能不再回答问题的OP(上次出现于2016年4月11日)是个好主意吗? - Daniel W.
@DanFromGermany:你说得对。我们的问题可能与Vinnie Falco的问题相同,但并不完全相同于OP的问题。我将问题恢复到了原始状态。在我们这边,我们会进行进一步的研究,并发布一个完整的问题,包括命令行、日志和信息,考虑到你的评论。 - paercebal
2个回答

1

在 GitHub 上报告了已知的 问题

将输出中所有的 -1 替换为 0(例如使用 sed -i -e 's/,-1$/,0/g' <outputfile>),可以使警告从 lcovgenhtml 输出中消失,同时仍然生成正确的覆盖报告。

更重要的是(至少对我而言),将计数设置为 0 而不是 -1 提交到 codecov.io,可以使结果被正确解析,并且可以通过 codecov.io 查看覆盖信息。

Codecov 也可以处理此类值错误:

# Fix negative counts
$count = $2 < 0 ? 0 : $2;
if ($2 < 0)
{
  $negative = 1;
}

跟随其他修复方法:


-1

请查看此错误报告: https://github.com/psycofdj/coverxygen/issues/6

将输出中所有的-1替换为0(例如使用sed -i -e 's/,-1$/,0/g')可以消除lcov和genhtml输出中的警告,同时仍然生成正确的覆盖报告。

更重要的是(至少对我来说),将计数设置为0而不是-1提交到codecov.io会导致结果被正确解析,并且可以通过codecov.io获得覆盖信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接