2016-12-20 3 views
0

Sonar fürSonar Nullzeiger Verletzungen

existed.keySet unterhalb der Linie unter Null-Zeiger Verletzungen geben()

Bitte könnten Sie uns helfen, dieses Problem zu beheben.

private boolean isEqualCaptions(Map<String, String> existed, Map<String, String> updated) { 

     if(existed == null && updated != null) return false; 
     if(existed != null && updated == null) return false; 
     for(String key:existed.keySet()){ 
      if(existed.get(key).compareTo(updated.get(key)) != 0) return false; 
     } 
    return true; 
} 
+1

Was passiert, wenn 'existierte == null && aktualisiert = = null? – shmosel

+1

Wenn sowohl 'existed' als auch' updated' Nullen sind, kann Ihr Code möglicherweise nicht funktionieren. –

Antwort

1

Wenn existed und updated sind beide null, dann wird das Programm die Schleife erreichen, und existed.keySet() eine NullPointerException werfen, das ist, warum Sie die Warnung.

Vor der Schleife sollten Sie eine Bedingung hinzufügen, um sicherzustellen, dass existed nicht null ist.

private boolean isEqualCaptions(Map<String, String> existed, Map<String, String> updated) { 
    if (existed == null && updated != null) return false; 
    if (existed != null && updated == null) return false; 
    if (existed != null) { 
     for (String key : existed.keySet()) { 
      if (existed.get(key).compareTo(updated.get(key)) != 0) return false; 
     } 
    } 
    return true; 
} 

schließlich die Bedingung A && !B || !A && B kann mit dem XOR-Operator als A^B vereinfacht werden, so dass die ersten beiden if Aussagen können kombiniert und vereinfacht werden:

private boolean isEqualCaptions(Map<String, String> existed, Map<String, String> updated) { 
    if (existed == null^updated == null) return false; 
    if (existed != null) { 
     for (String key : existed.keySet()) { 
      if (existed.get(key).compareTo(updated.get(key)) != 0) return false; 
     } 
    } 
    return true; 
} 
+0

... und "aktualisiert" sowie –

+0

@ PM77-1 nach dem Hinzufügen einer Überprüfung für 'existierte! = Null ', wissen wir, dass' aktualisiert' nicht 'null' sein kann, denn wenn das der Fall wäre, wäre die Funktion früher zurückgekommen . – janos