使用lcov生成覆盖率报告

news2024/11/27 4:32:30

使用lcov生成覆盖率报告

  • 1- 需要准备的东西
    • 1.1 工具lcov
    • 1.2 需要用到中间脚本 gcno gcda
    • 1.3 源文件
  • 2- 生成覆盖率报告
    • 2.1 step1: 编译阶段
    • 2.2 step2: 数据收集与提取阶段
    • 2.3 step3: 报告形成阶段
    • 2.4 step4: lcov生成覆盖率报告结果info文件
    • 2.5 step5: genhtml 命令生成网页版的覆盖率报告文件夹
  • 3- 覆盖率报告结果
    • 3.1 总结果页面
    • 3.2 单独源文件页面
    • 3.3 代码执行覆盖率页面

1- 需要准备的东西

1.1 工具lcov

下载解压安装

我这里用的是 lcov-1.14.tar.gz

解压
tar -xzvf lcov-1.14.tar.gz

安装
cd lcov-1.14
make install

1.2 需要用到中间脚本 gcno gcda

gcno文件 包含相应源码的行号信息,程序流图信息
gcda文件 收集数据

1.3 源文件

要执行的源文件 SimpleCoverage.c

ll

显示
-rw-rw-r-- 1 tester tester   353 Jun 14 23:25 SimpleCoverage.c

2- 生成覆盖率报告

2.1 step1: 编译阶段

当前工作路径 ~/TestCoverage2023

生成可执行文件和gcno文件

生成可执行文件 gcc SimpleCoverage.c -o SimpleCoverage
生成gcno文件 -fprofile-arcs -ftest-coverage

执行命令

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

生成了gcno文件

ll

total 32
-rwxrwxr-x 1 tester tester 24104 Jun 14 23:27 SimpleCoverage
-rw-rw-r-- 1 tester tester   353 Jun 14 23:25 SimpleCoverage.c
-rw-rw-r-- 1 tester tester   996 Jun 14 23:27 SimpleCoverage.gcno

2.2 step2: 数据收集与提取阶段

执行可执行文件即可 生成 gcda文件

./SimpleCoverage
显示源代码SimpleCoverage.c 的执行结果

main()---
show()-
i=0
i=1
i=2
no

生成了gcda文件

ll

total 36
-rwxrwxr-x 1 tester tester 24104 Jun 14 23:27 SimpleCoverage
-rw-rw-r-- 1 tester tester   353 Jun 14 23:25 SimpleCoverage.c
-rw-rw-r-- 1 tester tester   252 Jun 14 23:33 SimpleCoverage.gcda
-rw-rw-r-- 1 tester tester   996 Jun 14 23:27 SimpleCoverage.gcno

2.3 step3: 报告形成阶段

依赖 gcno和gcda 生成gcov 文件

执行命令
gcov SimpleCoverage.c
显示
File 'SimpleCoverage.c'
Lines executed:100.00% of 11
Creating 'SimpleCoverage.c.gcov'

生成了gcov文件

ll

total 40
-rwxrwxr-x 1 tester tester 24104 Jun 14 23:27 SimpleCoverage
-rw-rw-r-- 1 tester tester   353 Jun 14 23:25 SimpleCoverage.c
-rw-rw-r-- 1 tester tester   878 Jun 14 23:35 SimpleCoverage.c.gcov
-rw-rw-r-- 1 tester tester   252 Jun 14 23:33 SimpleCoverage.gcda
-rw-rw-r-- 1 tester tester   996 Jun 14 23:27 SimpleCoverage.gcno

2.4 step4: lcov生成覆盖率报告结果info文件

执行命令
lcov -c -d . -o SimpleCoverage.info
Capturing coverage data from .
Found gcov version: 4.8.5
Scanning . for .gcda files ...
Found 1 data files in .
Processing SimpleCoverage.gcda
Finished .info-file creation

生成了info文件

ll

total 40
-rwxrwxr-x 1 tester tester 24104 Jun 14 23:27 SimpleCoverage
-rw-rw-r-- 1 tester tester   353 Jun 14 23:25 SimpleCoverage.c
-rw-rw-r-- 1 tester tester   252 Jun 14 23:33 SimpleCoverage.gcda
-rw-rw-r-- 1 tester tester   996 Jun 14 23:27 SimpleCoverage.gcno
-rw-rw-r-- 1 tester tester   239 Jun 14 23:39 SimpleCoverage.info

2.5 step5: genhtml 命令生成网页版的覆盖率报告文件夹

这里报告文件夹起名为 CovReport

执行命令
genhtml -o CovReport SimpleCoverage.info
Reading data file SimpleCoverage.info
Found 1 entries.
Found common filename prefix "/home/xxx"
Writing .css and .png files.
Generating output.
Processing file TestCoverage2023/SimpleCoverage.c
Writing directory view page.
Overall coverage rate:
  lines......: 100.0% (11 of 11 lines)
  functions..: 100.0% (2 of 2 functions)

