我正在开发一个使用几个 boost 库的项目。在查看我们的测试报告时,我们发现测试覆盖率信息有时确实适合我们的源代码。我能够追踪到 boost::range。我认为这是因为库中的一些静态初始化,尽管我不能说更具体的东西。
基本上,如果你用 编译下面的代码gcc --coverage
,运行它并用 打印覆盖率报告gcov -b
,将会有四个额外的分支和一个额外的行,我想忽略它们。
#include <boost/range.hpp>
int foo(int x)
{
return x+1;
}
int main(int argc, char* argv[])
{
return foo(argc);
}
覆盖率报告是: 执行的行:5 个分支的 100.00% 执行的分支:4 个的 100.00% 至少执行一次:4 个执行的调用的 50.00%:2 个的 100.00% 创建 'test_gcov.cpp.gcov'
我猜想 5 行的计数来自 boost::range 库中的两个函数签名、函数体和另外一行。我不知道具体在哪里,但是生成的 gcov 文件显示正在进行一些静态初始化,所以我猜那是分支所在的位置。
我想知道是否有办法告诉 gcov 忽略 boost 命名空间中的任何代码,或任何其他方式。