SonarQube安全扫描常见问题

目录

一、SonarQube质量报告

二、SonarQube扫描常见问题和修复方法

三、SonarQube质量配置


最近小编在使用SonarQube工具进行代码扫描,检查代码异味,系统漏洞等,实际过程中也遇到了不少问题,这篇文章主要列举我遇到的常见问题和解决方法。

如何使用SonarQube进行安全扫描,可以查看往期文章:SonarQube安全扫描_sonarqube 安全扫描-CSDN博客

一、SonarQube质量报告

进入到SonarQube首页,可以看到项目报告的全部信息,如下图所示:

 点击项目名称,可查看报告详情,New Code(新增代码)Overall Code(全量代码)


二、SonarQube扫描常见问题和修复方法

1.(不应重复字符串文字)String literals should not be duplicated.

问题分析:重复输出某个文字

解决方法:定义一个常量来代替重复的字面值

 上述代码可修改为:

const errmsg = "check request fields required failed, %w"
err, errResp := CheckRequestFieldsRequired(req, reflect.TypeOf(*req))
	if err != nil {
		return fmt.Errorf(errmsg, err), errResp

	}

2.(认知功能的复杂度不应过高)Cognitive Complexity of functions should not be too high.

问题分析:代码复杂度过高

解决方法:将封装的函数可以拆分成多个函数,其实每个if...else...或者for语句都可以根据代码需求封装为函数,降低代码复杂度。 

3.(函数不能为空)Functions should not be empty.

问题分析:函数为空

解决方法:首先确定函数体为空的原因,可能的点:预留的钩子,实现接口所必需,遗漏实现功能。

如果是预留的狗子或者满足接口的需要可以在函数内添加注释,说明当前的情况和未来可能的计划。

如果是遗漏了某个功能的实现,根据实际需求补充相关的逻辑。

4.(函数不应该有太多的参数)Functions should not have too many parameters.

问题分析:函数存在过多的参数,增加了调用该函数的复杂性,同时也降低了代码的可读性和可维护性。

解决方法:可以使用参数对象模式,创建一个包含所有这些参数的新结构体类型,可以减少函数的参数数量。

 上述代码可修改为:

type AssembleHPCJobRequestParams struct {
    Context            context.Context
    Logger             *zap.SugaredLogger
    Job                *models.Job
    AppImage           string
    EnvVars            map[string]string
    SchedulerSubmitFlags map[string]string
    NoTransfer         bool
    LocalImage         bool
    CoresPerNode       int
}


func AssembleHPCJobRequest(params AssembleHPCJobRequestParams) hpc.SystemPostRequest {
    // 函数的实现逻辑...
}

//在调用这个函数的时候
params := AssembleHPCJobRequestParams{
    Context:            ctx,
    Logger:             logger,
    Job:                job,
    AppImage:           appImage,
    EnvVars:            envVars,
    SchedulerSubmitFlags: schedulerSubmitFlags,
    NoTransfer:         noTransfer,
    LocalImage:         localImage,
    CoresPerNode:       coresPerNode,
}

request := AssembleHPCJobRequest(params)

5.(局部变量和函数参数名称应遵守命名约定)Local variable and function parameter names should comply with a naming convention.

问题分析:此局部变量命名不符合正则表达式

解决方法: 上述命名其实已经符合正则表达式规则,但是按照常见的Go语言命名习惯,变量名一般采用驼峰式命名(CamelCase),而非下划线分隔。

 上述命名可修改为:可以将user_combo更名为userCombo,将turn_info_each更名为turnInfoEach


三、SonarQube质量配置

