Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6005019
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: 敏捷开发

2014-02-13 02:05:54

        在C/C++中产生代码覆盖率的步骤包括如下几步:
一、设置编译参数
        如下来设置Makefile中的编译参数以使之支持覆盖率产生:
        ifeq ($(coverage), yes)
            CXXFLAG = -g -Wall -DLINUX -DGTEST -fprofile-arcs -ftest-coverage
        endif
        这样,可以使用 make coverage=yes 来引入这些编译选项而不会影响到正常的编译,比如:
        #make coverage=yes
        这时候会产生.gcno文件。

二、运行测试程序
        #./exe
        运行测试程序,会针对所有cpp源代码产生相应的.gcda文件。

三、获取覆盖率数据
        获取覆盖率数据的方法很多种,这里介绍两种,分别产生txt和html数据:
1、使用gcov获取文本形式的覆盖率数据
        使用gcc自带的覆盖率结果产生工具gcov能产生文本格式(.gcov)的覆盖率结果。
        #gcov xxx.cpp
2、使用lcov获取html形式的覆盖率数据
        使用IBM的lcov来产生html结果数据,具体如下:
        #lcov -c -d ./ -o app.info
        #genhtml app.info -o cc_result
        更多lcov信息,请参见。

四、展示数据
        将步骤三中产生的覆盖率数据文件放到Apached的htdocs目录下,就能通过浏览器来查看覆盖率结果了。

五、基本术语
1、行覆盖率(line coverage)
        即源代码有效行数与被执行的代码行的比率。
2、分支覆盖率(branch coverage)
        即有判定语句的地方都会出现2个分支,整个程序经过的分支与所有分支的比率是分支覆盖率。
3、增量覆盖率(incremental coverage)
        即被执行的新增和修改的代码行数与新增和修改的代码行数的比率。

        更多详细信息,请参看。


阅读(1531) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~