FindBugs使用静态分析来查找Java代码中的错误.您可以获得有关改进代码的好技巧,但是由于两种问题的运行时性质,它都不能保证您将检测到内存泄漏或NullPointerException.当然,您将获得关于避免可能导致内存泄漏和空指针的不良做法的很好的提示,但这只是一个起点.
还要检查this question有关在Java中查找内存泄漏.
以下Findbugs检查有助于避免NullPointerException:
> NP:布尔返回类型的方法返回显式null
> NP:克隆方法可能返回null
> NP:equals()方法不检查空参数
> NP:toString方法可能返回null
> NP:空指针取消引用
> NP:异常路径上方法中的空指针取消引用
> NP:方法不检查空参数
> NP:对始终为null的值调用close()
> NP:保证空值被取消引用
> NP:该值为null,并保证在异常路径上被取消引用
> NP:方法调用将null传递给非null参数
> NP:方法可能返回null,但是被声明为@NonNull
> NP:检查已知的空值以查看它是否是类型的实例
> NP:可能会取消引用空指针
> NP:异常路径上方法中可能的空指针取消引用
> NP:方法调用传递非null参数的null
> NP:方法调用传递非null参数的null
> NP:非虚拟方法调用为nonnull参数传递null
> NP:将空值存储到带注释的NonNull的字段中
> NP:读取未写入的字段
> NP:取消引用readLine()的结果,不使用nullcheck
> NP:立即取消引用readLine()的结果
> NP:加载已知的空值
> NP:由于调用方法的返回值,可能会取消引用空指针
> NP:分支上可能无法引用空指针,这可能不可行
> NP:参数必须为非空但被标记为可空
> NP:读取未成文的公共或受保护的字段
有关有助于改善代码的内存问题的一些检查是
> Dm:方法调用效率低的新String(String)构造函数
> Dm:方法调用效率低的新String()构造函数
> Dm:方法调用低效的布尔构造函数;使用Boolean.valueOf(…)代替