使用lcov和g ++精确计算功能

时间:2012-07-11 02:33:17

标签: lcov

我正在使用Ubuntu 12,g ++和lcov,后者与apt-get install lcov一起安装。

我正在成功编译,并使用genhtml生成html报告。线路覆盖率信息看起来不错,但许多功能覆盖范围计数看起来很奇怪。例如,lcov将一个仅包含构造函数和虚拟析构函数的C ++类报告为具有7个函数。因此,如果我在会议期间同时打电话,我的报道只有2/7。

这是一个示例输出,它显示了一个具有一个永远不会被调用的函数的类。我无法弄清楚这个功能是什么:

example output

任何人都可以解码受损的函数名称,解释膨胀的函数计数,并建议如何解决问题吗?

提前致谢。

更新

好的,自从回答下面我的原始问题(见评论)后,我现在正在邀请我如何防止这些引擎盖下的人员破坏我的功能覆盖率统计数据。如何将函数计数限制为我自己编写的函数?

1 个答案:

答案 0 :(得分:1)

我想你现在正在开展一个新项目,当时你可能没有使用过C ++ 11,但如果你现在这样做可能会有所帮助:

class my_class
{
    ...
    my_class(my_class const &) = delete;
    ...
};

这也意味着你必须为你不想拥有的所有可能的默认构造函数提供某种形式的声明...现在如果你使用默认的构造函数,那么你可能需要增强你的测试,因为lcov是告诉你,你实际上没有测试它们!类似的东西应该做:

my_class a;
my_class b(a);
my_class c;
c = b;