有人知道是否有适用于java的在线代码分析器。我希望能够检查一些小代码。
Ex:此方法有此警告:(空取消引用)
private XMLGregorianCalendar asXMLGregorianCalendar(Date data) {
DatatypeFactory dateformat = null;
try {
dateformat = DatatypeFactory.newInstance();
} catch (MyException e) {
///
}
if (data == null) {
return null;
} else {
GregorianCalendar gregorianCal = new GregorianCalendar();
gregorianCal.setTimeInMillis(data.getTime());
return dateformat.newXMLGregorianCalendar(gregorianCal );
}
}
我的新版本是:
private XMLGregorianCalendar asXMLGregorianCalendar(Date data) throws ComponentBlockingException {
if (data == null) {
return null;
}
DatatypeFactory dateformat = null;
try {
dateformat = DatatypeFactory.newInstance();
} catch (MyException e) {
////
}
GregorianCalendar gregorianCal = new GregorianCalendar();
gregorianCal.setTimeInMillis(data.getTime());
return dateformat.newXMLGregorianCalendar(gregorianCal );
}
}
我认为第二种方式应该没问题。
答案 0 :(得分:4)
我不确定任何可用的在线代码anlayzer工具,但让我尝试帮助您进行代码分析。
如果由于某种原因导致try block命中异常
try {
dateformat = DatatypeFactory.newInstance();
}
然后你的dateformat将保持为null。所以下面的陈述
return dateformat.newXMLGregorianCalendar(gregorianCal );
容易出现空指针异常。因此我相信你得到静态代码anlayzer错误。
在代码到达您返回的行之前,您必须确保dateformat在所有情况下都已初始化或非null。
希望它有所帮助!