【DevOps】SonarQube 指标解读

SonarQube 指标解读

  • 1.BUG 评级计算方法(可靠性)
  • 2.漏洞评级计算方法(安全性)
  • 3.债务和坏味道
  • 4.覆盖率
    • 4.1 代码覆盖率
    • 4.2 分支覆盖率
    • 4.3 单元测试覆盖率
  • 5.重复

在这里插入图片描述

1.BUG 评级计算方法(可靠性)

  • ✅ A:表示代码无 Bug,最高级别
  • ✅ B:代码有一个 次要 Bug,等级评估为 B
  • ✅ C:代码有一个 重要 Bug,等级评估为 C
  • ✅ D:代码有一个 严重 Bug,等级评估为 D
  • ✅ E:代码有一个 阻断 Bug,等级评估为 E,最低级别

BUG 级别描述:

级别
详细描述信息
次要界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等。
重要功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等。
严重系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等。
阻断阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等。

2.漏洞评级计算方法(安全性)

  • ✅ A:表示代码无漏洞,最高级别
  • ✅ B:代码有一个 次要 漏洞,等级评估为 B
  • ✅ C:代码有一个 重要 漏洞,等级评估为 C
  • ✅ D:代码有一个 严重 漏洞,等级评估为 D
  • ✅ E:代码有一个 阻断 漏洞,等级评估为 E,最低级别

漏洞级别描述:

级别
详细描述信息
次要能够获取一些数据,但不属于核心数据的操作; 在条件严苛的环境下能够获取核心数据或者控制核心业务的操作; 需要用户交互才可以触发的漏洞。包括但不限于 XSS 漏洞、CSRF 漏洞、点击劫持。
重要需要在一定条件限制下,能获取服务器权限、网站权限与核心数据库数据的操作。包括但不限于交互性代码执行、一定条件下的注入、特定系统版本下的 getshell 等; 任意文件操作漏洞。包括但不限于任意文件写、删除、下载,敏感文件读取等操作; 水平权限绕过。包括但不限于绕过限制修改用户资料、执行用户操作。
严重直接获取普通系统权限的漏洞。包括但不限于远程命令执行、代码执行、上传 webshell、缓冲区溢出等; 严重的逻辑设计缺陷和流程缺陷。包括但不限于任意账号密码修改、重要业务配置修改、泄露; 可直接批量盗取用户身份权限的漏洞。包括但不限于普通系统的 SQL 注入、用户订单遍历; 严重的权限绕过类漏洞。包括但不限于绕过认证直接访问管理后台、Cookie 欺骗。 运维相关的未授权访问漏洞。包括但不限于后台管理员弱口令、服务未授权访问。
阻断直接获取重要服务器(客户端)权限的漏洞。包括但不限于远程任意命令执行、上传 webshell、可利用远程缓冲区溢出、可利用的 ActiveX 堆栈溢出、可利用浏览器 use-after-free 漏洞、可利用远程内核代码执行漏洞以及其它因逻辑问题导致的可利用的远程代码执行漏洞; 直接导致严重的信息泄漏漏洞。包括但不限于重要系统中能获取大量信息的 SQL 注入漏洞; 能直接获取目标单位核心机密的漏洞。

3.债务和坏味道

坏味道:是指在代码之中潜在问题的警示信号。并非所有的坏味道所指示的确实是问题,但是对于大多数坏味道,均很有必要加以查看,并作出相应的修改。

债务:每一个问题,Sonar 都会计算出更改这个问题需要花费的时间。通过相加这些时间得出一个总的值称为债务。

在这里插入图片描述

4.覆盖率

在这里插入图片描述

指标中文解释
Lines to Cover可覆盖行13242
Uncovered Lines未覆盖的代码7943
Conditions to Cover可覆盖分支4738
Uncovered Conditions未覆盖分支3760

4.1 代码覆盖率

代码覆盖率 ( L i n e   C o v e r a g e ) = 可覆盖行 − 未覆盖的代码 可覆盖行 = 13242 − 7943 13242 = 40.0 % 代码覆盖率(Line\ Coverage) =\frac{可覆盖行 - 未覆盖的代码}{可覆盖行}=\frac{13242-7943}{13242}=40.0\% 代码覆盖率(Line Coverage)=可覆盖行可覆盖行未覆盖的代码=13242132427943=40.0%

或者称为 行覆盖率(Line Coverage):在给定的代码行上,行覆盖率只是回答 “这行代码是否在单元测试执行期间被执行过?” 的问题。它是单元测试覆盖线的密度。

