0

有人知道是否有 java 的在线代码分析器。我希望能够检查一些小段代码。

例如:这个方法有这个警告:(空解引用)

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 );

    }

}

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

4

1 回答 1

4

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

如果由于某些原因跟随 try 块遇到异常

try {
        dateformat = DatatypeFactory.newInstance();
    }

那么您的日期格式将保持为空。所以下面的语句

return dateformat.newXMLGregorianCalendar(gregorianCal );

容易出现空指针异常。因此,我相信您会收到静态代码分析错误。

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

希望能帮助到你!

于 2013-05-16T09:45:59.343 回答