当前位置: 首页 > 工具软件 > lcov > 使用案例 >

使用LCOV命令生成覆盖率

马晓博
2023-12-01

使用LCOV命令生成覆盖率

lcov命令的使用方法请参考man手册或者参考lcov --help
这里主要关注的下面这几个参数:

  • -c 或者 --capture 指定从编译产物中收集覆盖率信息。
  • -d DIR 或者 --directory DIR 指定编译产物的路径。
  • -e FILE PATTERN 或者 --extract FILE PATTERN 从指定的文件中根据PATTERN过滤结果。
  • -o FILENAME 或者 --output-file FILENAME 指定覆盖率输出的文件名称。
  • –remove 去除指定文件的覆盖率信息

另外还有需要说明的是:
lcov默认不会打开分支覆盖率,因此我们还需要增加这个参数来打开分支覆盖率的计算:

  • –rc lcov_branch_coverage=1
    lcov输出的仍然是一个中间产物,我们还需要通过lcov软件包提供的另外一个命令genhtml来生成最终需要的html格式的覆盖率报告文件。同样的,为了打开分支覆盖率的计算,我们也要为这个命令增加–rc lcov_branch_coverage=1参数
COVERAGE_FILE=coverage.info
REPORT_FOLDER=coverage_report
lcov --rc lcov_branch_coverage=1 -c -d build -o ${COVERAGE_FILE}_tmp
lcov --rc lcov_branch_coverage=1  -e ${COVERAGE_FILE}_tmp "*src*" -o ${COVERAGE_FILE}
genhtml --rc genhtml_branch_coverage=1 ${COVERAGE_FILE} -o ${REPORT_FOLDER}

这段代码从我们前面编译的结果中收集覆盖率结果,并将结果输出到coverage.info_tmp文件中。但是这里面会包含非项目源码的覆盖率(例如google test),所以我们又通过另外一条命令来指定”src”文件夹进行过滤。最后,通过genhtml得到html格式的报告。

 类似资料: