lcov收集覆盖率

OpenHarmony覆盖率测试,gcov及lcov的原理和使用简介 采用覆盖率驱动的验证方式可以量化验证进度,保证验证的完备性。本文主要介绍了openharmony代码和分支覆盖率测试中所使用的工具(即gcov及lcov)的简介、工作原理及使用方法。 立即下载

1、gcov

1.1 什么是gcov

      首先我们要了解什么是gcov,gcov伴随gcc 发布。gcc编译加入-fprofile-arcs -ftest-coverage 参数生成二进制程序,执行测试用例生成代码覆盖率信息。

1.2 如何使用gcov

      用GCC编译的时候加上-fprofile-arcs -ftest-coverage选项,链接的时候也加上。
      fprofile-arcs参数使gcc创建一个程序的流图,之后找到适合图的生成树。只有不在生成树中的弧被操纵(instrumented):gcc添加了代码来清点这些弧执行的次数。当这段弧是一个块的唯一出口或入口时,操纵工具代码(instrumentation code)将会添加到块中,否则创建一个基础块来包含操纵工具代码。

      gcov主要使用.gcno和.gcda两个文件。
     .gcno是由-ftest-coverage产生的,它包含了重建基本块图和相应的块的源码的行号的信息。
     .gcda是由加了-fprofile-arcs编译参数的编译后的文件运行所产生的,它包含了弧跳变的次数和其他的概要信息(而gcda只能在程序运行完毕后才能产生的)。

1.3 gcov 覆盖分类

  Gcov执行函数覆盖、语句覆盖和分支覆盖。

  举个例子,程序代码由main.c和test.c两个文件组成,编译、链接、运行程序
  编译:gcc -fprofile-arcs -ftest-coverage -o myapp main.c test.c
  运行:./myapp
  然后 输入

1

gcov main.c,gcov tmp.c

  这个时候当前目录下有了新的文档main.c.gcov,和tmp.c.gcov
  若想保存覆盖率文件,上述命令修改为:
  命令:gcov main.c >>yourfilename,gcov tmp.c >>yourfilename

  而这时候的main.c.gcov,和tmp.c.gcov就包含了函数和代码执行次数的信息,我们可以查看结果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

-:    0:Source:main.cpp

        -:    0:Graph:main.gcno

        -:    0:Data:main.gcda

        -:    0:Runs:1

        -:    0:Programs:1

        -:    1:#include <iostream>

        -:    2:using namespace std;

        1:    3:int main()

        -:    4:{

        -:    5:    int i,total;

        1:    6:    total = 0;

        -:    7:

       11:    8:    for (i=0; i<10; i++)

       10:    9:        total += i;

        -:   10:

        1:   11:    if (total != 45)

    #####:   12:        cout << "Failure!" << endl;

        -:   13:    else

        1:   14:        cout << "Success!" << endl;

        1:   15:    return 0;

        3:   16:}

  ##### 这就是表示没跑到的

1.4 gcov参数

  关于gcov的参数,可以在linux环境下使用gcov查阅

2、关于lcov

2.1 什么是lcov

  Lcov则是上的gcov 结果展现的一个前端,可以将覆盖率信息转换成html展现。

2.2 生成覆盖率

  前提条件:使用 GCC 以 -fprofile-arcs 和-ftest-coverage 选项编译程序。

  a)假设编译目录名称为 "/root/test/code_cover/",下面有个test.c,然后执行:

1

2

gcc -fprofile-arcs -ftest-coverage -o test test.c

./test

  则会在/root/test/code_cover/目录下生成test.gcno和test.gcda文件

  注:一般情况,gcda和gcno会在同一个目录,假如在编译机器上面是test/path,编译的时候会在这个目录下生成*.gcno文件,那么在执行机器上也会生成*.gcda文件在test/path目录下,

如果要使用lcov统计覆盖率,必须将gcno和gcda放在同一个目录,并且有源代码,且源代码的目录和编译时的目录一样,否则不能生成。

  然后cd该目录下执行

1

lcov --directory . --capture --output-file app.info

其中:

  --directory 或者-d 表示的是目录,也就是gcno和gcda目录

  --capture 或者 -c 表示获取覆盖率信息

  --output-file 或者 -o 表示输出文件

  b) 获取 HTML 输出

