这可能很明显,但我认为您的问题出在 Eclipse(尤其是 FindBugs 插件),而不是 FindBugs 本身。
您可能会考虑从命令行运行 FindBugs 以消除任何 Eclipse 问题并确保您自己的 FindBugs 正确运行。当您的 IDE 配置不正确时,知道如何在独立模式下运行 FindBugs 将为您提供回退。
我将您的源代码保存在一个名为 的文件中,添加了、和FindBugsAnnotationsTest.java
的导入,编译并运行了 FindBugs 1.3.9。FindBugs 会生成几个关于空值的警告:List
ArrayList
CheckForNull
MD NP:FindBugsAnnotationsTest.shouldGetFindbugsWarning() 中可能的空指针取消引用,因为在 FindBugsAnnotationsTest.java 处取消引用的调用方法的返回值:[第 18 行]
MC UwF:未写字段:FindBugsAnnotationsTest.canBeNull 在 FindBugsAnnotationsTest.java:[第 12 行]
MC NP:在 FindBugsAnnotationsTest.java 中读取 FindBugsAnnotationsTest.shouldGetFindbugsWarning() 中未写入的字段 canBeNull:[第 16 行]
产生的警告: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
${FINDBUGS_HOME}
Findbugs 1.3.9 的安装目录在哪里。javac
假定在路径上。
注意:我使用了findbugs.jar
而不是,annotations.jar
但jsr305.jar
使用此命令得到了相同的结果:
javac -d . -classpath ${FINDBUGS_HOME}/lib/annotations.jar:${FINDBUGS_HOME}/lib/jsr305.jar FindBugsAnnotationsTest.java