生成了覆盖率报告文件夹 CovReport

ll

total 40
drwxrwxr-x 3 tester tester   217 Jun 14 23:41 CovReport
-rwxrwxr-x 1 tester tester 24104 Jun 14 23:27 SimpleCoverage
-rw-rw-r-- 1 tester tester   353 Jun 14 23:25 SimpleCoverage.c
-rw-rw-r-- 1 tester tester   252 Jun 14 23:33 SimpleCoverage.gcda
-rw-rw-r-- 1 tester tester   996 Jun 14 23:27 SimpleCoverage.gcno
-rw-rw-r-- 1 tester tester   239 Jun 14 23:39 SimpleCoverage.info
ll ~/TestCoverage2023/CovReport/
total 48
-rw-rw-r-- 1 tester tester  141 Jun 14 23:41 amber.png
-rw-rw-r-- 1 tester tester  141 Jun 14 23:41 emerald.png
-rw-rw-r-- 1 tester tester 9893 Jun 14 23:41 gcov.css
-rw-rw-r-- 1 tester tester  167 Jun 14 23:41 glass.png
-rw-rw-r-- 1 tester tester 3709 Jun 14 23:41 index.html
-rw-rw-r-- 1 tester tester 3702 Jun 14 23:41 index-sort-f.html
-rw-rw-r-- 1 tester tester 3702 Jun 14 23:41 index-sort-l.html
-rw-rw-r-- 1 tester tester  141 Jun 14 23:41 ruby.png
-rw-rw-r-- 1 tester tester  141 Jun 14 23:41 snow.png
drwxrwxr-x 2 tester tester  183 Jun 14 23:41 TestCoverage2023
-rw-rw-r-- 1 tester tester  117 Jun 14 23:41 updown.png



ll ~/TestCoverage2023/CovReport/TestCoverage2023/
total 28
-rw-rw-r-- 1 tester tester 3800 Jun 14 23:41 index.html
-rw-rw-r-- 1 tester tester 3793 Jun 14 23:41 index-sort-f.html
-rw-rw-r-- 1 tester tester 3793 Jun 14 23:41 index-sort-l.html
-rw-rw-r-- 1 tester tester 3434 Jun 14 23:41 SimpleCoverage.c.func.html
-rw-rw-r-- 1 tester tester 3427 Jun 14 23:41 SimpleCoverage.c.func-sort-c.html
-rw-rw-r-- 1 tester tester 5008 Jun 14 23:41 SimpleCoverage.c.gcov.html
wizard07.adv.advantest.com$

3- 覆盖率报告结果

3.1 总结果页面

在这里插入图片描述

3.2 单独源文件页面

在这里插入图片描述

3.3 代码执行覆盖率页面

在这里插入图片描述

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

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

相关文章

给定一个字符串比如“abcdef”,要求写个函数变成“defabc”,位数是可变的。

首先可以使用字符串切片的方法来实现这个需求。 具体做法是:① 定义一个整数变量 n 表示要切割的位置,本实例中为 3 。 ② 将字符串按照 n 分割成两个字串,即 “abc” 和 “def”。 ③ 将两个字符串颠倒顺序,即 “cba” 和 “fed…

数据结构 栈和队列

