【发布时间】:2011-04-03 01:48:51
【问题描述】:
我正在使用 gcov 来衡量我的 C++ 代码中的覆盖率。我想达到 100% 的覆盖率,但受到以下事实的阻碍:有些代码行在理论上是不可命中的(需要实现但从未调用的方法,switch 的默认分支声明等)。这些分支中的每一个都包含一个 assert( false ); 语句,但 gcov 仍将它们标记为未命中。
我希望能够告诉 gcov 忽略这些分支。有没有办法给 gcov 提供这些信息——通过注释源代码,或通过任何其他机制?
【问题讨论】:
-
是什么让你如此确定这些线条是不可击中的?如果是因为您无法命中它们,那么这就是您试图通过代码覆盖率找出的原因。
-
@deus-ex-machina399:不,不是因为我没能打到他们。这是由于对代码的理解和分析。当然,我可能是错的,但我并不是在使用代码覆盖率分析来尝试验证我对源代码的理解。我正在使用代码覆盖率分析来验证我的测试套件的质量。
-
@doron,一个不可命中的代码示例是测试基础设施中的故障路径。当然,你可以不用这样的路径,但我有。
-
您还可以将 lcov 排除标记与 gcov 和 gcovr 一起使用。
标签: c++ code-coverage gcov