这三个工具检查的侧重点各有不同:
工具 | 目的 | 主要检查内容 |
FindBugs | 基于Bug Patterns概念,查找java bytecode中的潜在bug。在目前版本中,它不检查java源文件。 | 主要检查bytecode中的bug patterns,也允许用户自定义特定的bug patterns。 |
PMD | 检查java源文件中的潜在问题。 | 主要包括: - 空try/catch/finally/switch语句块 - 未使用的局部变量、参数和private方法 - 空if/while语句 - 过于复杂的表达式,如不必要的if语句等 - 复杂类 |
CheckStyle | 检查java源文件是否与代码规范相符 | 主要包括 - Javadoc注释 - 命名规范 - Headers - Imports - Size冲突和度量,如过长的方法 - Whitespace - Modifiers - Blocks - Coding Problems - Class Design - 重复代码 - Miscellaneous Checks - Optional Checks |
FindBugs
大多数提示有用,值得改
1.配置无查找功能,不过缩写能让我们很快找到某个规则
2.提供图形界面的独立程序,对jar进行检测,有报告生成,非常方便
3.很多功能插件没有实现,可独立使用FindBugs,但没法同时修改源码
²插件bug替代法: 使用独立的FindBugs设置规则,然后到C:\Documents and Settings\XXX\下找.Findbugs_prefs,然后改名覆盖Eclipse Project下的.fbprefs (先关闭你的Project)
PMD
比较严格
1.独立的程序是命令行形式操作
2.插件可以配置规则,有独立显示问题的视图,也很方便
3.一般来说,需要自定义规则才通过检验
checkStyle
过于严格
1.按照Sun的规范太严格了,需要自定义规则
2.插件自定义规则没有查找功能,查找规则麻烦
3.只能做检查,不能修改代码,可配合Jalopy使用修改代码