Java 查找NullPointerException和内存泄漏的数据库

Java 查找NullPointerException和内存泄漏的数据库,java,memory-leaks,nullpointerexception,findbugs,Java,Memory Leaks,Nullpointerexception,Findbugs,我正在研究使用FindBugs来帮助查找代码中明显的错误 我知道任何工具在某些方面都是有限的,但我想寻找的两个最常见的bug是: NullPointerExceptions;及 Java内存泄漏 FindBugs有能力找到这些吗?我确信一个永远不能保证所有的bug都被发现,但如果FindBugs能在Eclipse中为我检测到其中的一小部分,那就太好了 我一直在阅读HTML,没有遇到任何提到这些功能的内容。FindBugs非常擅长发现空值的问题。 描述了FindBugs可以识别的与null有关

我正在研究使用FindBugs来帮助查找代码中明显的错误

我知道任何工具在某些方面都是有限的,但我想寻找的两个最常见的bug是:

  • NullPointerExceptions
    ;及
  • Java内存泄漏
FindBugs有能力找到这些吗?我确信一个永远不能保证所有的bug都被发现,但如果FindBugs能在Eclipse中为我检测到其中的一小部分,那就太好了


我一直在阅读HTML,没有遇到任何提到这些功能的内容。

FindBugs非常擅长发现空值的问题。
描述了FindBugs可以识别的与null有关的许多bug。

FindBugs使用静态分析来查找Java代码中的bug。您可以获得关于改进代码的好提示,但由于这两种问题的运行时性质,它不能保证您会检测到内存泄漏或NullPointerException。当然,您将获得避免可能导致内存泄漏和空指针的不良做法的非常好的提示,但这只是一个起点

还要检查如何在Java中查找内存泄漏

以下Findbugs检查有助于避免NullPointerException:

  • NP:具有布尔返回类型的方法返回显式null
  • NP:Clone方法可能返回null
  • NP:equals()方法不检查null参数
  • NP:toString方法可能返回null
  • NP:空指针解引用
  • NP:异常路径上方法中的空指针取消引用
  • NP:方法不检查空参数
  • NP:close()对始终为null的值调用
  • NP:保证取消引用空值
  • NP:值为null,并保证在异常路径上取消引用
  • NP:方法调用将null传递给非null参数
  • NP:方法可能返回null,但声明为@NonNull
  • NP:检查一个已知的空值,看它是否是一个类型的实例
  • NP:可能的空指针解引用
  • NP:异常路径上的方法中可能存在空指针取消引用
  • NP:方法调用为非null参数传递null
  • NP:方法调用为非null参数传递null
  • NP:非虚方法调用为非null参数传递null
  • NP:将空值存储到带注释的非空字段中
  • NP:未写入字段的读取
  • NP:在不使用nullcheck的情况下取消对readLine()结果的引用
  • NP:readLine()结果的立即取消引用
  • NP:已知空值的加载
  • NP:由于被调用方法的返回值可能导致空指针取消引用
  • NP:分支上可能不可行的空指针取消引用
  • NP:参数必须为非Null,但标记为可为Null
  • NP:读取未写入的公共或受保护字段
关于内存问题的一些检查有助于改进代码

  • Dm:方法调用无效的新字符串(String)构造函数
  • Dm:Method调用低效的新String()构造函数
  • Dm:方法调用低效的布尔构造函数;改为使用Boolean.valueOf(…)

FindBugs不是Java中进行内存泄漏检测的最佳工具。在这类问题上,任何静态分析工具都帮不了什么忙。您应该查看分析工具以及显示运行时内存使用和对象图的工具,以便发现可能是内存泄漏的可疑行为。