1

genhtml -o results app.info

  results是一个目录,index.html为导航文件,使用 web 浏览器打开 index.html 文件查看代码覆盖结果。

2.3 lcov文件过滤

  在某些情况下,比如三方库不需要统计覆盖率信息,则需要屏蔽,或者只需要某些文件的覆盖率,就需要对文件进行筛选

  a)移除指定目录

1

lcov --remove all.info '/src/include/*' '/user/bin/*' -o result.info

  此命令表示生成的覆盖率信息,屏蔽 '/src/include/*' '/user/bin/*' 两个目录的覆盖率信息

  all.info  总的覆盖率信息

  result.info 筛选后的覆盖率信息

  b)只要固定目录

1

lcov  --extract all.info '*/src/*' '*/lib/*' -o result.info

  此命令表示生成的覆盖率信息只要src和lib目录下文件的覆盖率信息

  all.info  总的覆盖率信息

  result.info 筛选后的覆盖率信息

lcov版本(支持分支覆盖率) lcov 是GCC 测试覆盖率的前端图形展示工具。它通过收集多个源文件的 行、函数和分支的代码覆盖信息,但是目前官方的版本默认不支持分支覆盖率,本资源以官方版本:https://github.com/lawrancej/lcov为基础,将相关设置已经配置好,支持分支覆盖率输出。但生成报告时,还需添加参数--branch-coverage 立即下载

相关推荐

Accelstepper 库中的参数计算公式

要完全调试电机的各个参数,例如最大速度,加速度等,就需要了解其计算公式和原理。 以下是代码注释: /// This code uses speed calculations as described in /// "Generate stepper-motor speed profiles in real time" by David Austin/// http://fab.cba.mi...

wenguitao的博客 4454

LCOV 工具来统计 Google Test 的代码覆盖率

lcov 统计gtest 代码覆盖率

pj_wxyjxy的博客 2073

CUDA编译踩坑实录:如何正确设置-gencode参数适配你的GPU算力

本文深入解析CUDA编译中-gencode参数的核心原理与实战配置,帮助开发者解决常见的'Unsupported gpu architecture'错误。通过厘清虚拟架构与真实架构的区别,并提供多版本兼容的CMake配置方案,确保编译出的代码能精准适配不同GPU算力,兼顾性能与广泛兼容性。

weixin_28829903的博客 338

深入掌握lcov工具:代码覆盖率分析与报告生成

在介绍lcov的用法之前,先简单解释一下它的作用。lcov是一个用于收集代码覆盖率信息的工具,它基于gcov,并能够生成HTML格式的覆盖率报告。lcov非常适合用于C/C++项目中的代码覆盖率分析。1. 安装lcov通常,你可以使用包管理器来安装lcov,例如在Ubuntu上:登录后复制 sudo apt-get in...

cnzzs的博客 4005

Fedproto:原型聚合的联邦学习框架

文中说明,联邦学习通过计算传递梯度聚合模型时,客户端之间的异构性通常会阻碍模型优化收敛和泛化性能。故本文提出新的FedProto框架,将梯度替换成为原型,通过计算、聚合从不同客户端收集到的本地原型,然后将全局原型发送回所有客户端,以规范本地模型的训练。对每个客户机进行局部训练的目的是最小化对本地数据的分类损失,同时保持生成的本地原型足够接近相应的全局原型(损失函数最小+正则)。什么是原型?文中提到:“

weixin_47754029的博客 2647

Windows环境下如何通过MCP Server实现MySQL安全连接与AI集成?

本文详细介绍了在Windows环境下如何通过MCP Server实现MySQL安全连接与AI集成。MCP Server作为大模型与MySQL之间的安全通道,提供权限控制、SSL加密和协议转换功能,显著提升查询性能。文章包含环境配置、安装指南、安全策略及实战案例,帮助开发者高效实现AI与数据库的安全交互。

hill8的博客 718

gcov代码覆盖率使用gcov完成代码覆盖率的测试

