使用Cobertura输出Gcov的颜色代码

时间:2015-02-10 09:14:11

标签: jenkins continuous-integration cobertura gcov gcovr

我在Jenkins上设置了gcov代码覆盖工具。

这很好用,但我在处理输出颜色代码时遇到了麻烦。 每条线的'命中数'是核心,但是当其他线为红色时,某些线是绿色的,我不知道为什么。

示例:

enter image description here

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

2 个答案:

答案 0 :(得分:2)

如果您查看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是黄色

您应该可以使用浏览器的开发者工具'或者'检查员'函数来查看应用了哪个类。

这是什么意思?

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

我能想到的另一个案例(此时的纯粹推测)是某些优化会破坏你的陈述覆盖范围;检查你的编译标志。

如果你保存了数据(lcov文件),你应该可以使用genhtml生成报告并进行比较。

答案 1 :(得分:1)

不知道这是否适用于您,但似乎相关。 在我的情况下它是红色的,因为分支覆盖不是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?

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