<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<!--1.
重复代码的检查,超过8行就认为重复,UTF-8格式 本检查一定要放在"TreeWalker"节点前,否则在
Checkclipse中会无法使用。)注意:StrictDuplicateCode连个方法,只选择一个。
-->
<module name="StrictDuplicateCode">
<property name="min" value="8" />
<property name="charset" value="UTF-8" />
</module>
<!--2. 检查类中是否有代码复制的问题 -->
<module name="StrictDuplicateCode">
<property name="min" value="20"/>
<!--<property name="charset" value="UTF-8"/>-->
<message key="duplicates.lines" value="从第{2}开始,有{0}行相同代码 与{1}中重复."/>
</module>
<module name="TreeWalker">
<!-- javadoc的检查 -->
<!-- 检查类或者接口的javadoc注释,author不能为administrator-->
<module name="JavadocType">
<property name="authorFormat" value="[^administrator]"/>
<property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>
</module>
<!-- 检查所有方法的javadoc,可以不声明RuntimeException -->
<module name="JavadocMethod">
<property name="scope" value="private"/> <!-- 方法定义私有变量,如果需要定义全局变量value值为public -->
<property name="allowMissingParamTags" value="false"/> <!-- 是否允许错误的参数声明,true为允许,缺省为不允许 -->
<property name="allowMissingThrowsTags" value="false"/> <!-- 是否允许错误的错误声明,true为允许,缺省为不允许 -->
<property name="allowMissingReturnTag" value="false"/> <!-- 是否允许错误的返回类型声明,true为允许,缺省为不允许 -->
<property name="tokens" value="METHOD_DEF"/> <!-- 方法中出现标记 -->
<property name="allowUndeclaredRTE" value="true"/> <!-- 方允许出现运行时异常,也就是说在编译时允许出现异常 -->
<property name="allowThrowsTagsForSubclasses" value="true"/> <!-- 是否允许创建子类声明,true为允许,缺省为不允许 -->
</module>
<!-- 检查某个变量的javadoc -->
<module name="JavadocVariable" />
<!-- 命名方面的检查,它们都使用了Sun官方定的规则。 -->
<!-- 类名(class 或interface) 的检查 -->
<!-- 定义类和接口的命名规则 -->
<module name="TypeName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
<property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>
</module>
<!-- 不能使用*导入所需的类 -->
<module name="AvoidStarImport"/>
<!-- 检查是否从非法的包中导入了类 -->
<module name="IllegalImport"/>
<!-- 检查是否导入的包没有使用 -->
<module name="UnusedImports"/>
<!-- 检查修饰符的顺序 -->
<module name="ModifierOrder"/>
<!-- 检查抽象类名 必须以Abstract开头或者Factory结尾-->
<module name="AbstractClassName">
<property name="format" value="^Abstract.*$|^.*Factory$"/>
</module>
<!-- 变量的检查 -->
<module name="MemberName" />
<!-- 包名的检查(只允许小写字母) -->
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
</module>
<!-- 定义方法名的命名规则 -->
<module name="MethodName">
<property name="format" value="^[a-z][a-zA-Z]*$"/><!-- 方法名的检查 -->
</module>
<!-- 检查是否有没有被注掉或者删除的main方法 -->
<module name="UncommentedMain"/>
<!-- 检查是否有静态import -->
<module name="AvoidStaticImport"/>
<!-- 检查一个可能为null的字符串是否在equals()比较的左边 -->
<module name="EqualsAvoidNull"/>
<!-- 检查方法的参数名 -->
<module name="ParameterName " />
<!-- 检查常量名的检查 -->
<module name="ConstantName" />
<!-- 检查长度方面的检查 -->
<!-- 检查文件长度不超过1500行 -->
<module name="FileLength">
<property name="max" value="1500" />
</module>
<!-- 检查每行不超过120个字-->
<module name="LineLength">
<property name="max" value="120" />
</module>
<!-- 检查方法不超过30行 -->
<module name="MethodLength">
<property name="tokens" value="METHOD_DEF" />
<property name="max" value="30" />
</module>
<!-- 检查方法的参数个数不超过3个。 -->
<module name="ParameterNumber">
<property name="max" value="3" />
</module>
<!--检查多余的关键字 -->
<module name="RedundantModifier" />
<!-- 检查对区域的检查 -->
<!-- 检查不能出现空白区域 -->
<module name="EmptyBlock" />
<!-- 检查是否使用了多余的小括号 -->
<module name="UnnecessaryParentheses"/>
<!-- 检查类中是否有声明package -->
<module name="PackageDeclaration"/>
<!-- 所有区域都要使用大括号。 -->
<!-- <module name="NeedBraces" />-->
<!-- 检查是否应该使用括号的地方没有加括号 -->
<module name="NeedBraces">
<property name="tokens" value="CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF"/>
</module>
<!-- 检查多余嵌套 -->
<module name="RightCurly">
<property name="option" value="alone"/>
<property name="tokens" value="LITERAL_TRY"/>
</module>
<!-- 检查多余的括号 -->
<module name="AvoidNestedBlocks">
<property name="allowInSwitchCase" value="true" />
</module>
<!-- 定义左大括号规范 -->
<module name="LeftCurly">
<property name="option" value="eol"/>
<property name="maxLineLength" value="80"/>
<property name="tokens" value="CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF"/>
</module>
<!-- 编码方面的检查 -->
<!-- 不许出现空语句 -->
<module name="EmptyStatement" />
<!-- 每个类都实现了equals()和hashCode() -->
<module name="EqualsHashCode" />
<!-- 不许使用switch -->
<module name="IllegalToken">
<property name="tokens" value="LITERAL_SWITCH" />
</module>
<!-- 不许内部赋值 -->
<module name="InnerAssignment" />
<!-- 检查魔鬼数字,绝对不能容忍魔法数 -->
<module name="MagicNumber" />
<!-- 循环控制变量不能被修改或者说是检查循环变量是否被修改 -->
<module name="ModifiedControlVariable" />
<!-- 多余的throw -->
<module name="RedundantThrows" />
<!-- 不许使用未被简化的条件表达式 -->
<module name="SimplifyBooleanExpression" />
<!-- 不许使用未被简化的布尔返回值 -->
<module name="SimplifyBooleanReturn" />
<!-- String的比较不能用!= 和 == -->
<module name="StringLiteralEquality" />
<!-- 检查是否抛出了未声明的异常 -->
<module name="IllegalThrows"/>
<!-- 检查依赖是否否完整 eg:switch代码的case中是否缺少break,return,throw和continue -->
<module name="MissingCtor"/>
<!-- if最多嵌套3层 -->
<module name="NestedIfDepth">
<property name="max" value="3" />
</module>
<!-- try最多被嵌套1层 -->
<module name="NestedTryDepth" />
<!-- clone方法必须调用了super.clone() -->
<module name="SuperClone" />
<!-- finalize 必须调用了super.finalize() -->
<module name="SuperFinalize" />
<!-- 不能catch java.lang.Exception -->
<module name="IllegalCatch">
<property name="illegalClassNames" value="java.lang.Exception" />
</module>
<!-- JUnitTestCase 的核心方法存在。 -->
<module name="JUnitTestCase" />
<!-- 一个方法中最多有3个return -->
<module name="ReturnCount">
<property name="max" value="3" />
</module>
<!-- 不许对方法的参数赋值 -->
<module name="ParameterAssignment" />
<!-- 不许有同样内容的String -->
<!-- <module name="MultipleStringLiterals" />-->
<!-- 检查一个文件中是否有多次出现的字符串 -->
<module name="MultipleStringLiterals">
<property name="allowedDuplicates" value="3"/>
</module>
<!-- 检查switch语句是否忘记了default标签 -->
<module name="MissingSwitchDefault"/>
<!-- 同一行不能有多个声明 -->
<module name="MultipleVariableDeclarations" />
<!-- 各种量度 -->
<!-- 布尔表达式的复杂度,不超过3 -->
<module name="BooleanExpressionComplexity" />
<!-- 类数据的抽象耦合,不超过7 -->
<module name="ClassDataAbstractionCoupling" />
<!-- 类的分散复杂度,不超过20 -->
<module name="ClassFanOutComplexity" />
<!-- 函数的分支(圈)复杂度,不超过20 -->
<module name="CyclomaticComplexity" >
<property name="max" value="20"/>
</module>
<!-- NPath复杂度,不超过200 -->
<module name="NPathComplexity" />
<!-- 杂项 -->
<!-- 禁止使用System.out.println -->
<module name="GenericIllegalRegexp">
<property name="format" value="System\.out\.println" />
<property name="ignoreComments" value="true" />
</module>
<!--检查注释文件,不允许使用与代码同行的注释-->
<module name="TrailingComment" />
<!-- 检查switch语句是否忘记了default标签 -->
<module name="MissingSwitchDefault"/>
<!-- 检查初始化长整型变量时,数字後是加了大写字母'L'而不是小写字母'l' -->
<module name="UpperEll"/>
</module>