有没有办法将lcov代码覆盖率报告集中到一个或两个目录?

Run*_*ble 27 code-coverage gcov lcov

我最近开始使用lcov来可视化我的代码覆盖率.这是一个很棒的工具.

我注意到的一件事是它为我正在使用的所有文件生成代码覆盖率报告 - 包括那些我不感兴趣的文件.例如,它将为我提供boost和mysql ++文件的代码覆盖率报告.

是否有一种简单的方法可以强制lcov仅生成特定文件的覆盖率报告?

我试过像这样使用-k参数:

/usr/bin/lcov -q -c -i -b . -d .obj -k src/ -k include/ -o app_base.info

{run unit tests now}

/usr/bin/lcov -q -c -b . -d .obj -k src/ -k include/ -o app_test.info
/usr/bin/lcov -q -a app_base.info -a app_test.info -o app_total.info
/usr/bin/genhtml -q -o lcov_output_directory app_total.info

(这意味着我只想要"include"和"src"目录的覆盖文件.)

但是,这似乎不起作用.该报告仍然显示了所有无关的文件.任何建议都非常感谢.谢谢!

pee*_*san 31

我将--no-external标志与标志一起使用--directory以排除不需要的文件.

来自男人的外在定义:

外部源文件是不在--directory或--base-directory指定的某个目录中的文件.

所以我的命令看起来像这样:

$ lcov  --directory src -c -o report.info --no-external
Capturing coverage data from src
Found gcov version: 4.2.1
Scanning src for .gcda files ...
Found 4 data files in src
Processing src/C####.gcda
  ignoring data for external file /usr/include/c++/4.2.1/bits/allocator.h
Run Code Online (Sandbox Code Playgroud)


lot*_*har 30

lcov支持命令行参数 - 删除完全按照要求执行的操作.

  • `--extract`选项可能更有用.使用所有内容生成跟踪文件,然后将您关心的目录提取到第二个跟踪文件中. (13认同)
  • 看看[这个页面](http://qiomuf.wordpress.com/2011/05/26/use-gcov-and-lcov-to-know-your-test-coverage/) 有一个非常有用的例子--remove 的使用。 (2认同)