检查规则:
三者都提供了很多检查规则,且可以生成检查报告。并且利用这些报告,能够提取里面涉及的规则,在其他地方使用。
PMD的自定义规则更加灵活,可使用XPath定义各种规则。
checkstyle是在原来较为严格的规则基础上做定制和修改,无法定义新规则。
findbugs只能在原来的基础上做定制,无法修改规则,findbugs若要定义新规则,需要引入jar包。
检查对象:
PMD对.java原代码进行检查,将源代码解析成抽象语法树(AST),检查源代码中潜在的问题。
主要包括: 空try/catch/finally/switch语句块 ,未使用的局部变量、参数和private方 法,空if/while语句 ,过于复杂的表达式,如不必要的if语句等,复杂类。
CheckStyle对源代码进行检查。主要包括: Javadoc注释 ,命名规范 ,多余没用的Imports,Size度量, 如过长的方法,缺少必要的空格Whitespace,重复代码。
FindBugs检查.class文件,基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug。
主要tecode中的bug patterns,如NullPoint空指针检查、没有合理关闭资源、字符串相同判断错(==而不是equals)等。
使用目的:
PMD:使代码更简洁明了,方法、变量命名更加规范,增强可读性。
CheckStyle:规范代码的格式,统一代码风格。
FindBugs:找出代码中存在的明显的可能导致bug的缺陷。
三者都提供了很多检查规则,且可以生成检查报告。并且利用这些报告,能够提取里面涉及的规则,在其他地方使用。
PMD的自定义规则更加灵活,可使用XPath定义各种规则。
checkstyle是在原来较为严格的规则基础上做定制和修改,无法定义新规则。
findbugs只能在原来的基础上做定制,无法修改规则,findbugs若要定义新规则,需要引入jar包。
检查对象:
PMD对.java原代码进行检查,将源代码解析成抽象语法树(AST),检查源代码中潜在的问题。
主要包括: 空try/catch/finally/switch语句块 ,未使用的局部变量、参数和private方 法,空if/while语句 ,过于复杂的表达式,如不必要的if语句等,复杂类。
CheckStyle对源代码进行检查。主要包括: Javadoc注释 ,命名规范 ,多余没用的Imports,Size度量, 如过长的方法,缺少必要的空格Whitespace,重复代码。
FindBugs检查.class文件,基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug。
主要tecode中的bug patterns,如NullPoint空指针检查、没有合理关闭资源、字符串相同判断错(==而不是equals)等。
使用目的:
PMD:使代码更简洁明了,方法、变量命名更加规范,增强可读性。
CheckStyle:规范代码的格式,统一代码风格。
FindBugs:找出代码中存在的明显的可能导致bug的缺陷。