使用 Cobertura 输出 Gcov 的颜色代码

Output color code of Gcov with Cobertura

我已经在 J​​enkins 上设置了 gcov 代码覆盖工具。

这很好用,但我无法理解输出颜色代码。 每行的'hits'个数是正确的,但是有些行是绿色的,有些是红色的,我也不知道为什么。

示例:

请注意,setYear 方法全部为绿色,并调用了 13 次(ctor + setDateAAMMJJ 中的 12 次,如屏幕截图所示)

如果您查看 cobertura-plugin on github 的源代码,您会看到:

table.source tr.coverPart td.hits, table.source tr.coverNone td.hits {
    background-color: #fdd;
    font-weight: bold;
}

table.source tr.coverPart {
    background-color: #ffd;
}
  • #fdd是红色,
  • #ffd是黄色

您应该可以使用浏览器 'developer tools' 或 'inspector' 功能来查看应用了哪个 class。

这是什么意思?

最左边的黄色表示源代码被覆盖部分,这意味着您可能没有 100% 覆盖正在调用的函数。

我能想到的另一种情况(此时纯粹是推测)是某些优化正在破坏您的语句覆盖率;检查你的编译标志。

如果您保留了数据(lcov 文件),您应该能够使用 genhtml 生成报告并进行比较。

不知道这是否适用于您,但似乎相关。 在我的例子中,它是红色的,因为分支覆盖率不是 100%。 使用 gcovr 生成 xml 时,它还会添加分支覆盖数据。

可以覆盖所有的行,但不能覆盖所有的分支。 我遇到了分支封面的各种问题。

这些帖子中描述了一些。

Why gcc 4.1 + gcov reports 100% branch coverage and newer (4.4, 4.6, 4.8) reports 50% for "p = new class;" line?

What is the branch in the destructor reported by gcov?

仍在寻找解决此类问题的方法..