lcov使用文档

1.安装到usr/local下

git clone https://github.com/linux-test-project/lcov.git
cd lcov
sudo make install

直接在主目录make。

2. 简易使用

2.1 在待测试覆盖率的项目CmakeLists.txt链接lcov:

添加

set(CMAKE_CXX_FLAGS "-g -O0 -Wall -fprofile-arcs -ftest-coverage") 

        set(CMAKE_CXX_FLAGS_RELEASE "-O0 -fopenmp")
        add_compile_options(-fprofile-arcs)
        add_compile_options(-ftest-coverage)
        add_compile_options(--coverage)
        link_libraries(gcov)

2.2 待测试覆盖率的项目重新编译运行

2.3 跳转到项目的所在文件夹的上一级目录

例如项目MDataHub的路径为在home/type/MDataHub,那么跳转到/home/ros

2.4 清空计数器

lcov --directory MDataHub --zerocounters

显示:

Deleting all .da files in MDataHub and subdirectories
Done.

2.5 运行项目

假设有多个可执行文件,随便执行一个即可。

2.6 捕获每个文件的覆盖率到文件app.info:(MDataHub为文件夹名)

lcov --directory MDataHub --capture --output-file app.info

显示:

Capturing coverage data from MDataHub
Found gcov version: 5.4.0
Using intermediate gcov format
Scanning MDataHub for .gcda files ...
Found 6 data files in MDataHub
Processing thirdparty/mtime/CMakeFiles/mtime.dir/core/src/struct.cpp.gcda
Processing thirdparty/mtime/CMakeFiles/mtime.dir/core/src/utils.cpp.gcda
Processing thirdparty/mtime/CMakeFiles/mtime.dir/core/src/mtime.cpp.gcda
Processing CMakeFiles/sample_maf.dir/sample/src/maf_manager.cpp.gcda
Processing CMakeFiles/sample_maf.dir/sample/src/sample_maf.cpp.gcda
Processing CMakeFiles/sample_maf.dir/src/mdata_hub.cpp.gcda
Finished .info-file creation

2.7 由app.info生成html:

genhtml app.info

显示:

Found 66 entries.
Found common filename prefix "/usr/include/c++"
Writing .css and .png files.
Generating output.
Processing file /home/type/MDataHub/include/mdatabase.h
...
Processing file 5/mutex
Processing file 5/cmath
Processing file 5/functional
Processing file 5/new
Processing file 5/chrono
Processing file 5/initializer_list
Processing file 5/tuple
Processing file 5/thread
Processing file 5/typeinfo
Processing file 5/type_traits
Processing file 5/bits/stl_uninitialized.h
Processing file 5/bits/stl_pair.h
Processing file 5/bits/basic_string.h
Processing file 5/bits/shared_ptr.h
Processing file 5/bits/alloc_traits.h
Processing file 5/bits/stl_construct.h
Processing file 5/bits/stl_vector.h
Processing file 5/bits/move.h
Processing file 5/bits/unique_ptr.h
Processing file 5/bits/shared_ptr_base.h
Processing file 5/bits/vector.tcc
Processing file 5/bits/stl_iterator_base_funcs.h
Processing file 5/bits/stl_tree.h
Processing file 5/bits/deque.tcc
Processing file 5/bits/stl_algobase.h
Processing file 5/bits/ios_base.h
Processing file 5/bits/stl_iterator_base_types.h
Processing file 5/bits/stl_map.h
Processing file 5/bits/stl_function.h
Processing file 5/bits/basic_string.tcc
Processing file 5/bits/stl_iterator.h
Processing file 5/bits/stl_deque.h
Processing file 5/bits/allocator.h
Processing file 5/bits/allocated_ptr.h
Processing file 5/ext/new_allocator.h
Processing file 5/ext/aligned_buffer.h
Processing file 5/ext/string_conversions.h
Processing file 5/ext/atomicity.h
Processing file 5/ext/alloc_traits.h
Processing file 5/ext/type_traits.h
Processing file /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h
Writing directory view page.
Overall coverage rate:
lines......: 65.0% (1624 of 2500 lines)
functions..: 61.0% (1555 of 2548 functions)

2.8 打开index.html:

 点击directory栏链接即可显示每个文件的每行代码的覆盖率,每行中蓝色背景代表覆盖到,红色背景代表没有覆盖到。

3 lcov参数

  1. -d 项目路径,即.gcda .gcno所在的路径
  2. -a 合并(归并)多个lcov生成的info文件
  3. -c 捕获,也即收集代码运行后所产生的统计计数信息
  4. --external 捕获其它目录产生的统计计数文件
  5. -i/--initial 初始化所有的覆盖率信息,作为基准数据
  6. -o 生成处理后的文件
  7. -r/--remove 移除不需要关注的覆盖率信息文件
  8. -z 重置所有执行程序所产生的统计信息为0

必需要通过执行项目本身的可执行文件,如sample等,像roslaunch等通过开启结点不能生成对应的覆盖率文件!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值