使用gcov和lcov测试代码覆盖率
最新内容地址:使用gcov和lcov测试代码覆盖率
gcov与 lcov简介
通过gcov和lcov,可以很直观的看到代码的运行情况,同时也可以查看
代码的行覆盖率,函数覆盖率等等信息,为开发提供一个方便的测试手段。
gcov
gcov是Linux下GCC自带的一个C/C++代码覆盖率分析工具,因此只要安装了gcc,就不需要再次安装了
lcov
lcov介绍
gcov能够生成代码覆盖信息,但是不够直观,因此需要借助lcov直观展示覆盖率,主要特点有:
基于Html输出,并生成一棵完整的HTML树
输出包括概述、覆盖率百分比、图表,能快速浏览覆盖率数据
支持大项目,提供三个级别的视图:目录视图、文件视图、源码视图
lcov安装
下载地址:lcov
下载完成后解压,执行命令:make install即可。
下面简单介绍linux下,使用gcov和locov进行代码覆盖率的测试。
测试
测试代码:
/***************************************************************
* Copyright (C) 2017 All rights reserved.
*
* 文件名称:test.c
* 创 建 者:hyb
* 创建日期:2017年08月06日
* 描 述:
*
***************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int* twoSum(int* nums, int numsSize, int target) {int loop = 0;int inloop = 0;int* result = NULL;result =(int*) malloc(2*sizeof(int));memset(result,0,2*sizeof(int));printf("numsSize=%d\n",numsSize);if(NULL == nums || numsSize==0){return result;}for(loop = 0;loop < numsSize;loop++){for(inloop = loop+1;inloop <numsSize;inloop++){if(*(nums+loop)+*(nums+inloop) == target){if(NULL != result){*result = loop;*(result+1) = inloop;}return result;}}}return result;
}int main(int arg,char argv[])
{int nums[4]={2,7,11,15};int target = 9;int numsSize = 4;int* result = twoSum(nums,numsSize,target);printf("index1:%d\nindex2:%d\n",*result,*(result+1));
}
编译
gcc -fprofile-arcs -ftest-coverage test.c -o test
上面的参数-fprofile-arcs -ftest-coverage一定要带上,会生成gcno文件
运行
./test
生成了gcda文件
转换覆盖率信息
lcov -c -o test.info -d .
-c 生成覆盖率信息
-o 生成目标文件
-d 目录
. 当前目录
可能出现的出错:可能会提示out of memory,原因是locv版本过低。
生成html文件
genhtml test.info -o ./output
tst.info 需要生成覆盖率信息的源文件
-o 生成结果目录
最后会有提示如下:
Generating output.
Processing file gcov_lcov/test.c
Writing directory view page.
Overall coverage rate:
lines…: 91.3% (21 of 23 lines)
functions…: 100.0% (2 of 2 functions)
可以看到output目录下有index.html文件
使用浏览器打开html文件,即可查看覆盖率报告
覆盖率报告分析
从上图可以看到
整个工程的代码行覆盖率和函数覆盖率,分支覆盖情况
继续点击test.c,可以看到具体每行是否有跑到。
褐色表示未跑到过的代码,左侧数字表示跑到的次数。
总结
结合使用gcov和locv,可以比较直观的观察到运行的程序是否按照自己的设计,
跑到了对应的代码中。
本文作者: 守望
本文链接: www.yanbinghu.com/2017/08/06/13981.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
使用gcov和lcov测试代码覆盖率相关推荐
- GCOV的使用-测试代码覆盖率
1. gcov是什么? Gcov is GCC Coverage 是一个测试代码覆盖率的工具 是一个命令行方式的控制台程序 伴随GCC发布,配合GCC共同实现对C/C++文件的语句覆盖和分支覆盖测试: ...
- 代码覆盖率测试工具:gcov和lcov的使用
官网: http://gcc.gnu.org/onlinedocs/gcc/Gcov.html http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options. ...
- 覆盖率工具gcov,lcov实践
覆盖率工具gcov,lcov实践记录 背景 本文记录的是gcov和lcov在统计一个分布式数据库的代码覆盖率过程中遇到的问题. 介绍 *gcov是一个测试代码覆盖率的工具,随着gcc一起发布,不需要进 ...
- Linux下gcov和lcov代码覆盖率分析(C/C++覆盖率在NGINX测试中的应用)
Linux下gcov和lcov代码覆盖率分析方法 gcov是Linux下GCC自带的一个C/C++代码覆盖率分析工具 使用方法:在gcc或者g++后面添加参数 -fprofile-arcs -ftes ...
- 代码覆盖率测试gcov和lcov
gcov是什么? 测试代码覆盖率的工具 命令行方式控制台程序 GCC自带,伴随GCC一起发布 可以和gprof一起工作估算代码执行时间 gcov能做什么? 每一行代码的执行效率 哪些代码确实被执行了 ...
- c语言查看文件覆盖率,Mac使用gcov、lcov进行覆盖率测试
本文目的: 简单介绍所使用的工具 示范一遍覆盖率流程 得到代码文件→进行编译并插桩→跑程序→运行gcov.lcov,输出覆盖率可视化文件 进一步说明细节内容 参考文献 A.基础内容: 1.GCC GC ...
- jacoco测试代码覆盖率_使用Jacoco测量多模块Android项目中的单元测试覆盖率:第2部分
jacoco测试代码覆盖率 In the first article, we discovered one of the two key Gradle commands which come with ...
- 查看测试代码覆盖率solidity-coverage
查看测试代码覆盖率 hardhat提供了一个查看当前我们编写的测试代码的功能覆盖率的插件,叫做solidity-coverage,专门用于可靠性测试的代码覆盖率. 文章目录 查看测试代码覆盖率 下 ...
- coverage 测试代码覆盖率
测试覆盖率,简单的说,就是评价测试活动覆盖产品代码的指标.测试的目的,是确认产品代码按照预期一样工作,也可以看作是产品代码工作方式的说明文档.进一步考虑,测试覆盖率可以看作是产品代码质量的间接指标-- ...
- i.MX arm 3.12.28 Kernel Configuration
#make menucofig画面 General setup ---> 通用选项设置 │ │ ...
最新文章
- 干货|NLP 的四张技术路线图,带你系统设计学习路径
- Theme、StylesheetTheme设置ASP.NET的样式与主题
- gb2312 requests乱码_不要相信requests返回的text
- TOMCAT的域名配置
- JAVA Unsafe类
- 复制(主从复制、读写分离)
- D. Imbalanced Array
- 如何在Ubuntu Linux上安装JDK
- ffmpeg 源代码简单分析 : av_read_frame()
- Oracle数据库DBA必备基本技能
- c++ 中类重复定义的分析与解决办法
- maxdea如何计算指数_maxdea 5.0中文简体使用手册.pdf
- 视频测试皮肤的软件,皮肤检测仪(LEIM魔镜仪)安装及操作视频
- 广电CMMB手机电视芯片量产 称能满足奥运需求
- 安卓逆向,Python爬虫,网页逆向和其他学习计划
- ROS 自定义地图导航
- 【MATLAB】MATLAB 仿真 — 窄带高斯白噪声
- iOS脚本一键生成各种尺寸的icon
- IDE工具、文本编辑器的列块编辑模式
- matlab7.1一直打不开,Matlab 7.1安装及打不开问题解决