LCOV 覆盖率生成指南(踩坑记录)

生成覆盖率需要的:

gcno

gcda

源码文件

1.生成覆盖率必须在生成gcno的环境,也就是代码的编译环境!环境不一致可能会遇到gcc版本、操作系统版本导致的一系列问题,坑比较多。

2.查看gcno和gcda是不是同一批的,必须是生成gcno的包来跑测试生成gcda,这样才能计算覆盖率!

命令:

hexdump -e '"%x\n"' -s8 -n4 xxx.gcno

hexdump -e '"%x\n"' -s8 -n4 xxx.gcda

输出一致表示正常。

3.注意生成gcno时源码的目录前缀,必须将源码、gcno、gcda都放在这个目录下才能生成!

全量覆盖率执行命令:

/usr/bin/lcov --capture --directory . --ignore-errors gcov,source,graph --output-file all.info
/usr/bin/lcov --remove all.info '/usr/include/*' '/usr/lib/*'  -o result.info
genhtml result.info --no-prefix --output-directory coverage_report

增量覆盖率执行命令:

c_xml_report="coverage_report.xml"
lcov_cobertura result.info --base-dir /buildroot --output ${c_xml_report}
cov_diff_html_report="cov_diff_report.html"
cov_diff_json_report="cov_diff_report.json"
COV_BRANCH="origin/${需要对比的分支}"
diff-cover ${c_xml_report} --html-report ${cov_diff_html_report} --compare-branch=${COV_BRANCH}
diff-cover ${c_xml_report} --json-report ${cov_diff_json_report} --compare-branch=${COV_BRANCH}
注意:增量覆盖率生成需要保证当前代码是可以切分支的,直接curl拉的代码包无法生成增量覆盖率,git clone下来的才可以。

你可能感兴趣的:(笔记,LCOV,代码覆盖率)