SonarQube安全扫描常见问题

2024-06-11 23:52

本文主要是介绍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.ContextLogger             *zap.SugaredLoggerJob                *models.JobAppImage           stringEnvVars            map[string]stringSchedulerSubmitFlags map[string]stringNoTransfer         boolLocalImage         boolCoresPerNode       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工具进行安全扫描和解决代码异味有了一定的了解,请继续关注小编~带来更多的分享哦~

这篇关于SonarQube安全扫描常见问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052608

相关文章

Android我的二维码扫描功能发展史(完整)

最近在研究下二维码扫描功能,跟据从网上查阅的资料到自己勉强已实现扫描功能来一一介绍我的二维码扫描功能实现的发展历程: 首页通过网络搜索发现做android二维码扫描功能看去都是基于google的ZXing项目开发。 2、搜索怎么使用ZXing实现自己的二维码扫描:从网上下载ZXing-2.2.zip以及core-2.2-source.jar文件,分别解压两个文件。然后把.jar解压出来的整个c

9 个 GraphQL 安全最佳实践

GraphQL 已被最大的平台采用 - Facebook、Twitter、Github、Pinterest、Walmart - 这些大公司不能在安全性上妥协。但是,尽管 GraphQL 可以成为您的 API 的非常安全的选项,但它并不是开箱即用的。事实恰恰相反:即使是最新手的黑客,所有大门都是敞开的。此外,GraphQL 有自己的一套注意事项,因此如果您来自 REST,您可能会错过一些重要步骤!

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展:人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点:数据的管理者(DBMS);数据结构化;数据共享性高,冗余度低,易于扩充;数据独立性高。DBMS 对数据的控制功能:数据的安全性保护;数据的完整性检查;并发控制;数据库恢复。 数据库技术研究领域:数据库管理系统软件的研发;数据库设计;数据库理论。数据模型要素 数据结构:描述数据库

使用JWT进行安全通信

在现代Web应用中,安全通信是至关重要的。JSON Web Token(JWT)是一种流行的安全通信方式,它允许用户和服务器之间安全地传输信息。JWT是一种紧凑的、URL安全的表示方法,用于在两方之间传输信息。本文将详细介绍JWT的工作原理,并提供代码示例帮助新人理解和实现JWT。 什么是JWT? JWT是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSO

如何给文档设置密码?电脑文件安全加密的详细操作步骤(10种方法)

在数字化时代,电脑文件的安全和隐私至关重要。通过给电脑的文件或者文件夹设置密码和加密,可以有效保护你的重要文件不被未经授权的人员访问,特别是公司的重要岗位,一些特殊的机密文件,投标文件,资金文件等等,更应该注重文件日常使用安全性。下面将为你介绍10种电脑文件,文件夹加密的详细操作步骤,帮助你更好地保护你的电脑文件安全。 加密方式一、Windows系统内置加密(电脑自带的文件加密) 选中需要

安全科普:理解SSL(https)中的对称加密与非对称加密

今天刚好为站点的后台弄了下https,就来分享我了解的吧。 密码学最早可以追溯到古希腊罗马时代,那时的加密方法很简单:替换字母。 早期的密码学:   古希腊人用一种叫 Scytale 的工具加密。更快的工具是 transposition cipher—:只是把羊皮纸卷在一根圆木上,写下信息,羊皮纸展开后,这些信息就加密完成了。 虽然很容易被解密,但它确实是第一个在现实中应用加密的

为什么 C++ 允许不安全的代码(Bjarne Stroustrup)

为什么 C++ 允许不安全的代码? 也就是说,为什么 C++ 支持可以用来违反静态(编译时)类型安全规则的操作? 为了直接访问硬件(例如,把整数当作指向设备寄存器的指针)为了获取最佳的运行时效率和空间效率(例如,不检测访问数组元素的操作(是否越界),不检测访问对象的指针(是否有效))为了和 C 兼容 所以,当你并不需要以上三种特性时,最好避免有如瘟疫般的不安全代码: 不要用类型转换(cas

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全RBCD资源Operators组成员HTLMRelay结合

基于资源的约束委派(RBCD)是在Windows Server 2012中新加入的功能,与传统的约束委派相比,它不再需要域管理员权限去设置相关属性。RBCD把设置委派的权限赋予了机器自身,既机器自己可以决定谁可以被委派来控制我。也就是说机器自身可以直接在自己账户上配置msDS-AllowedToActOnBehalfOfOtherIdentity属性来设置RBCD。 所以核心就是谁或什么权限能修改

等保测评:全面保障信息系统安全的必要举措

等保测评(信息安全等级保护测评)是评估信息系统安全等级的重要过程,旨在确保信息系统能够抵御各种安全威胁,保障信息的机密性、完整性和可用性。以下是一篇关于等保测评的文章,内容清晰、分点表示,并参考了相关数字和信息。 一、引言 随着信息技术的快速发展,信息系统在各行各业中的应用越来越广泛,但同时也面临着日益严峻的安全威胁。为了保障信息系统的安全,我国实施了信息安全等级保护制度,要求对信息系统进行等

Unity Meta Quest 开发:关闭 MR 应用的安全边界

社区链接: SpatialXR社区:完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 📕教程说明 这期教程我将介绍如何在应用中关闭 Quest 系统的安全边界。 视频讲解: https://www.bilibili.com/video/BV1Gm42157Zi 在 Unity 中导入 Meta XR SDK,进行环境配置后,打开 Assets > Plugins > An