linux下,可以使用gcov和lcov生成覆盖率统计的报告。gcov是 GCC Coverage,随GCC一起发布,配合gcc实现对C/C++代码的语句覆盖和分支覆盖测试。要使用gcov,需要进行以下设置:
1. 要使用lgcov库,在编译时链接该库;
2. 源码和测试码编译的编译选项中添加"-fprofile-arcs", "-ftest-coverage"这两个测试编译选项。编译器根据这两个选项,做以下几件事情:<1> 在目标文件中划分一段存储区保存统计数据;
<2> 在每行可执行语句之后插入一段覆盖率统计的代码;
<3> 添加了gcov的init/flush/exit函数,在调用main之前调用init初始化,在退出时调用flush函数输出数据到gcda(gcc coverage data)文件中。
3. 在库LIBS选项中添加gcov库(-lgcov)
4 进行源码和测试码编译后,执行测试码可执行文件。
5. 执行完成后,会生成相应的gcda文件。
6. 通过lcov进行数据的收集(这个需要自己安装,搜索下载安装即可),生成覆盖率数据 (lcov -c -o xxx.info -d ./)
7. 生成html格式的覆盖率报告(genhtml xxx.info -o result).覆盖率报告就会生成在result目录下。