质量规则
go:Sonar way Bug:6 坏味道:17
规则类型违规级别中文
Variables should not be self-assigned
Bug主要变量不应自赋值
Identical expressions should not be used on both sides of a binary operator
Bug主要不应在二元运算符的两侧使用相同的表达式
All code should be reachable
Bug主要所有代码都应该是可访问的
Related "if/else if" statements should not have
the same condition
Bug主要相关的“if/elseif'语句不应具有相同的条件
"=+" should not be used instead of "+="
Bug主要不能用“=+”代替“+=”
All branches in a conditional structure should not have exactly the same implementation
Bug主要条件结构中的所有分支都不应有完全相同的实现
Cognitive Complexity of functions should not be too high
坏味道
严重认知功能的复杂度不应过高
String literals should not be duplicated
坏味道严重不应重复字符串文字
Functions should not be empty
坏味道严重函数不能为空
Track uses of "FIXME" tags
坏味道主要跟踪"FIXME"标签的使用情况
Two branches in a conditional structure should
not have exactly the same implementation
坏味道主要条件结构中的两个分支不应该有完全相同的实现
Redundant pairs of parentheses should be
removed
坏味道主要应删除多余的圆括号对
Functions should not have identical
implementations
坏味道主要函数不应该有相同的实现
Track parsing failures
坏味道主要跟踪解析失败
"switch" statements should not have too many
"case" clauses
坏味道主要"switch"语句不应该有太多的"case"从句
Functions should not have too many parameters
坏味道主要函数不应该有太多的参数
Nested blocks of code should not be left empty
坏味道主要嵌套的代码块不应为空
Multi-line comments should not be empty
坏味道次要多行注释不应为空
Boolean checks should not be inverted
坏味道次要布尔值检查不应倒置
Boolean literals should not be redundant
坏味道次要布尔字面值不应是多余的
Function and method names should comply with a naming convention
坏味道次要函数和方法的名称应符合
命名约定
Local variable and function parameter names
should comply with a naming convention
坏味道次要局部变量和函数参数名称应遵守命名约定
Track uses of "TODO" tags
坏味道提示跟踪“TODO”标签的使用

经过上述分享,应该对SonarQube工具进行安全扫描和解决代码异味有了一定的了解,请继续关注小编~带来更多的分享哦~

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

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

相关文章

账号密码无错误,xshell可以连接,但是WindTerm连接失败

xshell可以连接,但是WindTerm却连接失败 报错提示内容: 连接WindTerm是,账号密码是正确的,但是一输入账号,就报The remote host closed the connection错误,或者是Unknown error错误 解决方法 在新建…

Perfectly Clear Workbench: 智能图像清晰修复软件

Perfectly Clear Workbench 是由 EyeQ 公司开发的一款先进的智能图像清晰修复软件,适用于 Mac 和 Windows 平台。该软件旨在通过自动化和高效的图像处理工具,帮助摄影师、设计师以及影像爱好者轻松实现图像优化和修复。无论是专业摄影工作室还是个人用户…

揭秘ASA归因统计的奥秘,Xinstall带您轻松上手!

