本博客
http://blog.csdn.net/livelylittlefish 贴出做者(三二一@小鱼)相关研究、学习内容所作的笔记,欢迎广大朋友指正!
Contentphp
1. Lcov是什么?css
2.如何在Linux平台安装Lcov?html
3.如何使用Lcov?前端
(1)使用lcov收集覆盖率数据并写入文件ruby
(2)使用genhtml生成基于HTML的输出app
(3)该例子的图形显示函数
4.编译lcov自带例子工具
5.其余相关工具学习
(1) gcov-dump测试
(2) ggcov
1. Lcov是什么?
是GCOV图形化的前端工具
是Linux Test Project维护的开放源代码工具,最初被设计用来支持Linux内核覆盖率的度量
基于Html输出,并生成一棵完整的HTML树
输出包括概述、覆盖率百分比、图表,能快速浏览覆盖率数据
支持大项目,提供三个级别的视图:目录视图、文件视图、源码视图
Use lcov to collect coverage data and genhtml to create HTML pages. Coverage data can either be collectedfrom the currently running Linux kernel or from a user space application. To do this, youhavetocomplete the following preparation steps:
For Linux kernel coverage:
Followthe setup instructions for the gcov-kernel infrastructure:
For user space application coverage:
Compile the application with GCC using the options "-fprofile-arcs" and "-ftest-coverage".
2.如何在Linux平台安装Lcov?
# tar -zxvf lcov-1.9.tar.gz
# cd lcov-1.9
# ls
bincontribdescriptions.testslcovrcmanrpm
CHANGESCOPYINGexampleMakefileREADME
# make install
不须要编译,直接安装便可,lcov,gendesc, genhtml, geninfo, genpng将被安装到/usr/bin目录。
3.如何使用Lcov?
以Linux平台代码覆盖率测试工具GCOV简介一文的例子为例。
(1)使用lcov收集覆盖率数据并写入文件
# lcov --capture --directory . --output-file test.info --test-name test
Capturing coverage data from .
Found gcov version: 4.1.2
Scanning . for .gcda files ...
Found 1 data files in .
Processing test.gcda
Finished .info-file creation
.表示当前目录,收集coverage data,即.gcda文件中的信息,并写入test.info文件,且取名为test。其余选项请参考lcov的manual页。
test.info文件内容以下。
TN:test
SF:/home/zubo/gcc/2011-04-10.sample/test.c
FN:4,main
FNDA:1,main
FNF:1
FNH:1
BRDA:9,2,0,10
BRDA:9,2,1,1
BRDA:12,0,0,0
BRDA:12,0,1,1
BRF:4
BRH:3
DA:4,1
DA:7,1
DA:9,11
DA:10,10
DA:12,1
DA:13,0
DA:15,1
DA:16,1
LF:8
LH:7
end_of_record
(2)使用genhtml生成基于HTML的输出
# genhtml test.info --output-directory output --title "a simple test" --show-details --legend
Reading data file test.info
Found 1 entries.
Found common filename prefix "/home/zubo"
Writing .css and .png files.
Generating output.
Processing file gcc/2011-04-10.sample/test.c
Writing directory view page.
Overall coverage rate:
lines......: 87.5% (7 of 8 lines)
functions..: 100.0% (1 of 1 function)
branches...: 75.0% (3 of 4 branches)
选项解释请参考genhtml的manual页。cd到output目录,能够看到,生成了不少相关文件,以下。
# cd output
# ls
amber.pnggcov.cssindex-sort-b.htmlruby.png
emerald.pngglass.pngindex-sort-f.htmlsnow.png
gccindex.htmlindex-sort-l.htmlupdown.png
(3)该例子的图形显示
(3.1) top level的视图
(3.2)文件或函数的视图
4.编译lcov自带例子
# cd/usr/src/lcov-1.9/example
# make
编译、运行自带例子并查看结果是快速学习某个工具最好的方法。从example的makefile文件和编译输出,均可以学习相关概念和命令的使用方法。Html输出能够由/usr/src/lcov-1.9/example/output/index.html查看。读者可自行实验。
5.其余相关工具
(1) gcov-dump
或许,咱们还能够使用gcov-dump命令输出gcov的相关数据,但gcc默认不编译gcov-dump,所以,要使用它,可能须要从新编译gcc。
(2) ggcov
Ggcov is aGraphical tool for displaying gcov test coverage data.详细信息可参考http://ggcov.sourceforge.net。
Reference
lcov的manual页
genhtml的manual页
geninfo的manual页
lcov的readme文件,本文/usr/src/lcov-1.9/README
lcov的makefile文件,本文为/usr/src/lcov-1.9/Makefile
Technorati 标签:
Linux,
代码覆盖率,
Gcov,
Lcov