我第一次尝试使用以下方法来测量测试覆盖率gcov。现在我已经过了最初的学习曲线,除了一个小障碍之外,一切似乎进展顺利。我希望这可以归结为我缺乏理解,所以我希望熟悉 gcov 的人能够解释发生了什么。
问题是我有一个特定的头文件显示 0% 覆盖率。但是,那only该标头中的内容是常用类的类声明。
此外,该类的实现文件显示了 100% 的覆盖率,我可以指出 5 个不同的测试,在这些测试中我知道该类已成功实例化。
那么为什么 gcov 会报告该类的覆盖率为 0%,我该如何修复它呢?
- 编辑 -
正如 lacqui 下面指出的,如果标头没有可执行代码,则不应将其包含在覆盖率计算中。事实上,在我的所有类中,该特定头文件是 gcov 试图为其生成覆盖率信息的唯一一个。
我与其他标头进行了逐行比较,我发现最大的区别是这个特定的标头没有显式的构造函数或析构函数,而其他标头有。为了尽量减少文件之间的差异,我向问题类添加了显式 ctor 和 dtor。然而,这并没有什么区别。
看来我已经解决了这个问题。正如我所料,这更多的是缺乏经验的问题。
事实证明,gcov 只找到了可用跟踪文件的子集,因此只报告了全部结果的一部分。查找并添加其余跟踪文件解决了该问题。
对于任何好奇的人来说,有问题的头文件仍然显示在输出中。事实上,所有其他头文件也是如此,即使它们不包含可执行代码。然而,它们的覆盖率都在 90% 以上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)