Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3340855
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: LINUX

2010-12-23 17:58:13

使用到的相关工具:
1 gcc/g++
   gcc/g++是大家熟悉的编译工具
2 lcov(包含lcov和genhtml两个小工具)
   可以到 下载。

安装lcov工具
    根据下载安装包的readme文件,安装工具包。
    make install
    安装完成后,就有两个命令可用:lcov 和 genhtml

代码覆盖率测试详细步骤:
1 编写代码;
2 编写makefile,每条编译语句(包括link)里添加 -fprofile-arcs -ftest-coverage 参赛选项;
3 make代码,生成执行文件,同时生成了.gcno文件;
4 运行程序执行测试,测试过程中,生成.gcda文件;
5 搜集代码覆盖率信息,并生成app.info文件
   lcov --directory . --capture --output-file app.info
6 将app.info代码覆盖率信息文件,转换成html格式的测试报告
   genhtml -o result app.info

实例:
程序文件
/// CCADemo.cpp
#include
#include
#include

bool IsLarger(const int nNum1, const int nNum2)
{
if (nNum1 > nNum2)
{
   return true;
}
else
{
   return false;
}
}

int main(int argc, char** argv)
{
int nRetVal = false;
int nNum1 = 0;
int nNum2 = 0;

if (argc != 3)
{
   printf("Fail : check argc !=3\r\n");
   goto Exit0;
}

nNum1 = atoi(argv[1]);
nNum2 = atoi(argv[2]);

printf("%d is larger than %d ? %d \r\n", nNum1, nNum2, IsLarger(nNum1, nNum2));

Exit0:

return nRetVal;
}

makefile文件
CC      = g++
Demo    = demo
CCA = -fprofile-arcs -ftest-coverage -g
COMPILE = -c -fPIC -D_DEBUG

$(Demo) : CCADemo.o
$(CC) -o $(Demo) CCADemo.o $(CCA)

CCADemo.o : CCADemo.cpp
$(CC) $(COMPILE) $(CCA) $^

编译程序:make

运行程序:
./demo
./demo 2 3
./demo 3 2

收集代码覆盖率信息,生成cca.data文件
lcov --directory . --capture --output-file cca.data

将cca.data文件转换成html格式报告
genhtml --no-source -o result cca.data

查看result目录,即可得。

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