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_简单介绍的更多相关文章

  1. 覆盖率测试工具gcov的前端工具_LCOV

    http://my.oschina.net/alphajay/blog/33725 1.Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候 ...

  2. Java静态检测工具/Java代码规范和质量检查简单介绍(转)

    静态检查: 静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码检查代码检查包括代码走查.桌面检查.代码审查等,主要检查代码 ...

  3. Particle designer 粒子工具中属性对应功能的简单介绍

    粒子配置 Max Particles 粒子的数量  一般而言,我们的目标是用最少的粒子创造出所需的效果.单个粒子的大小对游戏运行效率也有很大的影响——单个粒子越小,性能越高. Lifespan 生命周 ...

  4. 测试工具之Jmeter(各部件简单介绍)

    jmeter可以到官网下载: http://jakarta.apache.org/ 下载后解压即可使用,双击如下文件打开Jmeter界面: $JMETER_HOME\apache-jmeter-3.1 ...

  5. 前端框架Bootstrap简单介绍

    下载: 解压之后: 把这些文件拷贝到项目中 页面使用时  只需要引入: 然后我们就可以参考官网来设计需要的前端页面了 设计一个按钮:button 只需要标明css样式中使用的类  下面就是现实效果:

  6. 前端框架VUE----es6简单介绍

    1.ECMAScript 6 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScr ...

  7. web前端----JavaScript(JS)简单介绍

    JavaScript(JS) 一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEa ...

  8. 前端--javaScript之简单介绍

    一.javaScript(以下简称js)的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端 ...

  9. 移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践

    这篇是计算机类的优质预售推荐>>>><移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践> 国内顶级互联网公司測试实战经验总结.阿里.腾讯.京东.携程.百 ...

随机推荐

  1. 【【henuacm2016级暑期训练】动态规划专题 M】Little Pony and Harmony Chest

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每一位显然只要取1..60这些数字. 然后需要保证每个这些数字里面,每个数字所用到的质因子都它所唯一拥有的.别人不能用 因为如果别人 ...

  2. android 使用讯飞人脸识别api报错:java.lang.UnsatisfiedLinkError

    1.在做一个人脸识别的项目,使用的是讯飞的api,编辑器为AS2.0,运行时报如下错误: FATAL EXCEPTION: main                  Process: com.adm ...

  3. iOS KVC(Key-Value Coding)

    常见用法: 获取值 valueForKey: 依据属性名取值 valueForKeyPath: 依据路径取值(如:[person valueForKeyPath:@"car.price&qu ...

  4. jsp的凝视可能会影响页面载入速度

    在jsp页面使用"<!-- -->"的凝视,凝视里面的java代码还是会得到运行,能够再查看页面源码上看到运行完毕的内容,这样就会让不希望运行的代码得到运行.影响载入速 ...

  5. xBIM 基础07 创建WebBIM文件

    系列目录    [已更新最新开发文章,点击查看详细]  xBIM项目提供了一个IFC文件的Web查看器.当你想把IFC转换成紧凑的WexBIM时,需要 xBIM Essentials 和 xBIM G ...

  6. POJ 1949 DP?

    题意: 有n个家务,第i个家务需要一定时间来完成,并且第i个任务必须在它 "前面的" 某些任务完成之后才能开始. 给你任务信息,问你最短需要多少时间来完成任务. 输入: 第一行n个 ...

  7. rem 、em

    介绍:rem是相对字体单位:根据html根元素大小而定,同样可作为宽高等单位: 适配原理:将px替换成rem,采用rem适配移动web的原理,根据不同屏幕宽度设置html的font-size的大小: ...

  8. MyBatis数据持久化(四)类型别名

    Mybatis的类型别名指的是我们可以为Java类型自定义一个简短的名字,以达到简化配置的目的,在上篇博文中我们的sql语句配置文件内容如下: <?xml version="1.0&q ...

  9. watch监听

    watch: { getTitle:{ handler:function(val,oldval){ }, deep:true//对象内部的属性监听,也叫深度监听 }, },

  10. li自定义图标

    /*自定义list的图标*/ li{ list-style-image: url(../img/21.JPG); }