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");
    }
}
War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top