安装工具:
-
安装lcov和genhtml
× sudo apt install lcov -
安装bazel
× 参考链接:https://blog.csdn.net/darkrabbit/article/details/81262556 -
下载bazel demo
× git clone https://github.com/bazelbuild/examples/下载完成后到examples目录,找到cpp对应的教程中,然后进入stage1,在stage1中新建一个shell脚本,脚本内容如下:
#!/bin/bash
coverage_params="--copt=-coverage --linkopt=-lgcov --spawn_strategy=standalone genrule_strategy=standalone"
bazel build ${coverage_params} //main:hello-world
编译没有问题后,执行生成的二进制文件,然后使用lcov工具生成覆盖率文件:
lcov -c -d ./ -o app.info
genhtml app.info -o htm_result
lcov 和 genhtml 的用法可自行网上查找。上述命令会生成html格式的覆盖率文件,但是其中包含了标准库文件的覆盖了,有的项目较大,还会包含一些第三方库,此时可以优化覆盖率文件,过滤掉标准库文件和第三方库文件的覆盖率,只需在上述命令中再加一行即可:
lcov -c -d ./ -o app.info
lcov -r app.info /usr/include/c++/* -o app.info.filter
genhtml app.info.filter -o htm_result
好吧,上述优化好像有问题,有时间再更新 ^ _ ^