1 FindBugs是什么?FindBugs 是一个java bytecode静态分析工具,它可以帮助java工程师提高代码质量以及排除隐含的缺陷。 FindBugs检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。 有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。FindBugs不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式进行分析。
2 FindBugs可以做什么?FindBugs提供了35个检测器来检测字节码中可能的缺陷。可以做的事情主要有: 2.1 找出 hash equals 不匹配找与 ①当一个类重写对象的 ②定义一个 co-variant 版本的
2.2 检测:忽略方法返回值这个检测器查找代码中忽略了不应该忽略的方法返回值的地方。这种情况的一个常见例子是在调用
这个错误很常见。在第 2 行,程序员认为他已经用 p 替换了字符串中的所有 b。确实是这样,但是他忘记了字符串是不可变的。所有这类方法都返回一个新字符串,而从来不会改变消息的接收者。
2.3 检测:Null 指针对 null 的解引用(dereference)和冗余比较这个检测器查找两类问题。它查找代码路径将会或者可能造成 null 指针异常的情况,它还查找对 null 的冗余比较的情况。例如,如果两个比较值都为 null,那么它们就是冗余的并可能表明代码错误。FindBugs 在可以确定一个值为 null 而另一个值不为 null时,检测类似的错误,例如: |
java代码缺陷自动分析工具之FindBugs介绍
