Findbugs jsr305 Anmerkungen in Eclipse zu finden ist nicht Bugs
-
19-09-2019 - |
Frage
Ich habe mit Findbugs zur Verwendung mit den JSR 305 Anmerkungen experimentiert, insbesondere die @CheckForNull Anmerkung, die einen Fehler vermieden hätte ich fand es einfach für die Kunden machen aus. Ich habe hinzugefügt jsr305.jar und annotations.jar meinen Build-Pfad, aber die Fehler sind nicht von findbugs gefunden. Ich bin mit Eclipse mit der Eclipse-Plugin Findbugs. Nachfolgend finden Sie einige Beispielcode, der die gleiche Fehler zeigt aber nicht, wenn ich findbugs laufen über den Fehler finden. Ich habe versucht, dies in Eclipse Galileo und Ganymed.
public class FindBugsAnnotationsTest {
ArrayList<String> canBeNull;
@CheckForNull
public List<String> getCanBeNull() {
return canBeNull;
}
public void shouldGetFindbugsWarning() {
canBeNull.add("a string");
getCanBeNull().add("a string");
}
}
Lösung
Das mag offensichtlich sein, aber ich denke, Ihre Probleme sind mit Eclipse (vielleicht die FindBugs insbesondere Plugin), nicht FindBugs selbst.
Sie sollten erwägen FindBugs von der Kommandozeile ausgeführt wird alle Eclipse-Probleme zu beseitigen und sicherzustellen, dass Sie FindBugs haben ordnungsgemäß ausgeführt wird in seinem eigenen. Zu wissen, wie FindBugs in einem Standalone-Modus ausgeführt werden Sie eine Notlösung, wenn Ihre IDE nicht richtig konfiguriert ist.
gespeichert Ich Ihren Quellcode in einer Datei mit dem Namen FindBugsAnnotationsTest.java
, hinzugefügt Importe für List
, ArrayList
und CheckForNull
, kompiliert und lief FindBugs 1.3.9. FindBugs erzeugt mehrere Warnungen über Nullwerte:
M D NP: Possible null pointer dereference in FindBugsAnnotationsTest.shouldGetFindbugsWarning() due to return value of called method Dereferenced at FindBugsAnnotationsTest.java:[line 18] M C UwF: Unwritten field: FindBugsAnnotationsTest.canBeNull At FindBugsAnnotationsTest.java:[line 12] M C NP: Read of unwritten field canBeNull in FindBugsAnnotationsTest.shouldGetFindbugsWarning() At FindBugsAnnotationsTest.java:[line 16] Warnings generated: 3
Dies sind die Importe ich an die Spitze des FindBugsAnnotationsTest.java
hinzugefügt:
import java.util.ArrayList;
import java.util.List;
import edu.umd.cs.findbugs.annotations.CheckForNull;
Befehle:
javac -d . -classpath ${FINDBUGS_HOME}/lib/findbugs.jar FindBugsAnnotationsTest.java
${FINDBUGS_HOME}/bin/findbugs FindBugsAnnotationsTest.class
Wo ${FINDBUGS_HOME}
ist das Verzeichnis, in dem Findbugs 1.3.9 installiert ist. javac
wird angenommen, dass auf dem Weg zu sein.
Hinweis: Früher habe ich die findbugs.jar
statt annotations.jar
und jsr305.jar
aber ich bekomme die gleichen Ergebnisse mit diesem Befehl:
javac -d . -classpath ${FINDBUGS_HOME}/lib/annotations.jar:${FINDBUGS_HOME}/lib/jsr305.jar FindBugsAnnotationsTest.java