代码覆盖率测试

来源:互联网 发布:gpd pocket 知乎 编辑:程序博客网 时间:2024/04/30 05:37
$ gcc -c fib.c -ftest-coverage -fprofile-arcs

链接的时候下面三条任选一个执行即可

$ gcc fib.o -o fib --coverage$ gcc fib.o -o fib -lgcov$ gcc fib.o -o fib -fprofile-arcs

运行程序 fib

$ ./fib

 会生成 .gcda 文件,.gcda是由加了-fprofile-arcs编译参数的编译后的文件运行所产生的,它包含了弧跳变的次数和其他的概要信息。

生成 gcov 报告

$ gcov fib.c


LCOV 整理覆盖率数据

1. 汇总覆盖率数据,使用已经生成的 .gcno .gcda 文件生成覆盖率数据

$ lcov -c -o fib.info -d .

 

简单解释一下三个选项

-c: lcov 的一个操作,表示要去捕获覆盖率数据

-o: 输出文件

-d: .gcno .gcda 所在的文件夹,注意这里有个“.”,是从当前文件夹中获取数据的

问题又来了,开始在 lcov 的过程中,碰到 Negative length 的问题,顺着提示找到 lcov 源码中的一处 $(length) ,之后并没有头绪为什么会是负值传入的,于是根据 sourceforge 上面的地址,发了一封邮件询问了一下,回信意思是我使用的 gcc 版本为 4.7.2,需要 lcov 1.10+ 版本支持,使用 1.09 或更低版本的 lcov 会出现这样的问题。于是到以下地址去下载了最新的 lcov

http://ltp.sourceforge.net/coverage/lcov.php

在 lcov 1.10 的 release notes 中写明了对 gcc 4.7+ 提供了支持。

2. 生成 html 格式的报告

$ genhtml fib.info -o fib_result

 

genhtml 是安装 lcov 时附带的,使用上面产生的 .info 文件生成报告,存放于 fib_result 文件夹中

没错,这里的报告并不只是一个文件,有好多存放在你 -o 指定的目录下,生成之后进入 fib_result 就可以看见念想很久的 index.html 了

这里再分享一下怎么从 terminal 用浏览器打开网页:

$ firefox index.html

原创粉丝点击