Gcov资料汇总

代码覆盖率简介:

目录

      • 安装
      • CMakeLists配置Gcov
      • 增加Branches的检测
      • 调用
      • 补充

安装

Linux + Ubuntu,输入以下语句:

sudo apt-get update        // 检查更新
sudo apt-get install lcov  // 安装lcov
lcov -v                    // 查询已安装的版本

CMakeLists配置Gcov

if (UNIX)
    OPTION (ENABLE_COVERAGE "Use gcov" ON)
    MESSAGE(STATUS ENABLE_COVERAGE = ${ENABLE_COVERAGE})
    IF(ENABLE_COVERAGE)
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
        SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")      
    ENDIF()   
endif (UNIX)

增加Branches的检测

Gcov默认输出Function和Line Coverage的覆盖率,如果需要增加Branches的检测,需要修改lcov的配置,具体操作如下:

sudo su                                  // 进入root模式,修改文件权限
chmod 755 /etc/lcovrc                    // 获得写的权限
vim /etc/lcovrc                          // 打开文件,进行编辑
grep lcov_branch_coverage /etc/lcovrc    // 搜索"lcov_branch_coverage",去掉注释,赋值为1
grep genhtml_branch_coverage /etc/lcovrc // 搜索"genhtml_branch_coverage",去掉注释,赋值为1
:wq                                      // 保存修改,退出编辑

调用

编译代码且执行程序后,输入以下语句:

  1. 统计所有代码的覆盖率情况
lcov --capture --directory. --output-file coverage.info  // 生成coverage.info数据文件
genhtml coverage.info --output-directory out            // 根据coverage.info生成html结果报告到out文件夹
  1. 提取部分文件夹中的代码,统计提取部分代码的覆盖率情况
lcov --capture --directory. --output-file coverage.info                      // 生成coverage.info数据文件
lcov --extract coverage.info '*/src1/*' '*/src2/*' -o finalresult.info     // 提取src1和src2文件夹中的代码,注意格式
genhtml -o report finalresult.info // 根据finalresult.info生成html结果报告到report文件夹
  1. 提取部分文件夹中的代码,统计提取部分代码的覆盖率情况
lcov --capture --directory. --output-file coverage.info                      // 生成coverage.info数据文件
lcov --extract coverage.info '*/common1/*' '*/common2/*' -o finalresult.info     // 提取common1和common2文件夹中的代码,注意格式
genhtml -o report finalresult.info // 根据finalresult.info生成html结果报告到report文件夹

补充

  1. Gcov生成的.gcno和.gcda文件和.o文件在同一路径下,一般放在编译后的/build/test.dir(test表示project名)里。
  2. Gcov可以累积统计多次运行可执行文件的结果。
  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值