码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SonarLint(代码质量检测工具+案例+好习惯养成器)


    文章目录

    • 参考文章
    • 一、 SonarLint是什么(代码质量检测器)
      • SonarQube 和SonarCloud
    • 二、代码质量问题案例
      • 1、异常应该被记录或重新抛出,但不能同时被记录和重新抛出
      • 2、局部变量不应该声明后立即返回或抛出
      • 3、不使用的“私有”字段应该被删除
      • 4、代码段不应该被注释掉
      • 5、应该删除未使用的局部变量
      • 6、 在布尔表达式中应避免使用“布尔”
      • 7、Try-catch块不应该嵌套
      • 8、加密算法应采用安全模式和填充方案
      • 9、实例方法不应该写入“静态”字段
      • 10、非原语字段不应该是“易失性的” (原子性)
      • 11、“静态”基类成员不应通过派生类型访问
      • 12、应该删除不必要的导入
      • 13、不应使用原始类型
      • 14、不应该抛出泛型异常
      • 15、常量名称应该符合命名约定
      • 16、应该返回空数组和集合,而不是null
      • 17、方法的认知复杂性不应太高
      • 18、不应使用冗余强制转换
      • 19、代码段不应该被注释掉
      • 不行了不行了太多了我不干了


    参考文章

    个人笔记(我不是运维我也不是测试),不同意见,望有交流
    直接可以点击跳转连接

    SonarLint官网

    SonarQube官网

    SonarCloud官网

    SonarQube简介

    SonarQube与SonarLint的区别和联系

    一、 SonarLint是什么(代码质量检测器)

    这个东西是一个很好的插件,可以养成量好的代码习惯,一个好的程序员代码质量肯定是需要合格的。
    SonarLint官网
    官网的话:

    SonarLint 是一个免费的开源IDE 扩展,可识别并帮助您在编写代码时解决质量和安全问题。像拼写检查器一样,SonarLint 会显示缺陷并提供实时反馈和清晰的修复指导,以便从一开始就提供干净的代码。

    他可以通过在idea中直接通过插件安装
    在这里插入图片描述
    安装后重启就可以使用了
    可以直接 ctrl +shift+s对当前文件扫描质量
    或者右键文件夹对整个包或者模块项目全部质量扫描
    在这里插入图片描述

    在扫描过后下面会有提示
    像下面这些头部显示的图标就是有问题有严重的有不严重的,bug检测出来是一个小虫,如果是漏洞问题会显示一个锁。
    在这里插入图片描述

    SonarQube 和SonarCloud

    使用 SonarLint + SonarQube 持续高效地交付
    您的工作流程已经拥有所有正确的部分 - 它只需要一点涡轮增压。SonarLint 在您的 IDE 中捕获问题,同时 SonarQube分析拉取请求和分支。这种组合形成了一个持续的代码质量分析解决方案,可以让您的代码库保持干净。

    您将花更少的时间审查代码问题,而将更多时间花在代码逻辑和解决有趣的问题上!
    这两个也都可以做代码质量检测

    SonarLint可以接收和连接SonrarQube对代码库扫描的结果从而通知Developer(程序员)

    SonarQube的文档有安装的技巧
    安装SonarQube 的时候报了jvm错误 ,只能手动改wrapper.conf文件
    指向我再去的java版本
    在这里插入图片描述
    在这里插入图片描述
    你可构建自己的项目,创建一个本地项目
    在这里插入图片描述

    需要下载

    在这里插入图片描述
    我卡这了,就是连不上,token和密码都不行,吐血而亡

    二、代码质量问题案例

    先说这些问题代码可不是我写的

    1、异常应该被记录或重新抛出,但不能同时被记录和重新抛出

    Exceptions should be either logged or rethrown but not both

    no
    在这里插入图片描述
    yes在这里插入图片描述

    2、局部变量不应该声明后立即返回或抛出

    Local variables should not be declared and then immediately returned
    or thrown

    no
    在这里插入图片描述
    yes
    在这里插入图片描述

    3、不使用的“私有”字段应该被删除

    没有用的东西删除

    Unused “private” fields should be removed

    no
    在这里插入图片描述

    yes
    在这里插入图片描述

    4、代码段不应该被注释掉

    没用就不要了

    Sections of code should not be commented out

    no
    在这里插入图片描述

    yse
    在这里插入图片描述

    5、应该删除未使用的局部变量

    Unused local variables should be removed

    6、 在布尔表达式中应避免使用“布尔”

    Boxed “Boolean” should be avoided in boolean expressions

    7、Try-catch块不应该嵌套

    Try-catch blocks should not be nested

    8、加密算法应采用安全模式和填充方案

    Encryption algorithms should be used with secure mode and padding
    scheme

    9、实例方法不应该写入“静态”字段

    Instance methods should not write to “static” fields

    在这里插入图片描述

    10、非原语字段不应该是“易失性的” (原子性)

    Non-primitive fields should not be “volatile”

    将数组标记为volatile意味着数组本身将始终被刷新读取,而不会被线程缓存,但数组中的项将不会被刷新。类似地,将可变对象字段标记为volatile意味着对象引用是volatile,但对象本身不是,其他线程可能看不到对象状态的更新。

    Atomic类型
    AtomicIntegerArray:提供了原子性操作int数据类型数组元素的操作。
    AtomicLongArray:提供了原子性操作long数据类型数组元素的操作。
    AtomicReferenceArray:提供了原子性操作对象引用数组元素的操作。
    保证原子类型的数组666

    这可以通过使用相关的AtomicArray类(例如AtomicIntegerArray)来使用数组来回收。对于可变对象,应该删除volatile,并使用其他一些方法来确保线程安全,例如同步或ThreadLocal存储。
    no
    在这里插入图片描述
    yes
    在这里插入图片描述

    11、“静态”基类成员不应通过派生类型访问

    “static” base class members should not be accessed via derived types

    为了代码的清晰性,基类的静态成员永远不应该使用派生类型的名称进行访问。这样做会让人感到困惑,可能会造成存在两个不同的静态成员的错觉

    no

    在这里插入图片描述
    yse
    在这里插入图片描述

    12、应该删除不必要的导入

    Unnecessary imports should be removed

    没有用的引入就删除了把兄弟

    在这里插入图片描述

    13、不应使用原始类型

    Raw types should not be used

    No
    在这里插入图片描述
    YES
    在这里插入图片描述

    14、不应该抛出泛型异常

    Generic exceptions should never be thrown

    这是最基本的规范

    NO

    YES
    在这里插入图片描述

    15、常量名称应该符合命名约定

    Constant names should comply with a naming convention

    NO 常量应该全大写啊
    在这里插入图片描述

    16、应该返回空数组和集合,而不是null

    Empty arrays and collections should be returned instead of null

    不要return一个空。
    在这里插入图片描述

    17、方法的认知复杂性不应太高

    Cognitive Complexity of methods should not be too high

    NO 在SonarLint里面 认知复杂对不能超过15,
    这么高的复杂度如果让另一个人来维护这个代码,会骂人的。

    在这里插入图片描述

    18、不应使用冗余强制转换

    Redundant casts should not be used

    NO 意思就是他多此一举的转换
    在这里插入图片描述

    在这里插入图片描述

    19、代码段不应该被注释掉

    Sections of code should not be commented out

    没用的代码就删除,不要乱扔垃圾。

    不行了不行了太多了我不干了

    在这里面可以勾选这个规则或者取消规则
    在这里插入图片描述

  • 相关阅读:
    UE4 C++:Actor与Component的创建、销毁
    网络安全(协议/技术)实验配置大全 - 目录汇总链接
    C 语言标准库
    Debian10 安装mysql
    fmllr--学习笔记
    Java的接口以及接口与抽象类区别
    坠了,ACM怎么读取一串不知具体长度的int数组?
    【2022年11月15日提高A组】路径计数【DP】
    基于ssm企业人事管理系统
    RDMA测试集:preftest安装与使用
  • 原文地址:https://blog.csdn.net/qq_45438019/article/details/125456262
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号