xgfe通过sonarqube扫描问题
Sonar way方式扫描结果
1:魔鬼数字

修改方案:将此魔术数字800分配给一个命名良好的常量,然后改用该常量。
2:日志定义
当前我们可以接触到的日志框架定义时都应该定义为private static final 并且不同类实例化自己的记录器

3:记录异常

规则:记录日志目的是为了便于快速定位 所以一般情况下我们需要上下文信息和异常的相关信息
修改方案:log.error("Load config file error. ",e);
拓展注意点
1)很多时候我们想获取一个对象相关详细信息 如通过如下System.out.println(obj),请确保对象类重写了toString方法 否则只会打印对象的hashCode值,没有实际意义。
2)如果是在开发阶段可以打印e.printStackTrace() 可以及展示详细的栈信息和代码位置 生产版本切勿出现会引发不可预知问题。
4: 常量的定义规则

规则:简单来讲常量一般定义为大写字母连接符采用下划线 并且类型为public static
final类型这样可以提高代码的共享程度与提高代码的易读性
5:常量类的定义

注意:静态常量类需要添加一个私有的构造方法 防止本类被实例化 因为如果不加默认会添加一个隐式的公共构造方法 如下

6:定义一个类中属性和方法顺序以及规则

规则:如下首先字段 之后是方法,方法中构造方法一般优先

规则:
包:小写字母
类:首字母大写,如果一个类由多个单词构成,那么每个单词的首字母都大写,而且中
间不使用任何的连接符
方法或者属性:首单词全部小写,如果一个方法由多个单词构成,那么从第二个单
词开始首字母大写,不使用连接符
7:枚举定义 请注意代码的正确性和可读性

8:无用代码删除
9:if esle for等等关键字使用时请务必带上花括号 提高可读性

10: if 语句可以合并的 请合并不要嵌套太多层 提升代码可读性

11: 圈复杂度过高 导致逻辑过于复杂容易出错 应降低到门限值以内

解决方法:三元表达式、if中多个条件在外部判断结果、抽取方法、删除不必要else

12:使用equalsIgnoreCase()替换toUpperCase()/ toLowerCase()和equals()。提高效率

13:删除控制台输出

14:减少此循环中的break和continue语句总数,以最多使用一个。

15:使用isEmpty()检查集合是否为空是的代码更具有可读性

16:每行最多允许一个语句。

17:stringContainer对象的类型应该是List接口,而不是实现ArrayList。

修改方案:List stringContainer = new ArrayList<String>();
18:用未同步的类(例如“ StringBuilder”)替换同步的类“ StringBuffer”。

19:减少表达式中使用的条件运算符的数量(允许的最大值3)

20:立即返回此表达式,而不是将其分配给临时变量“ objHead”

21:引入一个新变量,而不是重用参数“ element”

22: 删除未使用的方法参数“ clazz”

23:删除此未使用的“ tempRow1”局部变量。

修改方案:根据代码业务逻辑判断这里需要第三个位置元素 所以可以直接适应get(index)方法直接获取
24:局部变量不应遮蔽类字段(局部变量名称和全局字段命名重复)


25:未使用的私有方法

修改方案:造成这个原因一般是方法引用处被删除了 所以一般删除方法调用时要注意被删除的方法知否只在这一处使用了 如果只在这一处使用 则对应的方法也应该删除
26:抛出异常请不要直接使用基类

修改方案:使用具体异常 InterruptedException\NullPointerException等等
Sonar way方式扫描结果
1:魔鬼数字
修改方案:将此魔术数字800分配给一个命名良好的常量,然后改用该常量。
2:日志定义
当前我们可以接触到的日志框架定义时都应该定义为private static final 并且不同类实例化自己的记录器
3:记录异常
规则:记录日志目的是为了便于快速定位 所以一般情况下我们需要上下文信息和异常的相关信息
修改方案:log.error("Load config file error. ",e);
拓展注意点
1)很多时候我们想获取一个对象相关详细信息 如通过如下System.out.println(obj),请确保对象类重写了toString方法 否则只会打印对象的hashCode值,没有实际意义。
2)如果是在开发阶段可以打印e.printStackTrace() 可以及展示详细的栈信息和代码位置 生产版本切勿出现会引发不可预知问题。
4: 常量的定义规则
规则:简单来讲常量一般定义为大写字母连接符采用下划线 并且类型为public static
final类型这样可以提高代码的共享程度与提高代码的易读性
5:常量类的定义
注意:静态常量类需要添加一个私有的构造方法 防止本类被实例化 因为如果不加默认会添加一个隐式的公共构造方法 如下
6:定义一个类中属性和方法顺序以及规则
规则:如下首先字段 之后是方法,方法中构造方法一般优先
规则:
包:小写字母
类:首字母大写,如果一个类由多个单词构成,那么每个单词的首字母都大写,而且中
间不使用任何的连接符
方法或者属性:首单词全部小写,如果一个方法由多个单词构成,那么从第二个单
词开始首字母大写,不使用连接符
7:枚举定义 请注意代码的正确性和可读性
8:无用代码删除
9:if esle for等等关键字使用时请务必带上花括号 提高可读性
10: if 语句可以合并的 请合并不要嵌套太多层 提升代码可读性
11: 圈复杂度过高 导致逻辑过于复杂容易出错 应降低到门限值以内
解决方法:三元表达式、if中多个条件在外部判断结果、抽取方法、删除不必要else
12:使用equalsIgnoreCase()替换toUpperCase()/ toLowerCase()和equals()。提高效率
13:删除控制台输出
14:减少此循环中的break和continue语句总数,以最多使用一个。
15:使用isEmpty()检查集合是否为空是的代码更具有可读性
16:每行最多允许一个语句。
17:stringContainer对象的类型应该是List接口,而不是实现ArrayList。
修改方案:List stringContainer = new ArrayList<String>();
18:用未同步的类(例如“ StringBuilder”)替换同步的类“ StringBuffer”。
19:减少表达式中使用的条件运算符的数量(允许的最大值3)
20:立即返回此表达式,而不是将其分配给临时变量“ objHead”
21:引入一个新变量,而不是重用参数“ element”
22: 删除未使用的方法参数“ clazz”
23:删除此未使用的“ tempRow1”局部变量。
修改方案:根据代码业务逻辑判断这里需要第三个位置元素 所以可以直接适应get(index)方法直接获取
24:局部变量不应遮蔽类字段(局部变量名称和全局字段命名重复)
25:未使用的私有方法
修改方案:造成这个原因一般是方法引用处被删除了 所以一般删除方法调用时要注意被删除的方法知否只在这一处使用了 如果只在这一处使用 则对应的方法也应该删除
26:抛出异常请不要直接使用基类
修改方案:使用具体异常 InterruptedException\NullPointerException等等
浙公网安备 33010602011771号