线路覆盖率 = L C E L 线路覆盖率 = \frac{LC}{EL} 线路覆盖率=ELLC

  • L C LC LC = 覆盖行(Lines to Cover - Uncovered Lines
  • E L EL EL = 可执行行总数(Lines to Cover

4.2 分支覆盖率

分支覆盖率 ( B r a n c h   C o v e r a g e ) = 可覆盖分支 − 未覆盖分支 可覆盖分支 = 4738 − 3760 4738 = 20.6 % 分支覆盖率(Branch\ Coverage) = \frac{可覆盖分支 -未覆盖分支}{可覆盖分支}=\frac{4738-3760}{4738}=20.6\% 分支覆盖率(Branch Coverage)=可覆盖分支可覆盖分支未覆盖分支=473847383760=20.6%或者 条件覆盖率 ( C o n d i t i o n   C o v e r a g e ) = C T + C F 2 × B 条件覆盖率(Condition\ Coverage) = \frac{CT + CF}{2×B} 条件覆盖率(Condition Coverage)=2×BCT+CF

  • C T CT CT = 至少一次被评估为 “真” 的条件
  • C F CF CF = 至少一次被评估为 “假” 的条件
  • B B B = 条件总数(Conditions to Cover

4.3 单元测试覆盖率

它是 Line Coverage 和 Condition Coverage 的混合体。

代码中单元测试的覆盖率,计算方法: C o v e r a g e = C T + C F + L C 2 × B + E L ∗ 100 % Coverage=\frac{CT+CF+LC}{2×B+EL}*100\% Coverage=2×B+ELCT+CF+LC100%

  • C T CT CT:至少有一次被判断为 true 的条件数
  • C F CF CF:至少有一次被判断为 false 的条件数
  • L C LC LC:已覆盖的行数(Lines to Cover - Uncovered Lines
  • B B B:条件总数(Conditions to Cover
  • E L EL EL:所有可执行的代码总行数(Lines to Cover

5.重复

重复度 = 重复行数 总行数 ∗ 100 % = D u p l i c a t e d   L i n e s L i n e s ∗ 100 % 重复度=\frac{重复行数}{总行数}*100\%=\frac{Duplicated\ Lines}{Lines}*100\% 重复度=总行数重复行数100%=LinesDuplicated Lines100%

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git打tag和版本控制规范

我们在开发中经常会遇到要打tag的情况,但这个tag应该如何打呢?我不知道大家平时是怎么打的,但我基本就是从1.0.0开始进行往上递增,至于如何递增,基本凭感觉。今天同事新打了一个tag进行发版,然后被架构点名…

U4_2:图论之MST/Prim/Kruskal

文章目录 一、最小生成树-MST生成MST策略一些定义 思路彩蛋 二、普里姆算法(Prim算法)思路算法流程数据存储分析 伪代码时间复杂度分析 三、克鲁斯卡尔算法(Kruskal算法)分析算法流程并查集-Find-set 伪代码时间复杂度分析 一、最…

局域网协议:ICMP (Internet Control Message Protocol,互联网控制消息协议)

ICMP(Internet Control Message Protocol,互联网控制消息协议)是用于在IP网络中传递控制消息的协议。它通常被用于网络设备之间交换状态信息和错误报告,以及执行网络诊断和故障排除。 文章目录 ICMP主要功能ICMP的工作原理ICMP消…

python之pyqt专栏7-信号与槽3

在上一篇文章中python之pyqt专栏6-信号与槽2-CSDN博客中,我们可以了解到对象可以使用内置信号,这些信号来自于类定义或者继承过来的。我们可以对这些信号可以通过connect连接槽函数。 需求 现在有一个需求,有两个UI界面“untitled.ui”和“u…

css-tricks网站图例

使用css实现钟表 <template><div><p><small>CSS sin() and cos() does <strong>NOT</strong> work in your browser.</small></p><div class"clock"><div id"app" class"clock-face"…

如何恢复已删除的照片 ?适用于 Windows 的Android 数据恢复软件值得尝试

“我丢失了 Android 手机上的照片&#xff0c;有人告诉我使用恢复程序来找回所有手机数据。我使用的是 Windows 10 和华为 手机&#xff0c;对于 Windows最有效的 Android 数据恢复是什么&#xff1f;” Android 恢复程序用于检索丢失或删除的文件&#xff0c;如照片、联系人、…

城市生命线中城市内涝积水监测系统设计与应用

近年来&#xff0c;城市内涝问题日益凸显&#xff0c;给城市安全和居民生活带来严重威胁。为了解决这一问题&#xff0c;云南省水网建设规划提出了一系列的防涝措施&#xff0c;其中包括城市内涝积水监测系统的建设。 城市内涝积水监测系统作为城市生命线中之一&#xff0c;在城…

Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织

Spring Cloud 版本升级记&#xff1a;OpenFeignClient与Gateway的爱恨交织 近日&#xff0c;在负责的项目中&#xff0c;我对 Spring Boot、Spring Cloud 以及 Spring Cloud Alibaba 进行了版本升级。原以为会一切顺利&#xff0c;没想到却遭遇了 Spring Cloud Gateway 无法正…

从赛车到服务台:IT团队可以从F1赛车中学到什么?

一级方程式赛车被誉为最高级别的赛车&#xff0c;简称F1赛车&#xff0c;它不断挑战速度、创新和进步的极限。因此&#xff0c;对于您的IT团队来说&#xff0c;还有什么比这项运动更值得借鉴的呢&#xff1f; 作为赛车运动的巅峰之作&#xff0c;F1赛车拥有10支车队和20名车手…

LLM、ChatGPT与多模态必读论文150篇

为了写本 ChatGPT 笔记&#xff0c;我和10来位博士、业界大佬&#xff0c;在过去半年翻了大量中英文资料/paper&#xff0c;读完 ChatGPT 相关技术的150篇论文&#xff0c;当然还在不断深入。 由此而感慨&#xff1a; 读的论文越多&#xff0c;你会发现大部分人对ChatGPT的技…

因为计算机中丢失MSVCP140.dll,无法启动此程序运行软件的解决方法

msvcp140.dll重新安装五个解决方法与msvcp140.dll文件的作用和丢失对电脑的影响介绍 正文&#xff1a; 在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中最常见的就是“缺少xxx.dll文件”。而msvcp140.dll就是其中之一。那么&#xff0c;msvcp140.…

anaconda换源安装pytorch(附带bug解决办法)

1.安装anaconda 如何安装anaconda可以看这篇文章:如何安装anaconda 2.换源安装pytorch: 首先进入到pytorch官网&#xff0c;选对好参数之后复制命令进入到anaconda prompt即可: 然后进入自己的环境之后输入该命令(即conda install …)&#xff0c;则可以进行下载。下载完成…

物理世界中的等距3D对抗样本

论文题目&#xff1a;Isometric 3D Adversarial Examples in the Physical World 会议&#xff1a;NIPS 2022 点云&#xff1a; 点云——表达目标空间分布和目标表面特性的海量点集合&#xff0c;点包含xyz坐标信息 能够包含颜色等其他信息 使用顶点、边和面的数据表征的三维…

2 线、3 线和 4 线 RTD 配置之间有什么区别?

电阻温度检测器 (RTD) 是温度传感器的一种&#xff0c;由于其准确性、可重复性和稳定性而广泛应用于各种工业应用。这些设备通过感测材料温度变化时电阻的变化来测量温度。 RTD 探头有多种配置&#xff0c;包括 2 线、3 线和 4 线型号。这些类型之间存在显着差异&#xff0c;在…

Mysql更新varchar存储的Josn数据

Mysql更新varchar存储的Josn数据 记录一次mysql操作varchar格式存储的json字符串数据 1、检查版本 -- 版本5.7以上才可以能执行json操作 select version(); 2、创建测试数据 -- 创建测试表及测试数据 CREATE TABLE test_json_table AS SELECT UUID(), {"test1": …

博客RESTful API 接口开发

目录 1.博客系统规划 2.基础服务搭建 3.登录接口 4.新增文章接口 5.查询文章接口 6.修改文章接口 7.删除文章接口 总结 1.博客系统规划 首先规划一下有哪些接口&#xff0c;从博客文章角度来看&#xff0c;需要如下接口&#xff1a; 新增文章接口&#xff0c;传递…

蓝桥杯第一天-----时间显示

文章目录 前言一、题目描述二、测试用例三、题目分析四、具体代码实现总结 前言 本章中将相信介绍蓝桥杯中关于时间显示的题目。 链接&#xff1a;https://www.lanqiao.cn/problems/1452/learning/ 一、题目描述 二、测试用例 三、题目分析 1.输入的时间为毫秒&#xff0c;毫…

蓝桥杯每日一题2023.11.28

题目描述 三羊献瑞 - 蓝桥云课 (lanqiao.cn) 题目分析 本题首先进行观察可以确定 1.“三”为 1 &#xff08;十进制数字要进位进一位&#xff09; 2.“祥”一定不为 0 &#xff08;有前导0就不能算为 4 位数&#xff09; 使用搜索时将其特判 #include<bits/stdc.h> …

Matplotlib直方图的创建_Python数据分析与可视化

Matplotlib直方图的创建 概念区分绘制直方图 概念区分 什么是直方图&#xff1f; 直方图&#xff08;Histogram&#xff09;又称质量分布图&#xff0c;是统计报告图的一种&#xff0c;由一系列高度不等的纵向条纹或线段表示数据分布的情况&#xff0c;一般用横轴表示数据所属…

基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测

基本功能演示 摘要&#xff1a;跌倒是一种常见的意外事件&#xff0c;尤其对于老年人、儿童、孕妇以及患有某些疾病的人群来说&#xff0c;跌倒可能会导致严重的身体损伤甚至危及生命。因此&#xff0c;及时准确地检测跌倒事件&#xff0c;对于保护人们的生命安全&#xff0c;提…