覆盖率測试工具gcov的前端工具_LCOV_简单介绍
1、Gcov是进行代码运行的覆盖率统计的工具。它随着gcc的公布一起公布的,它的使用也非常easy,须要在编译和链接的时候加上-fprofile-arcs -ftest-coverage生成二进制文件,gcov主要使用.gcno和.gcda两个文件。.gcno是由-ftest-coverage产生的。它包括了重建基本块图和对应的块的源代码的行号的信息。
.gcda是由加了-fprofile-arcs编译參数的编译后的文件运行所产生的。它包括了弧跳变的次数和其它的概要信息。gcda文件的生成须要先运行可运行文件才干生成。
生成gcda文件之后运行命令gcov *.cpp就会在屏幕上打印出測试的覆盖率。并同一时候生成文件“*cpp.gcov”,然后用vi打开就能够看见哪行被覆盖掉了。
2、lcov的安装非常easy,下载源代码运行make install就能够了,在生成的“*.cpp.gcov"文件里运行lcov --directory . --capture --output-file app.info生成info文件。再运行genhtml -o results app.info就会生成result文件夹。生成的html文件就在result文件夹下。
1、Gcov是进行代码运行的覆盖率统计的工具。它随着gcc的公布一起公布的,它的使用也非常easy,须要在编译和链接的时候加上-fprofile-arcs -ftest-coverage生成二进制文件,gcov主要使用.gcno和.gcda两个文件。.gcno是由-ftest-coverage产生的。它包括了重建基本块图和对应的块的源代码的行号的信息。
.gcda是由加了-fprofile-arcs编译參数的编译后的文件运行所产生的。它包括了弧跳变的次数和其它的概要信息。gcda文件的生成须要先运行可运行文件才干生成。
生成gcda文件之后运行命令gcov *.cpp就会在屏幕上打印出測试的覆盖率。并同一时候生成文件“*cpp.gcov”,然后用vi打开就能够看见哪行被覆盖掉了。
2、lcov的安装非常easy,下载源代码运行make install就能够了,在生成的“*.cpp.gcov"文件里运行lcov --directory . --capture --output-file app.info生成info文件。再运行genhtml -o results app.info就会生成result文件夹。生成的html文件就在result文件夹下。
___________________________
http://www.linuxidc.com/Linux/2011-05/36544.htm
Content
1. Lcov是什么?
2. 怎样在Linux平台安装Lcov?
3. 怎样使用Lcov?
(1) 使用lcov收集覆盖率数据并写入文件
(2) 使用genhtml生成基于HTML的输出
(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 collected from the currently running Linux kernel or from a user space application. To do this, you have to complete the following preparation steps:
For Linux kernel coverage:
Follow the setup instructions for the gcov-kernel infrastructure:
http://ltp.sourceforge.net/coverage/gcov.php
For user space application coverage:
Compile the application with GCC using the options "-fprofile-arcs" and "-ftest-coverage".
2. 怎样在Linux平台安装Lcov?
# wget http://downloads.sourceforge.net/ltp/lcov-1.9.tar.gz
# tar -zxvf lcov-1.9.tar.gz
# cd lcov-1.9
# ls
bin contrib descriptions.tests lcovrc man rpm
CHANGES COPYING example Makefile README
# 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.png gcov.css index-sort-b.html ruby.png
emerald.png glass.png index-sort-f.html snow.png
gcc index.html index-sort-l.html updown.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查看。
读者可自行实验。
覆盖率測试工具gcov的前端工具_LCOV_简单介绍的更多相关文章
- 覆盖率测试工具gcov的前端工具_LCOV
http://my.oschina.net/alphajay/blog/33725 1.Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候 ...
- Java静态检测工具/Java代码规范和质量检查简单介绍(转)
静态检查: 静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码检查代码检查包括代码走查.桌面检查.代码审查等,主要检查代码 ...
- Particle designer 粒子工具中属性对应功能的简单介绍
粒子配置 Max Particles 粒子的数量 一般而言,我们的目标是用最少的粒子创造出所需的效果.单个粒子的大小对游戏运行效率也有很大的影响——单个粒子越小,性能越高. Lifespan 生命周 ...
- 测试工具之Jmeter(各部件简单介绍)
jmeter可以到官网下载: http://jakarta.apache.org/ 下载后解压即可使用,双击如下文件打开Jmeter界面: $JMETER_HOME\apache-jmeter-3.1 ...
- 前端框架Bootstrap简单介绍
下载: 解压之后: 把这些文件拷贝到项目中 页面使用时 只需要引入: 然后我们就可以参考官网来设计需要的前端页面了 设计一个按钮:button 只需要标明css样式中使用的类 下面就是现实效果:
- 前端框架VUE----es6简单介绍
1.ECMAScript 6 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScr ...
- web前端----JavaScript(JS)简单介绍
JavaScript(JS) 一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEa ...
- 前端--javaScript之简单介绍
一.javaScript(以下简称js)的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端 ...
- 移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践
这篇是计算机类的优质预售推荐>>>><移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践> 国内顶级互联网公司測试实战经验总结.阿里.腾讯.京东.携程.百 ...
随机推荐
- 【【henuacm2016级暑期训练】动态规划专题 N】Valid Sets
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 给你一棵树. 让你统计其中子树T的数量. 这个子树T要满足最大值和最小值之差小于等于d 树形DP 可以枚举点root为子树的根. 统 ...
- ZOJ 3829 模拟贪心
2014牡丹江现场赛水题 给出波兰式,推断其是否合法.假设不合法有两种操作: 1:任何位置加一个数字或者操作符 2:随意两个位置的元素对调 贪心模拟就可以 先推断数字数是否大于操作符数,若不大于 an ...
- cocos2d-x 2.2.2 在lua中更换CCSprite的图片
废话不多说,直接上代码 --lua --获取场景 local scene= CCDirector:sharedDirector():getRunningScene() --创建精灵 local tes ...
- D3D 线列 小样例
画两条线 #pragma once #pragma comment(lib,"d3d9.lib") #pragma comment(lib,"d3dx9.lib" ...
- m_Orchestrate learning system---二十七、修改时如何快速找到作用位置
m_Orchestrate learning system---二十七.修改时如何快速找到作用位置 一.总结 一句话总结:找人,找起作用的位置真的重要,找到就事半功倍了 加载页面的时候观察在f12的e ...
- 2.windows下安装git
转自:https://blog.csdn.net/lvkelly/article/details/54666868
- tabIndex-bootstrap中Get到的
网页键盘的无障碍访问性 其实加了这个,可以控制Tab键切换的顺序,聚焦等 这个属性,任何标签都可以添加,没有兼容性限制,属性值的范围:0-32767 当一个元素设置tabindex属性值为-1的时候, ...
- hiho 1572 - set.upper_bound,排序树
链接 小Hi家的阳台上摆着一排N个空花盆,编号1~N.从第一天开始,小Hi每天会选择其中一个还空着花盆,栽种一株月季花,直到N个花盆都栽种满月季. 我们知道小Hi每天选择的花盆的编号依次是A1, A2 ...
- RocketMQ学习笔记(6)----RocketMQ的Client的使用 Producer/Consumer
1. 添加依赖 pom.xml如下: <dependency> <groupId>org.apache.rocketmq</groupId> <artifa ...
- ZBrush中Z球(ZSphere和ZSphereⅡ)
ZSphere可以让用户使用干净的拓扑结构快速建立一个基础网格,然后将其塑造成任何形状.ZSphere的强大在于它非常简单,用户可以从一个单一的ZSphere开始,然后轻松地在其上面增加新的ZSphe ...