gpt4 book ai didi

eclipse - 在eclipse中使用jsr305注释Findbugs没有发现bug

转载 作者:行者123 更新时间:2023-12-02 18:11:38 24 4
gpt4 key购买 nike

我一直在尝试将 jsr 305 注释与 Findbugs 一起使用,特别是 @CheckForNull 注释,它可以避免我刚刚发现的向客户报告的错误。我已将 jsr305.jar 和annotations.jar 添加到我的构建路径中,但 findbugs 未发现这些错误。我正在使用 Eclipse 和 Eclipse Findbugs 插件。下面是一些示例代码,它显示了相同的错误,但当我对其运行 findbugs 时却没有找到该错误。我已经在 Eclipse Galileo 和 Ganymede 中尝试过这个。

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 的文件中,添加了 ListArrayListCheckForNull< 的导入,编译并运行 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

These are the imports I added to the top of 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.jarjsr305.jar,但使用此命令得到了相同的结果:

javac -d . -classpath ${FINDBUGS_HOME}/lib/annotations.jar:${FINDBUGS_HOME}/lib/jsr305.jar FindBugsAnnotationsTest.java

关于eclipse - 在eclipse中使用jsr305注释Findbugs没有发现bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1321873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com