使用JSR305注解在Eclipse FindBugs的不是查找错误
-
19-09-2019 - |
题
我一直在尝试与JSR 305个注解与FindBugs的使用,特别是@CheckForNull注释这将避免我刚刚发现使得它给客户的错误。我已经添加jsr305.jar和annotations.jar到我的构建路径,但错误没有被发现的FindBugs。我使用Eclipse和Eclipse插件FindBugs的。下面是显示了相同的错误,但不会当我运行的FindBugs在它找到了这个错误一些示例代码。我已经在Eclipse伽利略和木卫尝试这样做。
public class FindBugsAnnotationsTest {
ArrayList<String> canBeNull;
@CheckForNull
public List<String> getCanBeNull() {
return canBeNull;
}
public void shouldGetFindbugsWarning() {
canBeNull.add("a string");
getCanBeNull().add("a string");
}
}
解决方案
这可能是显而易见的,但我觉得你的问题是与Eclipse(也许是FindBugs的插件,特别是),不FindBugs的本身。
您可以考虑在命令行中运行FindBugs的,以消除任何Eclipse问题,确保您有自己的正确运行的FindBugs。知道如何在单机模式下运行的FindBugs会给你一个回退时,你的IDE配置不正确。
我在一个文件名为FindBugsAnnotationsTest.java
保存你的源代码,添加List
,ArrayList
和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
其中${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
不隶属于 StackOverflow