在移动互联网时代,App推广已成为企业获取用户、提升品牌知名度的重要手段。然而,如何准确衡量推广效果,如何精准定位目标用户,一直是困扰着众多App运营者的难题。今天,我们就来谈谈ASA(Apple Search Ads&am…

【Ardiuno】使用ESP32单片机创建web服务通过网页控制小灯开关的实验(图文)

经过实验测试ESP32单片机的网络连接还是很方便的,这里小飞鱼按照程序实例的代码亲自实验一下使用Esp32生成的网页服务来实现远程无线控制小灯开关功能,这样真的是离物联网开发越来越近了,哈哈! 连接好开发板和电路,将…

采用PHP语言(医院安全不良事件上报系统源码)医院不良事件 各类事件分析、分类、处理流程

医疗安全不容忽视! 医疗安全(不良)事件是指在临床诊疗活动中以及医院运行过程中,任何可能影响患者的诊疗结果、增加患者的痛苦和负担并可能引发医疗纠纷或医疗事故,以及影响医疗工作的正常运行和医务人员人身安全的因…

CVE-2024-4577:PHP CGI Windows平台远程代码执行漏洞

文章目录 0x01 前言0x02 漏洞描述0x03 影响范围0x04 资产测绘0x05 漏洞复现0x06 漏洞修复0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后…

如何在Visual Studio Code中禁用Less文件保存时自动编译为CSS的功能

第一步:点击扩展,搜索Easy Less,并找到对应的扩展设置 第二步:点击在setting.json中编辑 第三步:将此段代码复制粘贴 "compress": false, // 是否压缩"sourceMap": false, // 是否生成map文件&am…

洗地机是智商税吗?家用洗地机哪个牌子好?2024年多功能洗地机推荐

洗地机是智商税吗?肯定不是!!!洗地机因为其功能集成了扫地、吸尘、拖地、烘干和消毒的功能,仅需一步操作即可完成所有清洁任务,大大的提升了人们的清洁效率,节省了人们清洁的时间和精力。那么&a…

RocketMQ查询出重复数据,两条MessageID一样的解决办法如下

问题描述 在使用RocketMQ的可视化工具dashboard-1.0.0时,首先生产了10条数据,但是查询时却查出来了14条,有四条数据重复,重复数据MessageID和key相同,但是通过key单独查询却只能查出一条 测试代码 package com.fdw.rocketmq.producer;import org.apache.rocketmq.client…

设计模式学习(二)工厂模式——工厂方法模式

设计模式学习(二)工厂模式——工厂方法模式 前言工厂方法模式简介示例优点缺点使用场景 前言 前一篇文章介绍了简单工厂模式,提到了简单工厂模式的缺点(违反开闭原则,扩展困难),本文要介绍的工…

WordPress 站点 Wp-Login.Php 登录页面,防止被机器扫描爆破终极方法

最近好像不少的 WordPress 站点又迎来了一波疯狂的 wp-login.php 登录页面暴力破解,明月使用的 Dragon 主题也迅速的做出了安全防范响应,第一时间就增强了代码上的安全防御能力。明月代运维的几个站点也在这方面加强了防范措施,基本上实现了永久解决这一顽疾的目标,今天明月…

CAN总线协议教程

系列文章目录 文章目录 系列文章目录前言1.简介:CAN总线什么是CAN?我们将涵盖的内容 2.CAN报文数据框架远程框架错误帧重载框架标准与扩展 CAN基本CAN与全CAN总线仲裁和消息优先级邮件寻址和识别有关标识符值的说明 3.CAN物理层CAN总线不同的物理层最大总…

报错 Import declaration conflicts with local declaration of Policy

今天我新建了个页面 ,并将其进入到主页面是报了错 报错原因是:我在代码中有一个命名冲突。具体来说,我再在同一作用域内同时定义和导入了名为 Policy 的东西,导致冲突。 import React from react; import Policy from /pages/Pol…

Parallels Desktop 19虚拟机助你一机多用

Parallels Desktop 19 mac虚拟机是一款功能强大且易于使用的虚拟化软件,它允许用户在Mac电脑上同时运行Windows、Linux和其他多种操作系统,为用户提供了极大的灵活性和兼容性。 Parallels Desktop 19获取 这款虚拟机软件具有直观易用的界面,…

物联网TCP、UDP、CoAP、LwM2M、MQTT协议简单对比

一、前言 目前物联网行业有TCP、UDP、CoAP、LwM2M、MQTT、Modbus系列、JT808、HTTP、TLINK、ISAPI等协议,本文先对其中的几款协议进行介绍。具体关系见下图: 传输层协议:TCP、UDP;应用层协议:CoAP、LwM2M、MQTT、Modbu…

AI产品经理的转行之路,如何迈向年薪80w的职业高峰?

前言 在当今科技日新月异的时代,AI产品经理作为一个炙手可热的职业,吸引了众多向往高薪与前沿领域结合的求职者的目光。年薪80万的诱惑力无疑是巨大的,但不少自学中的朋友发现,即便涉猎广泛的产品知识,想要顺利转型成…

基于FreeRTOS+STM32CubeMX+LCD1602+MCP6S26(SPI接口)的6通道模拟可编程增益放大器Proteus仿真

一、简介: MCP6S26是模拟可 编程增益放大器(Programmable Gain Amplifiers, PGA)。它们可配置为输出 +1 V/V 到 +32 V/V 之间的增 益,输入复用器可通过 SPI 端口选择最多 6 个通道中的 一个。串行接口也可以将 PGA 置为关断模式,以降低 功耗。这些 PGA 针对高速度、低失调…

100TOPS算力!16GB内存顶配NVIDIA Jetson Orin NX 16GB 开箱

观前提醒:你以为我斥资6600买了一个NX玩?我其实买了三个NX NVIDIA Jetson Orin NX 简介: NVIDIA Jetson Orin NX是NVIDIA推出的一款高性能边缘计算平台,其设计目标是提供卓越的计算能力以支持各种复杂的人工智能(AI&am…

小白学Linux | 日志排查

一、windows日志分析 在【运行】对话框中输入【eventvwr】命令,打开【事件查看器】窗 口,查看相关的日志 管理员权限进入PowerShell 使用Get-EventLog Security -InstanceId 4625命令,可获取安全性日志下事 件 ID 为 4625(失败登…

2024苹果开发者大会:Siri 接上 ChatGPT,OpenAI苹果强强联合

一直在生成式AI战争中默默无闻的苹果终于憋不住了! 北京时间6月11日凌晨1点,2024苹果WWDC全球开发者大会在苹果总部 Apple Park开幕。Day 1的发布会在介绍完各个操作系统的更新后,一半的时间都留给了本次WWDC的重头戏——苹果AI(…