Code Review narzędzia narzeka Możliwa wartość null pointer dereference z safeScanWarnings w saveSafeScan (...) Na linii if (safeScanWarnings! = Null & safeScanWarnings.size()> 0)Wyjaśnienie i naprawić za ewentualne pustego wskaźnika dereference z
Zastanawiam się, jak to jest możliwe? Czy to dlatego, że zwracamy kolekcję przez odniesienie?
protected void saveSafeScan(final Response response, final Dtec dtec) throws dtecException
{
Collection<String> safeScanWarnings = dtec.getSafeScanWarnings();
if (safeScanWarnings!=null && safeScanWarnings.size()>0)
{
Iterator<String> iterator = safeScanWarnings.iterator();
int i = 0;
while (iterator.hasNext())
{
String safeScanCode = iterator.next();
if (i == 0)
{
response.setSafeScanCode(safeScanCode);
response.setSafeScanCodeText(getMessage(String.format("DTECRESPONSE_SAFESCANCODE_%s",
StringUtils.trimToEmpty(safeScanCode))));
}
SafeScanWarning safeScan = new SafeScanWarning();
safeScan.setCode(safeScanCode);
safeScan.setMessage(String.format("DTECRESPONSE_SAFESCANCODE_%s", StringUtils.trimToEmpty(safeScanCode)));
safeScan.setPriority(i);
response.getSafeScanWarnings().add(safeScan);
i++;
}
}
}
Chociaż w przykładzie kod jest poprawny w swojej błędu, jeśli ma '&' a nie '' &&. Upewnij się więc, że w prawdziwym kodzie jest to ocena shortcircuit. Jeśli tak już jest, jest to błąd w narzędziu. – Voo
zauważ, że komentarz powyżej przykładowego kodu to 'if (safeScanWarnings! = Null & safeScanWarnings.size()> 0)' który jest nieprawidłowy (buggy) – MeBigFatGuy