gpt4 book ai didi

c++ - 为什么 gcov 报告一个使用良好的类的头文件覆盖率为 0%?

转载 作者:太空狗 更新时间:2023-10-29 20:01:28 24 4
gpt4 key购买 nike

我第一次尝试使用 gcov 测量测试覆盖率.现在我已经过了最初的学习曲线,除了一个小障碍外,一切似乎都很顺利。我希望归结为我缺乏理解,所以我希望熟悉 gcov 的人可以解释发生了什么。

问题是我有一个特定的头文件显示 0% 的覆盖率。然而,该 header 中唯一的东西是一个常用类的类声明。

此外,该类的实现文件显示了 100% 的覆盖率,我可以指出 5 个不同的测试,在这些测试中我知道该类已成功实例化。

那么为什么 gcov 会报告该类的覆盖率为 0%,我该如何解决?

-- 编辑--

正如 lacqui 在下面指出的那样,如果 header 没有可执行代码,则不应将其包含在覆盖率计算中。事实上,在我所有的类中,那个特定的头文件是 gcov 试图为其生成覆盖信息的唯一一个。

我已经与其他 header 进行了逐行比较,我发现最大的区别是这个特定 header 没有显式构造函数或析构函数,而其他 header 有。为了尽量减少文件之间的差异,我向问题类添加了一个明确的 ctor 和 dtor。但是,这没有任何区别。

最佳答案

看来我已经解决了这个问题。正如我所预料的,这更像是一个缺乏经验的问题。

事实证明,gcov 只找到了可用跟踪文件的一个子集,因此只报告了全部结果的一部分。查找并添加其余的跟踪文件解决了该问题。

对于任何好奇的人,有问题的头文件仍然会出现在输出中。事实上,所有其他头文件也是如此,即使它们不包含可执行代码。然而,它们都显示出 90+% 的覆盖率。

关于c++ - 为什么 gcov 报告一个使用良好的类的头文件覆盖率为 0%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/784379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com