栈和队列基本概念 栈(Stack)和队列(Queue)都是常见的数据结构,用于存储和操作一组元素。它们在结构和操作方式上有所不同。 栈的基本概念: 栈是一种线性数据结构,具有后进先出(L…

CentOS GCC 离线升级 编译安装 8.3.0

从系统自带的 gcc-4.8.5 版本升级至 gcc-8.3.0 版本 目录 下载源代码: 下载依赖: 编译(约一个小时) 重开控制台确认是否生效 下载源代码: https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gzhttps://ftp.gn…

Nacos和Feign

Nacos配置管理 统一配置管理实现 1.引入Nacos的配置管理客户端依赖 <!--nacos的配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency…

国产开源中文大语言模型再添重磅玩家:清华大学NLP实验室发布100亿参数规模的开源可商用大语言模型CPM-Bee

5月27日&#xff0c;OpenBMB发布了一个最高有100亿参数规模的开源大语言模型CPM-BEE&#xff0c;OpenBMB是清华大学NLP实验室联合智源研究院成立的一个开源组织。该模型针对高质量中文数据集做了训练优化&#xff0c;支持中英文。根据官方的测试结果&#xff0c;其英文测试水平…

Python零基础入门(二)——IDE介绍以及Python+PyCharm的安装

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python入门专栏&#xff1a;《Python入门》欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; 码字不易&#xff0c;如果觉得文章不…

docker容器介绍及安装

Docker介绍 Docker 起源于2013年。 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go语言开发&#xff0c;Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的系统。 优点&#xff1a; 可以用来快速交付应用。加…

SQL 的window开窗函数简单使用

背景&#xff1a; 开窗函数不论是spark的还是clickhouse的在日常的查询中是一个很常用的功能&#xff0c;特别是他想要解决的问题和group by的很类似&#xff0c;这两种容易引起混淆&#xff0c;本文就简单的描述下开窗函数的简单用法 使用详解 首先窗口函数和group by是完全…

caj文件在线转换成pdf方法,看这个就会了!

当需要将Caj文件转换为PDF格式时&#xff0c;有多种方法可供选择。本文将介绍三种常用的方法&#xff0c;以帮助您完成这个任务。 第一种方法&#xff1a;使用记灵在线工具 一种常用的方法是利用记灵在线工具&#xff0c;它是一款提供免费文件转换服务的在线工具。以下是使用…

消息队列RabbitMQ

1. 消息队列 RabbitMQ 消息队列是一种在应用程序之间发送和接收消息的方法&#xff0c;可以实现异步通信、解耦应用、提高系统性能等效果。RabbitMQ 是一款常用的开源消息中间件&#xff0c;它实现了 AMQP 协议规范&#xff0c;并提供了可靠性、灵活性、易用性等优秀特性。本文…

DBSyncer安装_配置postgresql和mysql_sqlserver_oracel全量增量同步---数据全量增量同步之DBSyncer001

国内做开源的大神做的,用了一下还可以,就是不能和Phoenix这种操作hbase等数据库一起用, https://gitee.com/ghi/dbsyncer#postgresql 这个是官网,下载安装非常简单,官网也有中文详细说明. 直接下载安装包: 然后解压到某个地方,主要要用unzip dbsyncer.zip -d /opt/module这样…

干翻Mybatis源码系列之第十篇:Mybatis拦截器基本开发、使用和细节分析

给自己的每日一句 不从恶人的计谋&#xff0c;不站罪人的道路&#xff0c;不坐亵慢人的座位&#xff0c;惟喜爱耶和华的律法&#xff0c;昼夜思想&#xff0c;这人便为有福&#xff01;他要像一棵树栽在溪水旁&#xff0c;按时候结果子&#xff0c;叶子也不枯干。凡他所做的尽…

微信小程序 method传参 和 页面传参

method传参 标签&#xff1a; <image src"/img/b1.jpg" classbannerImg mode"widthFix" bindtap"gotoMessage" data-flag"msg"></image> 使用data-参数Key 指定参数值 method: gotoMessage(e){ let flagName e.targe…

9. 子查询

9.1 概述 ​ 子查询指一个查询语句嵌套在另一个查询语句内部&#xff0c;这个特性从 MySQL 4.1 开始引入。 ​ 从相对位置来说&#xff0c;子查询又被称为内查询&#xff0c;主查询又被称为外查询 9.1.1 子查询的结构 子查询的结构如下所示&#xff1a; SELECT select_lis…

Apache Zeppelin系列教程第九篇——SQL Debug In Zeppelin

SQL Debug介绍 首先介绍下什么是SQL Debug&#xff1f; 但是经常有这样一个需求&#xff0c;一大段sql 跑出来之后&#xff0c;发现不是自己想要的结果&#xff1f;比如&#xff1a; demo 1: select id,name from ( select id,name from table1 union all select id,name fr…

数据库(第五章)数据库的完整性

1.数据库的正确性和相容性 正确性&#xff1a;符合现实逻辑 相容性&#xff1a;两个表中的同一对象要完全相同 如何实现数据库的完整性&#xff1f; 1.定义完整性约束条件 2.提供完整性检查方法 3.进行违约处理 完整性我们之前学过。包括三个 1.实体完整性 2.参照完整性 3.用户…

Fiddler中 AutoResponder 使用

Fiddler的 AutoResponder &#xff0c;即URL重定向功能非常强大。不管我们做URL重定向&#xff0c;还是做mock测试等&#xff0c;都可以通过该功能进行实践。 下面&#xff0c;小酋就来具体讲下该功能的用法。 如果你想学习Fiddler抓包工具&#xff0c;我这边给你推荐一套视频…

【C++进阶】带你手撕AVL树

文章目录 一、什么是AVL树二、AVL树的定义三、AVL树的插入1.理论讲解2.代码实现 四、AVL树的旋转1.左单旋2.右单旋3.左右双旋4.右左双旋 五、 AVL树的验证六、完整源码 一、什么是AVL树 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为…

Kafka集群部署

Kafka是一个高吞吐量、基于ZooKeeper&#xff08;ZooKeeper维护Kafka的broker信息&#xff09;的分布式发布订阅信息系统&#xff0c;它可以处理消费者在网站中的所有动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xff09;流数据。通常情况下&#xff0c;使用…

Linux(CentOS 7)下安装配置Maven3.9.2

Linux&#xff08;CentOS 7&#xff09;下安装配置Maven3.9.2 环境 JDK 1.8OS:Centos 7.5 tar包安装 下载 apache-maven-3.9.2-bin.tar.gz https://maven.apache.org/download.cgi 安装步骤 公共服务&#xff0c;将maven安装在root用户下。 创建maven安装地址解压安装…