使用 Cobertura 输出 Gcov 的颜色代码
Output color code of Gcov with Cobertura
我已经在 Jenkins 上设置了 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?
仍在寻找解决此类问题的方法..
我已经在 Jenkins 上设置了 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?
仍在寻找解决此类问题的方法..