Gcov作为gnu/gcc工作组件之一,是一款的免费的代码覆盖率测试工具,而且可以结合lcov生成美观的html的测试报表。本文介绍一些gcov的使用方法,基本原理,一些实际中可能会遇到的问题以及解决思路。 Gcov的用法 1.1       编译 Gcov的使用方法很简单,首先需要给gcc编译的时候打开覆盖测试的开关 例如要对srcfile.c单个文件生成的程序进行代码覆盖测试,在

yuanxingyang的专栏 3045

UE5垃圾回收优化实战:定位GC卡顿与内存泄漏

垃圾回收(GC)是Unreal Engine 5中保障UObject内存安全的核心机制,其基于引用图的标记-清除原理决定了性能高度依赖引用结构合理性。当GC频繁触发或单次耗时突增,往往映射出蓝图强引用冗余、C++根对象管理失控或资源生命周期设计缺陷等底层问题。技术价值在于降低主线程阻塞、稳定60帧体验、抑制内存异常增长;典型应用场景包括关卡切换卡顿、UI打开后持续GC、打包后内存不释放等。本文聚焦UE5特有的Full GC模式、UObject生命周期约束及GC触发时机不可见性,提供从蓝图变量规范、TSoft

weixin_31995251的博客 362

【linux+gcov+lcov】linux下借助gcov和lcov工具实现单元测试覆盖率统计练习

1、gcov Linux下代码覆盖率工具,属于gcc工具集之一,随gcc一起发布,不需要独立安装。 使用gcov -v 可以查看gcov的版本信息,如下: 2、lcov lcov是gcov的图形化工具,可生成html格式的代码覆盖率报告,提高覆盖率检测结果的可读性。 lcov需要自己下载的开源软件,下载地址如下: https://sourceforge.net/projects/ltp/files/Coverage%20Analysis/ 3、lcov的手动安装 (1)进入到.tar.g

zhanghui962623727的博客 5442

AI:270-基于ASFF改进YOLOv8检测头的多尺度特征融合方法详解与实战

ASFF是一种基于自适应特征融合的策略,能够动态调整不同尺度特征的融合权重,适应场景中不同大小的目标。传统的YOLOv8检测头使用固定的特征融合策略,而ASFF则通过引入学习参数,使得网络能够根据输入图像的特征自适应地选择不同尺度特征的重要性。这一策略对于检测小目标或尺度变化大的目标具有显著优势。本文提出了一种改进YOLOv8检测头的新方法,通过引入自适应空间特征融合模块(ASFF),有效提升了多尺度目标检测的性能,特别是在小目标检测任务中的表现。

一键难忘的博客 3910

01 - 什么是SVM

摘要:SVM(共享虚拟内存)技术使CPU和GPU能共享同一虚拟地址空间,简化异构计算编程。传统模型需手动管理CPU/GPU内存和拷贝数据,而SVM允许直接传递指针,自动处理页面迁移和一致性维护。其核心包括统一地址空间、按需迁移、页面故障处理和一致性管理,显著降低编程复杂度并提升性能。通过HMM框架、MMU通知和GPU页面异常等机制实现高效内存共享,支持复杂数据结构,为异构计算带来便利。

图形/计算GPU的驱动与虚拟化技术分享园地 3117

深度解析LCOV多目录覆盖率收集的异常行为与解决方案

你是否在使用LCOV(Linux-Test-Project Coverage)工具时遇到过多目录项目覆盖率数据丢失、路径解析错误或覆盖率结果异常的问题?作为一款强大的代码覆盖率分析工具,LCOV在处理复杂项目结构时,常因目录配置不当导致覆盖率数据不完整或不准确。本文将从实际案例出发,深入分析LCOV在多目录场景下的常见异常行为,提供可落地的解决方案,并通过流程图、代码示例和对比表格帮助开发者彻底掌...

gitblog_07362的博客 462

[QMT量化交易小白入门]-105、震荡市最适合的策略:ETF多标的动态网格策略,回测年化收益47.81%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 2060

linux html css output follow,覆盖率測试工具gcov的前端工具_LCOV_简单介绍

1、Gcov是进行代码运行的覆盖率统计的工具。它随着gcc的公布一起公布的,它的使用也非常easy,须要在编译和链接的时候加上-fprofile-arcs -ftest-coverage生成二进制文件,gcov主要使用.gcno和.gcda两个文件。.gcno是由-ftest-coverage产生的。它包括了重建基本块图和对应的块的源代码的行号的信息。.gcda是由加了-fprofile-arcs...

