通过一个简单的例子,来展示如何使用gcov+lcov来生成代码分支覆盖率数据并将其图形化显示
假设有一个main.cpp文件
1. 首先使用gcc编译该文件
g++ main.cpp -fprofile-arcs -ftest-coverage -l gcov -o main.out
# ftest-coverage用以生成.gcno文件,fprofile-arcs用来在后面应用程序时生成.gcda文件
此时会生成以下两个文件:
main.gcno
main.out
2. 执行main.out文件
此时会生成main.gcda文件,gcda文件和gcno文件都会被用来生成代码分支覆盖率文件
3. 生成gcov文件
gcov main.cpp
gcov文件包含了main.cpp文件的分支覆盖率数据,但是该文件不够直观,可以使用lcov将其变得更加容易解读
4. 生成图形化文件
lcov -d ./ -o all.info -c
genhtml -o coverage all.info
最终在coverage目录下生成html文件,最终的呈现出的效果如下所示:
推荐阅读:
GCOV+LCOV 代码调试和覆盖率统计工具