Jen*_*ens 5 c++ gcov boost-range
我正在一个使用几个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);
}
Run Code Online (Sandbox Code Playgroud)
覆盖率报告为:已执行的行:已执行5条分支的100.00%:已执行4条的100.00%至少被执行一次:已执行4条呼叫的50.00%已执行2条呼叫:已创建2条的100.00%创建'test_gcov.cpp.gcov'
我猜这5行的计数来自两个函数签名,函数主体和boost :: range库中的另一行。我不知道确切在哪里,但是生成的gcov文件显示正在进行一些静态初始化,所以我猜那是分支所在的位置。
我想知道是否有一种方法可以告诉gcov忽略boost名称空间中的任何代码,或任何其他方式。
您可以使用--remove或-r标志来忽略来自外部库的文件。例如:
lcov -c -d <build_dir> -o <output_trace_file>
lcov -r <output_trace_file> "/usr*" -o <output_trace_file>
Run Code Online (Sandbox Code Playgroud)
您可以替换"/usr*"为您要删除的任何模式。
这里的博客文章给出了如何使用该标志的一个很好的例子(并涵盖了lcov从开始到结束的整个过程。)
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |