这可能是显而易见的,但我认为您的问题在于 Eclipse(尤其是 FindBugs 插件),而不是 FindBugs 本身。
您可以考虑从命令行运行 FindBugs 以消除任何 Eclipse 问题并确保 FindBugs 本身正确运行。了解如何在独立模式下运行 FindBugs 将为您在 IDE 配置不正确时提供后备方案。
我将你的源代码保存在一个名为FindBugsAnnotationsTest.java
,添加了进口List
, ArrayList
, and CheckForNull
,编译并运行 FindBugs 1.3.9。 FindBugs 生成多个有关空值的警告:
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
这些是我添加到顶部的导入FindBugsAnnotationsTest.java
:
import java.util.ArrayList;
import java.util.List;
import edu.umd.cs.findbugs.annotations.CheckForNull;
命令:
javac -d . -classpath ${FINDBUGS_HOME}/lib/findbugs.jar FindBugsAnnotationsTest.java
${FINDBUGS_HOME}/bin/findbugs FindBugsAnnotationsTest.class
Where ${FINDBUGS_HOME}
是Findbugs 1.3.9 的安装目录。javac
假设在路径上。
注意:我用的是findbugs.jar
代替annotations.jar
and jsr305.jar
但我用这个命令得到了相同的结果:
javac -d . -classpath ${FINDBUGS_HOME}/lib/annotations.jar:${FINDBUGS_HOME}/lib/jsr305.jar FindBugsAnnotationsTest.java