weixin_30106425的博客 275

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

使用LCOV统计代码覆盖率(c代码)

使用LCOV工具,统计代码覆盖率,针对c代码。

feifniao的专栏 4160

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

使用LCOV命令生成覆盖率

使用LCOV命令生成覆盖率 lcov命令的使用方法请参考man手册或者参考lcov --help 这里主要关注的下面这几个参数: -c 或者 --capture 指定从编译产物中收集覆盖率信息。 -d DIR 或者 --directory DIR 指定编译产物的路径。 -e FILE PATTERN 或者 --extract FILE PATTERN 从指定的文件中根据PATTERN过滤结果。 -o FILENAME 或者 --output-file FILENAME 指定覆盖率输出的文件名称。 另外还

qq_19394273的博客 6391

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Flutter 三方库 coverage 的鸿蒙适配实战 - 精准的代码测试覆盖率收集与 LCOV 多维分析基建

随着 OpenHarmony 生态中大型应用规模的扩大,对工程源码质量提出了更高的要求。保障系统稳定性的核心利器是单元测试与集成自动化测试,而评估测试体系真实效力的标准便是代码覆盖率(Coverage)。coverage是由 Dart 官方及社区共同维护的顶级基础工具。基于此工具提取 VM (Virtual Machine) 等级的数据指纹,我们可以全视角监控鸿蒙工程内部分支的测试情况。本文将带领大家掌握coverage的核心技术使用范式,建立符合代码质量基线的测试审查屏障。coverage。

2601_95371881的博客 630

代码覆盖率工具lcov

lcov工具使用

Erice_s的博客 1万+

C/C++ 代码覆盖率工具:gcov+lcov

GCOV是一个测试C/C++代码覆盖率的工具,使用它可以看出哪些代码被执行了,被执行的次数和时间。 1 gcov简介 GCOV随着gcc安装,不需要我们另外再进行安装,gcov的使用如下。 1.1 代码编译 想要用gcov收集代码覆盖信息, 需要在编译代码的时候加上这2个选项-fprofile-arcs -ftest-coverage,编译后会生成gcno文件。 1.1.1 直...

Hey_Sarah 1万+

Linux下lcov单元测试覆盖率

    书接上文,要想保持测试的完整性,需要将gtest与lcov配合使用,方能更好地测试源码的质量。 一、下载lcov源码 源码下载链接:https://sourceforge.net/projects/ltp/files/Coverage%20Analysis/LCOV-1.13/   二、解压源码 进入到解压文件夹,执行命令“make install”安装lcov   三、编译...

tekenuo的专栏 7924

C/C++代码覆盖工具gcov与lcov入门

代码覆盖率——gcov lcov的使用 2008-07-25 15:57 一、关于gcov工具gcov伴随gcc 发布。gcc编译加入-fprofile-arcs -ftest-coverage 参数生成二进制程序,执行测试用例生成代码覆盖率信息。1、如何使用gcov用GCC编译的时候加上-fprofile-arcs -ftest-coverage选项,链接的时候也加上。fprofi...

Everything is possible--博客的内容只是作为一种备忘 610

覆盖率工具gcov和lcov的使用

覆盖率工具,gcov,lcov的使用

qq_50895567的博客 2616

linux系统代码工具gen,Linux平台代码覆盖率测试工具GCOV的前端工具LCOV简介

Content1. Lcov是什么?2.如何在Linux平台安装Lcov?3.如何使用Lcov?(1)使用lcov收集覆盖率数据并写入文件(2)使用genhtml生成基于HTML的输出(3)该例子的图形显示4.编译lcov自带例子5.其他相关工具(1) gcov-dump(2) ggcov1. Lcov是什么?是GCOV图形化的前端工具是Linux Test Project维护的开放源代码工具,最...

weixin_42529328的博客 610
上一篇: Cortex-M3和Cortex-M4 Fault异常应用之一 ----- 基础知识
下一篇: socket--shutdown()
evilcode
博客等级 码龄20年 307粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值