lcov:分支覆盖的析构函数缺失

时间:2017-01-06 01:30:26

标签: c++ code-coverage lcov

我的工作环境

  • cygwin的

  • lcov 1.13

  • GCC 5.4.0

问题是html中的覆盖率报告告诉析构函数中缺少分支但析构函数为空。我不知道为什么。 有人可以帮帮我吗? 我也尝试使用GCC 4.8.0但结果相同 enter image description here

2 个答案:

答案 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