使用静态分析可以提醒以下代码吗?
public class IntegerConversion {
static int value; // Notice this is an int and not Integer
public static Integer strToInt(String s) {
Integer k;
try {
k= Integer.parseInt(s);
} catch (NumberFormatException e) {
k = null;
}
return k;
}
public static void main(String[] args) {
// possible null pointer here as strToInt can return null
value = strToInt("abc");
}
}
我正在使用spotbugs(findbugs后继者),并且如果分配是在如下所示的相同方法中完成的话,它会正确地警告代码。
public class IntegerConversion {
static int value;
public static void strToInt(String s) {
Integer k;
try {
k= Integer.parseInt(s);
} catch (NumberFormatException e) {
k = null;
}
value = k; // spot bugs alert on this line
}
public static void main(String[] args) {
strToInt("abc");
}
}
第一个代码段上缺少的警报是设计选择还是技术限制?是否有其他可以捕获此错误的静态分析工具?