文档章节

Linux平台代码覆盖率测试工具GCOV的前端工具LCOV简介

木木情深
 木木情深
发布于 2015/06/24 15:52
字数 872
阅读 124
收藏 0

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。其他选项请参考lcovmanual页。

 

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)

选项解释请参考genhtmlmanual页。cdoutput目录,可以看到,生成了很多相关文件,如下。 

# 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

 

编译、运行自带例子并查看结果是快速学习某个工具最好的方法。从examplemakefile文件和编译输出,都可以学习相关概念和命令的使用方法。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 a Graphical tool for displaying gcov test coverage data详细信息可参考http://ggcov.sourceforge.net

 

 

Reference

lcovmanual

genhtmlmanual

geninfomanual

lcovreadme文件,本文/usr/src/lcov-1.9/README

lcovmakefile文件,本文为/usr/src/lcov-1.9/Makefile



本文转载自:http://blog.csdn.net/livelylittlefish/article/details/6321887

共有 人打赏支持
木木情深
粉丝 37
博文 189
码字总数 26451
作品 0
广州
程序员
覆盖率测试工具gcov的前端工具_LCOV_简介

1、Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候加上-fprofile-arcs -ftest-coverage生成二进制文件,gcov主要使用.gcno和...

21cnbao
2014/10/19
0
0
覆盖率测试工具gcov的前端工具_LCOV_简介

1、Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候加上-fprofile-arcs -ftest-coverage生成二进制文件,gcov主要使用.gcno和...

AlphaJay
2011/10/21
0
0
Linux平台代码覆盖率测试工具GCOV的前端工具LCOV简介

本博客http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! Content 1. Lcov是什么? 2. 如何在Linux平台安装Lcov? 3. 如何使...

晨曦之光
2012/03/09
540
0
Mac使用gcov、lcov进行覆盖率测试

本文目的: 简单介绍所使用的工具 示范一遍覆盖率流程 得到代码文件→进行编译并插桩→跑程序→运行gcov、lcov,输出覆盖率可视化文件 进一步说明细节内容 参考文献 A.基础内容: 1.GCC GCC是...

LightingContour
08/18
0
0
gcov 使用注意事项

以前做过一些gcov方面的工作,最近又做,发现一些踩过的坑被忘记了,又整理了一遍,防止再次出现类似情况。 使用gcov测试代码覆盖率的流程是: 添加编译选项和链接选项-》运行程序(设置GCO...

hakuyo
01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

技术工坊|如何降低区块链应用的使用门槛(上海)

当区块链技术从专业研究走向市场应用,开发者需要考虑用户的使用场景和使用门槛,例如通过ETH支付gas手续费,或者注册一个16进制的用户名,普通用户都难以接受。 10月20日,HiBlock区块链社区...

HiBlock
26分钟前
1
0
Daemon线程--《Java并发编程的艺术》学习笔记

daemon线程即守护线程 当一个JVM中不存在非Daemon线程时,JVM将会退出 也就是说当非Daemon线程都执行完毕时,java程序也就结束了。 可以通过调用Thread.setDaemon(true)将线程设置为Daemon线...

karma123
32分钟前
0
0
scala类型参数的上界和下界

class Pair[T <: Comparable[T]](val first:T,val second:T) //类型T必须要是Comparable接口的子类(即T是Comparable的下界){ def bigger = if(first.compareTo(second) > 0) first e......

whoisliang
43分钟前
1
0
Vue中路由管理器Vue Router使用介绍(一)

一、在模块编程中安装VueRouter 1.Npm安装vue-router npm install vue-router 2.在main.js中引用并使用VueRouter import Vue from 'vue'import VueRouter from 'vue-router'Vue.use(Vu......

tianma3798
45分钟前
1
0
TypeScript基础入门之声明合并(一)

转发 TypeScript基础入门之声明合并(一) 声明合并 介绍 TypeScript中的一些独特概念描述了类型级别的JavaScript对象的形状。 TypeScript特别独特的一个例子是"声明合并"的概念。 在使用现有J...

durban
59分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部