gcov的使用

news2024/12/24 7:26:31

什么是代码覆盖率?

代码覆盖率是对整个测试过程中被执行的代码的衡量,它能测量源代码中的哪些语句在测试中被执行,哪些语句尚未被执行。

代码覆盖率的指标种类

代码覆盖率工具通常使用一个或多个标准来确定你的代码在被自动化测试后是否得到了执行,常见的覆盖率报告中看到的指标包括:

函数覆盖率:定义的函数中有多少被调用
语句覆盖率:程序中的语句有多少被执行
分支覆盖率:有多少控制结构的分支(例如if语句)被执行
条件覆盖率:有多少布尔子表达式被测试为真值和假值
行覆盖率:有多少行的源代码被测试过

linux+gcov+lcov 安装
https://blog.csdn.net/zhanghui962623727/article/details/109103374

gcov案例:
https://blog.csdn.net/wangyezi19930928/article/details/26502109

在这里插入图片描述

test.c

#include<stdio.h>
 
int main(void)
{
    int i,total;
    total=0;
 
    for(i=0;i<10;i++)
        total+=i;
 
    if (total!=45)
        printf("failure\n");
    else
        printf("success\n");
    return 0;
}

编译命令:

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

gcov的选项:

(1) -a, --all-blocks
在.gcov文件中输出每个基本块(basic block)的执行次数

wjr@WPF3N0KZ3:~/coverage$ gcov -a test.c
File 'test.c'
Lines executed:87.50% of 8
Creating 'test.c.gcov'

Lines executed:87.50% of 8

(2) -b, --branch-probabilities
在.gcov文件中输出每个分支的执行频率,并有分支统计信息。

wjr@WPF3N0KZ3:~/coverage$ gcov -b test.c
File 'test.c'
Lines executed:87.50% of 8
Branches executed:100.00% of 4
Taken at least once:75.00% of 4
Calls executed:50.00% of 2
Creating 'test.c.gcov'

Lines executed:87.50% of 8

(3)-c, --branch-counts

在.gcov文件中输出每个分支的执行次数。

wjr@WPF3N0KZ3:~/coverage$ gcov -c test.c
File 'test.c'
Lines executed:87.50% of 8
Creating 'test.c.gcov'

Lines executed:87.50% of 8

-c是默认选项,其结果与"gcov test.c"执行结果相同。

gtest + Gcov 单测覆盖率统计

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654085.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL注入第一章节

SQL注入第一章节 1.1 什么是SQL注入 SQL 注入&#xff08;Injection&#xff09; 概述 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情…

合并表格的指定列按序号排序

这里有一个Excel需求&#xff1a; 如下图所示&#xff0c;需要在序号那一列自动排序下去。 但是是合并的行&#xff0c;而且合并的行数还是不确定的&#xff0c;那怎么给他自动排序下去呢&#xff1f; 解决方法可供参考&#xff1a;使用筛选和COUNT函数完成。 1.第一步筛选 首…

Collection集合

Collection集合面试题 导学 这次课程主要涉及到的是List和Map相关的面试题&#xff0c;比较高频就是 ArrayList LinkedList HashMap ConcurrentHashMap ArrayList底层实现是数组LinkedList底层实现是双向链表HashMap的底层实现使用了众多数据结构&#xff0c;包含了数组、…

5.MySQL索引事务

文章目录 &#x1f43e;1. 索引&#x1f43e;&#x1f490;1.1 概念&#x1f490;&#x1f338;1.2 作用与缺点&#x1f338;&#x1f337;1.2.1作用&#x1f337;&#x1f340;1.2.2缺点&#x1f340; &#x1f339;1.3 使用场景&#x1f339;&#x1f33b;1.4 使用&#x1f3…

阿里云服务器官网

阿里云服务器官网&#xff1a;https://www.aliyun.com/product/ecs 阿里云服务器分为云服务器ECS、轻量应用服务器、GPU云服务器等&#xff0c;云服务器ECS是阿里云明星级产品&#xff0c;专业级云服务器&#xff0c;如下图&#xff1a; 阿里云服务器ECS 阿里云服务器网分享阿…

【论文阅读】Learing to summarize from human feedback

前言 更多关于大模型的文章可见&#xff1a;ShiyuNee/Awesome-Large-Language-Models: Papers about large language models (github.com) 该仓库持续更新 Abs 通过训练模型来向着人类偏好优化可以显著提高摘要质量。 Method High-level methodology 从一个在摘要数据集上…

剑指offer(C++)-JZ3:数组中重复的数字(算法-排序)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的&#xff0c;但不知道有几…

攻防世界-web-Web_python_template_injection

题目描述&#xff1a;只有一句话&#xff0c;翻译出来时python模板注入 1. 思路分析 1.1 什么是python模板注入&#xff1f; 做这道题之前我也不知道什么是python模板注入&#xff0c;问了下chatgpt&#xff0c;回答是这样的&#xff1a; 回答很简洁&#xff0c;举个例子&…

