在线Java代码分析器

时间:2013-05-16 09:40:51

标签: java

有人知道是否有适用于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 );

    }

}

我认为第二种方式应该没问题。

1 个答案:

答案 0 :(得分:4)

我不确定任何可用的在线代码anlayzer工具,但让我尝试帮助您进行代码分析。

如果由于某种原因导致try block命中异常

try {
        dateformat = DatatypeFactory.newInstance();
    }

然后你的dateformat将保持为null。所以下面的陈述

return dateformat.newXMLGregorianCalendar(gregorianCal );

容易出现空指针异常。因此我相信你得到静态代码anlayzer错误。

在代码到达您返回的行之前,您必须确保dateformat在所有情况下都已初始化或非null。

希望它有所帮助!