zoukankan      html  css  js  c++  java
  • Sonar在检查java代码隐患中的作用

    Sonar作为一个非常实用的代码质量检查工具,可以在各个维度对整个工程进行一个量化,如代码的测试覆盖率、代码内聚性指标、代码复杂度、代码的重复性检查、包之间的依存度以及代码冲突性等,可以非常直观的通过图标看到这些数据,关于sonar的安装和使用在本博的另一篇文章(《代码质量检查工具Sonar结合hudson、maven使用》)有详细描述,本文主要介绍sonar能够检查出的代码隐患。

    • Avoid Decimal Literals In Big Decimal Constructor 应避免使用Decimal(0.5)这样的做法,因为这样是错误的不精确的
    • Avoid Rethrowing Exception 不应当在catch语句中重新抛出另外的异常
    • Avoid Throwing Null Pointer Exception 不应该抛出空指针异常
    • Boolean Instantiation 不需要实例化布尔变量,只需=Boolean.True or =Boolean.Flase
    • Close Resource 有未关闭的资源,需要使用finally语句块确保安全
    • Collapsible If Statements 如果有多条if语句连续出现,可以使用短路条件if(A && B && ......)提高效率
    • Compare Objects With Equals 比较两个对象应该使用equal而不是等于
    • Cyclomatic Complexity 通常来讲,这个方法或者类太长了,需要分解
    • Dont Import Java Lang Java.Lang是默认引入的不需要显示引入
    • Empty Finalizer或Empty Finally Block或Empty If Stmt或Empty Statement或Empty Static Initializer或Empty Switch Statements或Empty Synchronized Block或Empty Try Block或Empty While Stmt:这个是非常常见的代码问题,if、switch、finally、try等内部是空的,很有可能是码农忘记处理了
    • Equals Hash Code 方法equal重写了但是hashcode未重写
    • Equals Null   和null比较用==而不是用equals
    • If Else Stmts Must Use Braces或If Stmts Must Use Braces 编码时if或者else不写大括号,很容易出现问题
    • Magic Number 魔术数,指的是一个数字无端的出现在代码中,但是却不知道其含义,很常见
    • Naming - *** 通常是类、方法、变量的命名不规范
    • Replace Vector With List 应使用List来代替Vector提高效率
    • Security - Array is stored directly 通常是数组类型的参数使用时,没有使用clone,方法直接改变了引用所指的对象
    • Singular Field 仅在某方法中使用的变量不应该声明为实例变量
    • Unconditional If Statement 通常是If语句永远为真或者永远为假
    • Unnecessary Case Change 使用equalsIgnoreCase()更高效
    • Unused Private Field或Unused formal parameter或Unused local variable或Unused private method没 有用到的变量、参数、方法
    • Useless Operation On Immutable 在方法体中修改了某值意图想传出来,但实际上操作的是一个新的对象或者值,如改变基本类型的参数

    以上是部分常见的隐患类型,还有不少其他的没有写入。


  • 相关阅读:
    String前后去掉空格、option只能定义value值吗?还能添加什么值。dom和Jquery对象转换。
    JsonObject没有fromObject、idea引入maven有红线没依赖、JsonObject maven 依赖包
    json几个小例子
    [极客大挑战 2019]PHP1
    栈溢出原理笔记(一)
    CentOS7怎么安装图形界面
    快速搭建WordPress博客
    Mac 安装Mysql 之 Sqlservice 区别
    Metasploit-初篇
    Windows To Go 制作详解
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3100537.html
Copyright © 2011-2022 走看看