我的工作环境
cygwin的
lcov 1.13
GCC 5.4.0
问题是html中的覆盖率报告告诉析构函数中缺少分支但析构函数为空。我不知道为什么。 有人可以帮帮我吗? 我也尝试使用GCC 4.8.0但结果相同
答案 0 :(得分:3)
我遇到了同样的问题,我找到了this on stackoverflow。 简短的回答是,有不同类型的析构函数,具体取决于您是删除动态分配的对象,还是静态分配的对象被破坏。
因此,为了摆脱这个缺少的分支覆盖,你必须用
创建一个对象<div class="messages-list">
<ul></ul>
</div>
和
TestClass* a = new TestClass();
然后确定,它们都被破坏了,前者当然是
TestClass b;
然后应该调用两种类型的析构函数。
答案 1 :(得分:0)
一个简单的解决方案是将// GCOVR_EXCL_LINE
作为注释添加到您知道没有同时执行两个分支的行中。我认为这对这种情况是个好主意,因为据我了解,没有其他方法可以强制GCOV同时使用析构函数的动态和非动态分支。
例如:
TestClass *a = new TestClass;
delete a; // GCOVR_EXCL_LINE
将从覆盖率报告中排除delete a;
行。
有关更多详细信息,请参见以下内容: https://gcovr.com/en/master/guide.html#exclusion-markers