除了其改进代码质量的作用,FindBugs还有很多特定于应用程序的用法,我鼓励读者去探索它们。
在这一期,我将解释FindBugs如何确保现有代码库遵循设计建议。
不管是刚接触FindBugs还是已经熟悉它了,我鼓励您用自己的特定于应用程序的检测器进行试验。
这种类型的残留代码也可以通过静态代码分析工具如PMD和FindBugs找到。
FindBugs开源项目是一个适用于Java代码的流行的静态分析工具,当然,存在一个适合它的Eclipse插件。
它们是有用的工具,可以找出真正的问题,而FindBugs是在消除误检方面做得最好的工具。
这些例子只是FindBugs所发现的问题种类的一小部分(更多信息请参阅参考资料)。
现在看看在编译脚本中要加入什么才能使用FindBugs任务。
需要type属性,并且它应当匹配在FindBugs.xml和在检测器的Java代码中使用的相同惟一标识符。
但是FindBugs不同,它利用字节码分析和很多内置的bug模式检测器来查找代码中的常见bug。
像FindBugs这样的工具通常会成为用于敲打团队或者个人的政治武器。
第3行:class元素用于指定要FindBugs分析哪些JAR、类文件或者目录。
因为FindBugs不知道map是否包含“bob”,所以它将第5行标记为可能null指针异常。
在FindBugs分析类时,它会在分析方法内容时调用visit(Code)方法。
遗憾的是,关于BCEL和FindBugs如何支持类分离的文档并不能满足您的需要。
知道如何设置编译文件以后,就让我们更详细地分析如何将FindBugs集成到编译过程中吧!
FindBugs就是一个能够查找代码中可能的缺陷模式的开源静态分析工具。
其次,查看FindBugs源代码以查找类似于我要编写的检测器类似的检测器。
指定目录使FindBugs可以在GUI中查看XML结果时突出显示出错的源代码。
PMD是一个静态Java源码分析工具,从概念上讲与Checkstyle,FindBugs和Coverity很相似。
如果告诉FindBugs在什么地方寻找代码,它就会在转换到相应的选项卡时突出显示有问题的那一行。
可选属性output指定FindBugs的结果使用的输出格式。
FindBugs提供了这种细化的控制,可以排除或者包含过滤器。
让我们以新方式重复前面的一些建议,并了解在没有遵守这些建议时,FindBugs如何帮助检测。
FindBugs被集成到EDE中,以便开发人员可以亲自运行它并解决它找到的所有问题。
诸如FindBugs、IntelliJ、Checkstyle和PMD这样的静态分析工具在Java开发中得到了广泛应用。
FindBugs可以方便地检测和标记这些空的catch块。
所有字节码扫描检测器都基于visitor模式,FindBugs实现了这个模式。
我们同FindBugs的不同之处在于分析的深度,可发现缺限的数量和种类。
这类bug很容易出现,但是eBay则很少遇到这个问题,因为eBay明智地使用了FindBugs。