2

googletestgcovrwhich 结合使用会产生一些奇怪的行为。我有一个头文件foo.hgcovr声称有一些测试未涵盖的行。这些行是类定义和移动构造函数:

File  Lines Exec Cover Missing
foo.h 42    40   95%   39,47

第 39 行是:

class foo

第 47 行是:

foo(foo&&) = default;

我已经尝试在测试主体中显式调用此函数std::move(),但无济于事。这个问题有解决方案吗,还是我坚持 99% 的覆盖率报告?

我应该注意,除了类定义和复制/移动语义(都定义为default)之外,此标头中没有任何实现;所有功能体都在foo.cpp.

4

2 回答 2

0

似乎将这些行从覆盖报告中删除为“未覆盖”的唯一方法是将它们从标题中删除。这并不会真正影响任何事情,因为它们只是将 copy/move/dtor 设置为default. 实际实施或删除这些的其他任何地方都不会显示在覆盖率报告中。

于 2017-03-22T21:26:28.397 回答
0

您可以使用特殊注释从覆盖率计算中排除某些行。此行为未记录,但稳定。你可以:

  • 排除包含GCOVR_EXCL_LINE
  • 排除 和 之间的线GCOVR_EXCL_START区域GCOVR_EXCL_STOP

标记可以从GCOVRLCOV如果您也使用该工具开始。目前不支持 Lcov 的分支排除标记。

于 2018-04-11T17:45:55.967 回答