【发布时间】:2018-06-06 06:07:53
【问题描述】:
我正在尝试使用 lcov(v1.13,在 OS X 上,使用 clang 作为编译器)为我的测试套件生成代码覆盖率,但我遇到了一个我不知道如何解决的恼人问题。 SO上有一些类似的问题,但我找不到这个问题的解决方案。出于某种原因,函数/成员声明被标记为可访问但未执行,有点像下面的示例(这是标题中的内联方法定义):
这会使线路覆盖率指标变得无用,所以我希望有一种方法可以修复它,而不会将每个声明都标记为 LCOV_EXCL_LINE。
使用的编译器标志非常标准:
-g -O0 -fno-inline -ftest-coverage -fprofile-arcs -fno-elide-constructors
奇怪的是,源文件中的方法定义也被标记为红色,虽然主体不是,例如:
// header.h
class Foo {
void bar(); // ignored, marked as unreachable
}
// header.cpp
void Foo::bar() { // marked as red (reachable / not executed)
do_something(); // marked as covered
}
如果它很重要,源文件是静态库的一部分,静态链接到 CMake 中的测试工具。
【问题讨论】:
标签: c++ clang code-coverage gcov lcov