gcov统计代码覆盖率及前端工具lcov使用指导

gcov是在代码运行时统计代码覆盖率的工具,随着gcc一起发布的。它的使用很简单,需要在编译和链接时增加-fprofile-arcs -ftest-coverage生成二进制文件。gcov主要使用.gcno和.gcda两个文件,.gcno是由-ftest-coverage产生的,它包含了重建基本块图和相应的块的源码的行号的信息。.gcda是由加了-fprofile-arcs编译参数的编译后的文件运行所产生的,它包含了弧跳变的次数和其他的概要信息。


以测试samp3为例:有文件samp3.cpp、samp3.h、samp3_test.cpp(单元测试脚本)


1.编译并链接samp3.cpp、samp3_test.cpp时增加参数-fprofile-arcs -ftest-coverage

除了生成可执行文件test3之外,还生成了samp3.gcno和samp3_test.gcno二进制文件。

命令:g++ samp3.cpp samp3_test.cpp libgmock.a -fprofile-arcs -ftest-coverage -lpthread -o test3


gcov统计代码覆盖率及前端工具lcov使用指导_第1张图片

2.执行test3文件可生成*.gcda二进制文件


gcov统计代码覆盖率及前端工具lcov使用指导_第2张图片

gcov统计代码覆盖率及前端工具lcov使用指导_第3张图片

3.执行命令gcov *.cpp

生成gcda文件之后执行命令gcov *.cpp就会在屏幕上打印出测试的覆盖率,并同时生成文件“*.cpp.gcov”,然后用vi打开就可以看见哪行被覆盖掉了

如:执行gcov samp3.cpp即打印出samp3文件的代码覆盖率为100%,同时生成文件samp3.cpp.gcov



4.vi *.cpp.gcov打开文件查看哪行被覆盖掉了

如vi samp3.cpp.gcov可看到第7、8行被覆盖了11次,除注释空行外所有代码均被覆盖到了,覆盖率100%。


gcov统计代码覆盖率及前端工具lcov使用指导_第4张图片

5.github下载lcov源码,直接make install 安装

地址:https://github.com/linux-test-project/lcov.git

注:1.从windows上烤到linux上文件会存在CRLF,需要使用dos2unix *转行成unix文件

2.没有权限则使用sudo make install

gcov统计代码覆盖率及前端工具lcov使用指导_第5张图片

gcov统计代码覆盖率及前端工具lcov使用指导_第6张图片

6.在*.gcda目录下执行lcov --directory  .  --capture --output-file app.info生成app.info文件

gcov统计代码覆盖率及前端工具lcov使用指导_第7张图片


gcov统计代码覆盖率及前端工具lcov使用指导_第8张图片

7. 执行命令genhtml  -o  results  app.info生成results目录


gcov统计代码覆盖率及前端工具lcov使用指导_第9张图片

8.打开index.html


gcov统计代码覆盖率及前端工具lcov使用指导_第10张图片

gcov统计代码覆盖率及前端工具lcov使用指导_第11张图片
gcov统计代码覆盖率及前端工具lcov使用指导_第12张图片

你可能感兴趣的:(gcov统计代码覆盖率及前端工具lcov使用指导)