文档章节

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

木木情深
 木木情深
发布于 2015/06/24 15:52
字数 872
阅读 125
收藏 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
广州
程序员
私信 提问
Linux平台代码覆盖率测试工具GCOV的前端工具LCOV简介

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

晨曦之光
2012/03/09
642
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
Mac使用gcov、lcov进行覆盖率测试

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

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

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

hakuyo
01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 配置边栏

如果你具有空间的管理员权限,你可以对空间的变量进行自定义,让你的空间具有自己的空间标识(logo),修改显示的继承关系和在空间中添加快捷方式以帮助用户在空间中进行快速导航。 希望开始...

honeymose
18分钟前
0
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部