下面为自己常用的一个CheckStyle配置,写一下以备后用。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"><!-- generated by Sonar -->
<module name="Checker">
<module name="TreeWalker">
<!-- 不允许对方法的参数赋值 -->
<module name="ParameterAssignment">
<property name="severity" value="warning"/>
</module>
<!-- 使用简化的布尔表达式 -->
<module name="SimplifyBooleanExpression">
<property name="severity" value="warning"/>
</module>
<!-- 常量命名方式 -->
<module name="StaticVariableName">
<property name="severity" value="warning"/>
</module>
<!-- 变量声明的顺序 -->
<module name="ModifierOrder">
<property name="severity" value="info"/>
</module>
<!-- 方法名的检查 -->
<module name="MethodName">
<property name="severity" value="warning"/>
</module>
<!-- Checks that a class which has only private constructors is declared as final.-->
<module name="FinalClass">
<property name="severity" value="warning"/>
</module>
<!-- Detects empty statements (standalone ;).(检查是否有空指令)-->
<module name="EmptyStatement">
<property name="severity" value="info"/>
</module>
<!-- 检查是否有内部赋值,比如像 String s = Integer.toString(i = 2) -->
<module name="InnerAssignment">
<property name="severity" value="warning"/>
</module>
<!-- 双重检查锁的检查,java的内存机制导致DCL无法正常工作 -->
<module name="DoubleCheckedLocking">
<property name="severity" value="warning"/>
</module>
<!-- 检查是否有多余的import语句 -->
<module name="UnusedImports">
<property name="severity" value="info"/>
</module>
<!-- String的比较不能用 != 和 == -->
<module name="StringLiteralEquality">
<property name="severity" value="warning"/>
</module>
<!-- 多余关键字的检查 -->
<module name="RedundantModifier">
<property name="severity" value="info"/>
</module>
<!-- 多余throws语句检查 -->
<module name="RedundantThrows">
<property name="severity" value="info"/>
<property name="allowUnchecked" value="true"/>
</module>
<!-- 非法throw语句检查 -->
<module name="IllegalThrows">
<property name="severity" value="warning"/>
</module>
<module name="AnonInnerLength">
<property name="severity" value="warning"/>
</module>
<!-- 成员名的检查 -->
<module name="MemberName">
<property name="severity" value="warning"/>
</module>
<!-- 常量名的检查 -->
<module name="ConstantName">
<property name="severity" value="info"/>
</module>
<!-- 包名的检查 -->
<module name="PackageName">
<property name="severity" value="warning"/>
</module>
<!-- switch 语句是否有 default 的检查 -->
<module name="DefaultComesLast">
<property name="severity" value="warning"/>
</module>
<!-- 当一个类重写equals()方法的收,是否同时重写hashCode()方法的检查 -->
<module name="EqualsHashCode">
<property name="severity" value="error"/>
</module>
<!-- 不许使用未被简化的布尔返回值 -->
<module name="SimplifyBooleanReturn">
<property name="severity" value="warning"/>
</module>
<!-- 是否有隐藏变量的检查 -->
<module name="HiddenField">
<property name="severity" value="warning"/>
<property name="tokens" value="VARIABLE_DEF"/>
<property name="ignoreConstructorParameter" value="true"/>
<property name="ignoreSetter" value="true"/>
<property name="ignoreAbstractMethods" value="true"/>
</module>
<!-- 本地final变量名的检查 -->
<module name="LocalFinalVariableName">
<property name="severity" value="warning"/>
</module>
<!-- 函数的分支复杂度的检查,默认不超过10 -->
<module name="CyclomaticComplexity">
<property name="severity" value="warning"/>
<property name="max" value="10"/>
</module>
<!-- 成员可访问性检查 -->
<module name="VisibilityModifier">
<property name="severity" value="warning"/>
<property name="protectedAllowed" value="true"/>
<property name="packageAllowed" value="false"/>
</module>
<!-- 本地变量名的检查 -->
<module name="LocalVariableName">
<property name="severity" value="warning"/>
</module>
<!-- 参数变量名的检查 -->
<module name="ParameterName">
<property name="severity" value="warning"/>
</module>
<!-- 布尔表达式复杂度的检查,不超过3 -->
<module name="BooleanExpressionComplexity">
<property name="severity" value="warning"/>
</module>
<!-- 类的分散复杂度,不超过20 -->
<module name="ClassFanOutComplexity">
<property name="severity" value="warning"/>
</module>
<!-- NPath复杂度,不超过200 -->
<module name="NPathComplexity">
<property name="severity" value="warning"/>
</module>
<!-- 类数据的抽象耦合,不超过7 -->
<module name="ClassDataAbstractionCoupling">
<property name="severity" value="warning"/>
</module>
<!-- 方法行数的检查 -->
<module name="MethodLength">
<property name="severity" value="warning"/>
<property name="max" value="50"/>
<property name="countEmpty" value="false"/>
</module>
<!-- if语句嵌套层数的检查 -->
<module name="NestedIfDepth">
<property name="severity" value="warning"/>
<property name="max" value="2"/>
</module>
<!-- try语句嵌套层数的检查 -->
<module name="NestedTryDepth">
<property name="severity" value="warning"/>
<property name="max" value="1"/>
</module>
<!-- 方法参数个数的检查 -->
<module name="ParameterNumber">
<property name="severity" value="warning"/>
<property name="max" value="5"/>
</module>
<!-- 声明顺序的检查 -->
<module name="DeclarationOrder">
<property name="severity" value="info"/>
</module>
<!-- 多余括号的检查 -->
<module name="AvoidNestedBlocks">
<property name="severity" value="warning"/>
</module>
<!-- 在做String equals判断的时候,要将已知null放在后面 -->
<module name="EqualsAvoidNull">
<property name="severity" value="warning"/>
</module>
<!-- Checks for illegal instantiations where a factory method is preferred. -->
<module name="IllegalInstantiation">
<property name="severity" value="warning"/>
</module>
<!-- 循环控制变量不建议被修改 -->
<module name="ModifiedControlVariable">
<property name="severity" value="warning"/>
</module>
<!-- <module name="FileContentsHolder"/> -->
<!-- clone方法必须调用了super.clone() -->
<module name="SuperClone">
<property name="severity" value="warning"/>
</module>
<!-- finalize 必须调用了super.finalize() -->
<module name="SuperFinalize">
<property name="severity" value="warning"/>
</module>
<!-- 不能catch java.lang.Exception -->
<module name="IllegalCatch">
<property name="illegalClassNames" value="java.lang.Exception"/>
<property name="severity" value="warning"/>
</module>
<!-- 一个方法中最多有3个return -->
<module name="ReturnCount">
<property name="max" value="3"/>
<property name="severity" value="warning"/>
</module>
</module>
<!-- 文件长度的检查 -->
<module name="FileLength">
<property name="severity" value="warning"/>
<property name="max" value="1500"/>
</module>
<!-- <module name="SuppressionCommentFilter"/> -->
</module>