美文网首页
gcov统计代码覆盖率及前端工具lcov使用指导

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

作者: 一木之夏 | 来源:发表于2017-10-10 11:58 被阅读126次

    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


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


    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%。

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

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

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

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


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

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

    8.打开index.html


    相关文章

      网友评论

          本文标题:gcov统计代码覆盖率及前端工具lcov使用指导

          本文链接:https://www.haomeiwen.com/subject/rurvyxtx.html