My Sonar 6.7.1 LTS实例无法识别以下代码中的NullPointerException:
public static boolean getBooleanFromMap() {
final Map<String, Boolean> map = new HashMap<>();
map.put("a", false);
return map.get("b"); // line 118
}
public static void main(final String[] args) {
System.out.println(getBooleanFromMap());
}
在方法“getBooleanFromMap()”中,从HashMap中检索一个空的布尔值,然后将该空值取消装箱并作为布尔值返回(在我的示例中为第118行)。 取消装箱会导致NullPointerException,例如运行“main”方法时。
Sonar(内置Java分析器5.1(build 13090))并没有抱怨这一点。为什么呢?
此外,当我没有HashMap但是使用“org.apache.sling.api.resource.ValueMap”的更复杂的方法时,其中“get”方法甚至用@CheckForNull注释,Sonar也没有看到什么。 有没有办法让Sonar抱怨这个?