最新内容地址:使用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测试代码覆盖率相关推荐

  1. GCOV的使用-测试代码覆盖率

    1. gcov是什么? Gcov is GCC Coverage 是一个测试代码覆盖率的工具 是一个命令行方式的控制台程序 伴随GCC发布,配合GCC共同实现对C/C++文件的语句覆盖和分支覆盖测试: ...

  2. 代码覆盖率测试工具:gcov和lcov的使用

    官网: http://gcc.gnu.org/onlinedocs/gcc/Gcov.html http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options. ...

  3. 覆盖率工具gcov,lcov实践

    覆盖率工具gcov,lcov实践记录 背景 本文记录的是gcov和lcov在统计一个分布式数据库的代码覆盖率过程中遇到的问题. 介绍 *gcov是一个测试代码覆盖率的工具,随着gcc一起发布,不需要进 ...

  4. Linux下gcov和lcov代码覆盖率分析(C/C++覆盖率在NGINX测试中的应用)

    Linux下gcov和lcov代码覆盖率分析方法 gcov是Linux下GCC自带的一个C/C++代码覆盖率分析工具 使用方法:在gcc或者g++后面添加参数 -fprofile-arcs -ftes ...

  5. 代码覆盖率测试gcov和lcov

    gcov是什么? 测试代码覆盖率的工具 命令行方式控制台程序 GCC自带,伴随GCC一起发布 可以和gprof一起工作估算代码执行时间 gcov能做什么? 每一行代码的执行效率 哪些代码确实被执行了 ...

  6. c语言查看文件覆盖率,Mac使用gcov、lcov进行覆盖率测试

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

  7. jacoco测试代码覆盖率_使用Jacoco测量多模块Android项目中的单元测试覆盖率:第2部分

    jacoco测试代码覆盖率 In the first article, we discovered one of the two key Gradle commands which come with ...

  8. 查看测试代码覆盖率solidity-coverage

    查看测试代码覆盖率 ​ hardhat提供了一个查看当前我们编写的测试代码的功能覆盖率的插件,叫做solidity-coverage,专门用于可靠性测试的代码覆盖率. 文章目录 查看测试代码覆盖率 下 ...

  9. coverage 测试代码覆盖率

    测试覆盖率,简单的说,就是评价测试活动覆盖产品代码的指标.测试的目的,是确认产品代码按照预期一样工作,也可以看作是产品代码工作方式的说明文档.进一步考虑,测试覆盖率可以看作是产品代码质量的间接指标-- ...

  10. i.MX arm 3.12.28 Kernel Configuration

    #make menucofig画面 General setup  --->                                                 通用选项设置 │ │ ...

最新文章

  1. 干货|NLP 的四张技术路线图,带你系统设计学习路径
  2. Theme、StylesheetTheme设置ASP.NET的样式与主题
  3. gb2312 requests乱码_不要相信requests返回的text
  4. TOMCAT的域名配置
  5. JAVA Unsafe类
  6. 复制(主从复制、读写分离)
  7. D. Imbalanced Array
  8. 如何在Ubuntu Linux上安装JDK
  9. ffmpeg 源代码简单分析 : av_read_frame()
  10. Oracle数据库DBA必备基本技能
  11. c++ 中类重复定义的分析与解决办法
  12. maxdea如何计算指数_maxdea 5.0中文简体使用手册.pdf
  13. 视频测试皮肤的软件,皮肤检测仪(LEIM魔镜仪)安装及操作视频
  14. 广电CMMB手机电视芯片量产 称能满足奥运需求
  15. 安卓逆向,Python爬虫,网页逆向和其他学习计划
  16. ROS 自定义地图导航
  17. 【MATLAB】MATLAB 仿真 — 窄带高斯白噪声
  18. iOS脚本一键生成各种尺寸的icon
  19. IDE工具、文本编辑器的列块编辑模式
  20. matlab7.1一直打不开,Matlab 7.1安装及打不开问题解决

热门文章

  1. 日志收集系统Flume笔记(基础版)
  2. c语言解除键盘锁定,笔记本键盘怎么解除锁定
  3. 大胖子走迷宫 [蓝桥杯 ]
  4. odi连接oracle数据库,通过ODI接口把数据从Oracle数据库抽到HIVE数据库怎么解决
  5. MAC地址克隆是什么意思
  6. 017 打渔晒网问题
  7. 手写平衡二叉树(二)
  8. HEX文件和BIN文件的区别及HEX的代码转换
  9. Cipher的初应用
  10. python 爬取链家北京租房信息