AUTOSAR 架构下的SPI模块的理解

一、SPI模块 1、模块简介 SPI处理程序/驱动程序为单片SPI [串行外设接口]处理程序/驱动程序提供功能和API。该软件模块包括处理和驱动功能。这种单片SPI处理器/驱动器的主要目标是充分利用每个微控制器的功能&#xff0c;并根据静态配置实现优化&#xff0c;以尽可能地满足ECU…

医疗虚拟仿真和虚拟现实有什么区别?哪个更好?

随着我们在仿真教育中越来越多地使用新技术&#xff0c;区分虚拟模式的类型很重要。虚拟仿真是一个统称&#xff0c;用来概括术语来描述各种基于仿真的体验&#xff0c;从基于屏幕的平台到沉浸式虚拟现实。然而&#xff0c;各虚拟平台在保真度、沉浸感和临场感的水平上有很大差…

java 调用 opencv 识别图片

前言 opencv 的 github 地址 opencv 官网 本文介绍如何使用 java 来调用 opencv 下载opencv opencv下载 页面根据自己电脑操作系统下载最新的安装包&#xff0c;我这里下载的是 4.7.0 版本。 &#xff08;4.7.0 版本里的 opencv-470.jar 包是使用 jdk11 编译的&#xff0c…

从0到1ES集群搭建实践

ES集群搭建实践 创建虚拟机 创建Linux新用户elastic 必须信息 使用elasticsearch账号操作&#xff1a;启动&#xff0c;关闭等 配置网卡信息 vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY"no…

pytorch笔记:transformer

来自B站视频&#xff0c;API查阅&#xff0c;TORCH.NN seq2seq 可以是 CNN&#xff0c;RNN&#xff0c;transformer nn.Transformer 关键源码&#xff1a; encoder_layer TransformerEncoderLayer(d_model, nhead, dim_feedforward, dropout,activation, layer_norm_eps, ba…

Github官网进不去怎么办?Github无法访问怎么办?

1.操作方法&#xff1a; 打开hosts文件&#xff0c;可能需要管理员权限。 win10 hosts位置&#xff1a;C:\Windows\System32\drivers\etc 在末尾新建一行&#xff0c;添加如下内容&#xff1a; 2.1方法一 Host文件追加 140.82.112.26 alive.github.com140.82.114.25 live.…

【electron】 客户端调试小技巧

1、谷歌浏览器输入&#xff1a;chrome://inspect打开开发者工具 可以方便拦截electron内的请求&#xff0c;也可以通过f12的开发者工具中的source打断点。 虽然在electron客户端内也能审查元素。 PS&#xff1a;但是其有局限性&#xff0c;如果是窗体套窗体(webview)&#xff…

Android——基本控件(十)

1. 图片视图&#xff1a;ImageView 1.1 知识点 &#xff08;1&#xff09;掌握ImageView组件的使用&#xff1b; &#xff08;2&#xff09;掌握图片的保存&#xff1b; 1.2 具体内容 之前我们讲过了RadioGroup是提供了一个存放RadioButton的一个容器&#xff0c;ImageVie…

STM32速成笔记—中断

文章目录 一、什么是中断二、中断的相关概念2.1 中断优先级2.2 中断嵌套2.3 中断服务函数2.4 中断标志位 三、外部中断EXIT四、中断程序配置4.1 设置中断分组并使能中断4.2 初始化EXIT4.3 编写中断服务函数 五、注意事项 一、什么是中断 首先介绍一下什么是中断。在实际开发过…

OpenCV 笔记_2

文章目录 笔记_2图像尺寸变换resize 图像缩放 &#xff08;重置图像大小)flip 图像翻转hconcat 横向连接vconcat 纵向连接 图像方式变换warpAffine 仿射变换函数&#xff1a;矩阵M&#xff08;2*3&#xff09;getRotationMatrix2D 获取图像旋转矩阵M&#xff1a;矩阵M&#xff…

电脑出现MSVCP100.dll丢失错误怎么办?

MSVCP100.dll是一个Windows系统文件&#xff0c;它可以确保Windows程序正确平稳运行&#xff0c;如果该文件安装不正确、丢失或损坏&#xff0c;则使用该文件的应用程序将无法正常启动&#xff0c;会出现“无法启动此程序&#xff0c;因为计算机中丢失MSVCP100.dll”的错误提示…

OpenCV 笔记_4

文章目录 笔记_4图像细化thinning 图像细化函数 轮廓检测findContours 轮廓检测函数drawContours 轮廓绘制函数contourArea 计算轮廓面积&#xff1a;返回值 double类型arcLength 计算轮廓长度&#xff1a;返回值 double类型 轮廓外接多边形boundingRect 给定轮廓的外接矩形min…