Sonar扫描笔记

记录Sonar扫描时碰到的问题以及解决办法。

Add a private constructor to hide the implicit public one.

如果一个类的里面的方法都是static修饰的静态方法(一般是工具类),那么需要给这个类定义一个非公共构造函数(添加私有构造函数以隐藏隐式公共构造函数),为了防止调用者不明白进行了实例化调用,如下:

1
2
3
4
5
6
7
public class UtilityClass {
// Suppress default constructor for noninstantiability
private UtilityClass() {
}

// ...
}

“entrySet()” should be iterated when both the key and value are needed

如果循环中只需要Map映射中的键时,可以迭代keySet。但是,当需要键和值时,推荐迭代entrySet。

不正确的做法:

1
2
3
4
5
6
7
public void doSomethingWithMap(Map<String,Object> map) {
// Noncompliant; for each key the value is retrieved
for (String key : map.keySet()) {
Object value = map.get(key);
// ...
}
}

正确的做法:

1
2
3
4
5
6
7
public void doSomethingWithMap(Map<String,Object> map) {
for (Map.Entry<String,Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
// ...
}
}

参考


----------- 本文结束啦感谢您阅读 -----------

赞赏一杯咖啡

欢迎关注我的其它发布渠道