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

2024-03-02

我一直在尝试将 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,添加了进口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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在eclipse中使用jsr305注释Findbugs没有发现bug 的相关文章

  • 在 Ubuntu 上从 Eclipse Mars 升级到 Photon 会出现问题

    您好 我想知道是否有人在从 ubuntu 机器升级时发现了一些类似的问题 我从 eclipse mars 升级到 eclipse photon 当我尝试运行 Tomcat 8 服务器时 出现以下错误 Plug in org eclipse
  • 对 HTML 文件的更改未显示在内置的 PhoneGap 3.0 应用程序上

    所以我有一个 Phonegap 3 0 应用程序 project文件夹 它的项目 project platforms android 在 Eclipse 上 问题是当我改变时project www index html 并告诉 Eclips
  • 无法理解如何使用 Android AWS SDK

    我正在构建一个将使用 Amazon 的 SimpleDB 服务的应用程序 它使用亚马逊的AWS 安卓 SDK http aws amazon com sdkforandroid 据我了解 不建议我将 Amazon 凭证 访问 ID 和密钥
  • JSF 和库的不明确性

    在花了一些时间使用 servlet 和 JSP 之后 现在我正在尝试了解一些有关 JSF 的知识 我已经学习了基础知识 做了几个简单的例子 对 工作流程 有了基本的了解 但我仍然无法理解 javax faces webapp FacesSe
  • 有没有一种简单的方法可以在 Eclipse 的 java 项目中使用 XML 资源?

    我想用 java 解析 XML 文件 好吧 很简单 如果我可以使用在同一个 Eclipse 项目的文件夹 我们称之为 资源 文件夹 中创建的 XML 文件 那就太好了 由于版本控制 多个开发平台和总体简单性等问题 拥有此功能而不是访问文件系
  • 从 Python 调试 C 库 (ctypes)

    我有一个使用 ctypes 和 C 共享库 dll 文件 的 Python 程序 作为 IDE 我使用 Eclipse 其中将开发两个项目 C 共享库和使用它的 python 程序 我的想法是 当我在调试模式下启动Python程序时 我可以
  • 无法将 android“gen”文件夹提交到 Git

    我在 eclipse 中使用 EGit 为我正在开发的 Android 项目提供 Git 支持 问题是 将我的项目提交到本地存储库后 我意识到 gen 文件夹没有被提交 因此 当我从 Git 存储库获取最新源代码后尝试在另一台计算机上打开该
  • 来自 eclipse 的部分 git 提交 (egit)

    假设我有一个有 2 个更改的文件 如何使用 egit 只提交其中之一 命令行版本可以在以下位置找到this https stackoverflow com questions 1085162 commit only part of a fi
  • 有没有办法使用 Eclipse 调试 Web 应用程序?

    我正在使用 Eclipse Java IDE 开发 Web 应用程序 我使用 Tomcat 6 作为我的 servlet 容器 可用于 Java 的工具 包括 Eclipse 似乎缺乏 Web 应用程序的调试功能 与 NET 平台的 Vis
  • Eclipse 无法识别 persistence.xml 的内容

    我在 eclipse 中收到以下错误 persistence xml 文件没有可识别的内容 我的 persistence xml 文件在我的应用程序中工作得很好 但 eclipse 一直给我这个错误 我在移动文件并使用 m2eclipse
  • Eclipse Oxygen - 该项目未构建,因为其构建路径不完整

    我刚刚安装了 Eclipse Oxygen 并尝试在工作台中打开现有项目 但收到此错误 该项目未构建 因为其构建路径不完整 不能 找到 java lang Object 的类文件 修复构建路径然后尝试 建设这个项目 我尝试右键单击该项目 转
  • 用于 Eclipse Galileo 的 Java“clone()”方法生成器

    java最好的工具是什么clone Eclipse Galileo 中的方法生成可从存储库中获取吗 是什么原因阻止 Eclipse 开发人员将此工具包含在标准版本中 实施起来非常困难clone 正确的 这样做被认为不是一个好的做法 Bloc
  • 如何强制 Eclipse 将 xml 布局和样式显示为文本?

    我最近升级到带有 ADT 20 0 3 的 Eclipse 4 2 Juno 如果我查看旧项目中的布局或样式 Eclipse 只会向我显示其适当的基于控件的编辑器 我想编辑语法突出显示的 xml 文本 我没有找到将插件的编辑器切换到此模式的
  • Eclipse 在源代码管理中保存操作

    我们希望找到一种在签入之前执行代码标准的 轻量级 方法 我们真的很喜欢使用 Eclipse 内置的想法保存操作 go to Preferences gt gt Java gt gt Editor gt gt Save Actions 其中有
  • M2e 未找到丢失的存储库 - m2e eclipse 插件

    当我将鼠标悬停在 Eclipse 中未找到的包上并单击 搜索存储库 时 未找到我正在搜索的依赖项 依赖关系存在于官方 Maven 存储库中 http search maven org remotecontent filepath javax
  • 在包“android”中找不到属性“backgroundTint”的资源标识符

    我发现了一些视图 xml 属性 例如backgroundTint backgroundTintMode 但是当我使用它作为视图属性定义时 Eclipse 显示错误 No resource identifier found for attri
  • 无法在 Eclipse IDE 中使用 java 建立与 SQL Server 2008 的数据库连接

    我正在尝试在 Eclipse IDE 中使用 Java 代码连接到 HP Operations Manager 数据库 我能够通过 Microsoft SQL Server Management Studio 2008 成功连接 但通过代码
  • Eclipse 的 CoffeeScript 编辑器插件?

    事情是这样的 我使用 Wro4j 来处理 coffee 文件到 js 文件的转译 构建 现在我想要一个支持CoffeeScript的好的编辑器插件 并且我不想安装Aptana 我只需要CoffeeScript 不需要Python Ruby和
  • 如何将 Eclipse Classic 升级到 Java EE?

    我想开发 HTML5 网站 我已经安装了用于Android开发的Java 我的机器上安装了 Eclipse Classic 3 6 现在我希望在同一台机器上安装 Java EE 是否可以 如果是这样 请告诉我如何将 Eclipse Clas
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30

随机推荐