All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ven-build-helper.1.4.4.source-code.checkstyle.xml Maven / Gradle / Ivy

There is a newer version: 1.5.1
Show newest version
<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
        "https://checkstyle.org/dtds/configuration_1_3.dtd">

<module name="Checker">
    <!--默认error等级 -->
    <property name="severity" value="error"/>
    <property name="charset" value="UTF-8"/>
    <property name="localeLanguage" value="en" />
    <property name="localeCountry" value="US" />

    <!-- 文件长度不超过2000行 -->
    <module name="FileLength">
        <property name="max" value="2000"/>
    </module>

    <!-- 长度检查 -->
    <!-- 每行不超过200个字符 -->
    <module name="LineLength">
        <property name="max" value="200"/>
    </module>

    <!-- 每个java文件一个语法树 -->
    <module name="TreeWalker">
        <!-- import检查 开始-->
        <!-- 检查是否从非法的包中导入了类 -->
        <module name="IllegalImport"/>
        <!-- 检查是否导入了多余的包 -->
        <!--<module name="RedundantImport"/>-->
        <!-- 没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 -->
        <module name="UnusedImports"/>
        <!-- 必须导入类的完整路径,即不能使用*导入所需的类 -->
        <module name="AvoidStarImport"/>
        <module name="NoLineWrap"/>
        <module name="OuterTypeFilename"/>
        <!--检查switch中case后是否加入了跳出语句,例如:return、break、throw、continue -->
        <module name="FallThrough"/>

        <!-- 注释检查 -->
        <!-- 检查构造函数的javadoc -->
        <module name="JavadocType">
            <property name="allowUnknownTags" value="true"/>
            <message key="javadoc.missing" value="类注释:缺少Javadoc注释。"/>
        </module>

        <module name="JavadocMethod"/>
        <module name="JavadocVariable"/>

        <!-- 命名检查 -->
        <!-- 局部的final变量,包括catch中的参数的检查 -->
        <module name="LocalFinalVariableName"/>
        <!-- 局部的非final型的变量,包括catch中的参数的检查 -->
        <module name="LocalVariableName"/>
        <!-- 包名的检查(只允许小写字母),默认^[a-z]+(\.[a-zA-Z_][a-zA-Z_0-9_]*)*$ -->
        <module name="PackageName">
            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
            <message key="name.invalidPattern" value="包名 ''{0}'' 要符合 ''{1}''格式."/>
        </module>
        <!-- 仅仅是static型的变量(不包括static final型)的检查 -->
        <module name="StaticVariableName"/>
        <!-- Class或Interface名检查,默认^[A-Z][a-zA-Z0-9]*$-->
        <module name="TypeName">
            <property name="severity" value="warning"/>
            <message key="name.invalidPattern" value="名称 ''{0}'' 要符合 ''{1}''格式."/>
        </module>

        <!-- 非static型变量的检查 -->
        <module name="MemberName"/>
        <!-- 方法名的检查 -->
        <module name="MethodName"/>
        <!-- 方法的参数名 -->
        <module name="ParameterName "/>
        <!-- 常量名的检查(只允许大写),默认^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$ -->
        <module name="ConstantName"/>

        <!-- 定义检查 -->
        <!-- 检查数组类型的定义是String[] args,而不是String args[] -->
        <module name="ArrayTypeStyle"/>
        <!-- 检查long型定义是否有大写的“L” -->
        <module name="UpperEll"/>

        <module name="GenericWhitespace"/>
        <module name="EqualsAvoidNull"/>
        <module name="TodoComment"/>
        <module name="CovariantEquals"/>
        <module name="ModifiedControlVariable"/>

        <module name="IllegalInstantiation"/>

        <module name="CovariantEquals">
            <property name="severity" value="warning"/>
            <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="warning"/>
        </module>
        <module name="DefaultComesLast">
            <property name="severity" value="warning"/>
            <metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="warning"/>
        </module>


        <!-- 方法不超过1000行 -->
        <module name="MethodLength">
            <property name="tokens" value="METHOD_DEF"/>
            <property name="max" value="1000"/>
        </module>

        <!-- 方法的参数个数不超过10个。 并且不对构造方法进行检查 -->
        <module name="ParameterNumber">
            <property name="max" value="10"/>
            <property name="tokens" value="METHOD_DEF"/>
        </module>

        <!-- 空格检查-->
        <!-- 方法名后跟左圆括号"(" -->
        <module name="MethodParamPad"/>
        <!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 -->
        <module name="TypecastParenPad"/>
        <!-- 检查在某个特定关键字之后应保留空格 -->
        <module name="NoWhitespaceAfter"/>
        <!-- 检查在某个特定关键字之前应保留空格 -->
        <module name="NoWhitespaceBefore"/>
        <!-- 操作符换行策略检查 -->
        <module name="OperatorWrap"/>
        <!-- 圆括号空白 -->
        <module name="ParenPad"/>
        <!-- 检查分隔符是否在空白之后 -->
        <!--<module name="WhitespaceAfter"/>-->
        <!-- 检查分隔符周围是否有空白 -->
        <module name="WhitespaceAround">
            <property name="allowEmptyConstructors" value="true"/>
            <property name="allowEmptyMethods" value="true"/>
            <property name="allowEmptyTypes" value="true"/>
            <property name="allowEmptyLoops" value="true"/>
            <property name="allowEmptyLambdas" value="true"/>
            <property name="allowEmptyCatches" value="true"/>
        </module>

        <!-- 修饰符检查 -->
        <!-- 检查修饰符的顺序是否遵照java语言规范,默认public、protected、private、abstract、static、final、transient、volatile、synchronized、native、strictfp -->
        <module name="ModifierOrder"/>

        <!-- 代码块检查 -->
        <!-- 检查是否有嵌套代码块 -->
        <module name="AvoidNestedBlocks"/>
        <!-- 不能出现空白区域 -->
        <module name="EmptyBlock"/>
        <!-- 检查左大括号位置 -->
        <module name="LeftCurly"/>
        <!-- 检查代码块是否缺失{} -->
        <module name="NeedBraces"/>
        <!-- 检查右大括号位置 -->
        <module name="RightCurly"/>

        <!-- 代码检查 -->
        <!-- 不许出现空语句 -->
        <module name="EmptyStatement"/>
        <!-- 检查在重写了equals方法后是否重写了hashCode方法 -->
        <module name="EqualsHashCode"/>
        <!-- 检查局部变量或参数是否隐藏了类中的变量 -->
        <module name="HiddenField">
            <property name="tokens" value="VARIABLE_DEF"/>
        </module>
        <!-- 检查子表达式中是否有赋值操作 -->
        <module name="InnerAssignment"/>
        <!-- 检查switch语句是否有default -->
        <module name="MissingSwitchDefault"/>
        <!-- 检查是否有过度复杂的布尔表达式 -->
        <module name="SimplifyBooleanExpression"/>
        <!-- 检查是否有过于复杂的布尔返回代码段 -->
        <module name="SimplifyBooleanReturn"/>

        <!-- 类设计检查 -->
        <!-- 检查类是否为扩展设计l -->
        <!-- 检查接口是否仅定义类型 -->
        <module name="InterfaceIsType"/>
        <!-- 检查类成员的可见度 检查类成员的可见性。只有static final 成员是public的
        除非在本检查的protectedAllowed和packagedAllowed属性中进行了设置-->
        <module name="VisibilityModifier">
            <property name="packageAllowed" value="true"/>
            <property name="protectedAllowed" value="true"/>
        </module>

        <module name="HideUtilityClassConstructor"/>

        <!-- 语法 -->
        <!-- String的比较不能用!= 和 == -->
        <module name="StringLiteralEquality"/>
        <!-- 限制for循环最多嵌套2层 -->
        <module name="NestedForDepth">
            <property name="max" value="3"/>
        </module>
        <!-- if最多嵌套3层 -->
        <module name="NestedIfDepth">
            <property name="max" value="5"/>
        </module>
        <!-- 检查未被注释的main方法,排除以Application结尾命名的类 -->
        <!--        <module name="UncommentedMain">
                    <property name="excludedClasses" value=".*[Application,Test,Launcher]$"/>
                </module>-->
        <!-- 禁止使用logger.info -->
        <module name="Regexp">
            <property name="format" value="System\.out\.println"/>
            <property name="illegalPattern" value="true"/>
        </module>
        <!-- 确保一个类有package声明 -->
        <module name="PackageDeclaration"/>

        <!--try最多被嵌套 3层-->
        <module name="NestedTryDepth ">
            <property name="max" value="3"/>
        </module>
        <!-- clone方法必须调用了super.clone() -->
        <module name="SuperClone"/>
        <!-- finalize 必须调用了super.finalize() -->
        <module name="SuperFinalize"/>
        <!-- 检查java代码的缩进 默认配置:基本缩进 4个空格,新行的大括号:0。新行的case 4个空格 -->
        <!--<module name="Indentation" />-->
        <!-- 根据 Sun 编码规范, class 或 interface 中的顺序如下:
               1.class 声明。首先是 public, 然后是protected, 然后是 package level (不包括access modifier ) 最后是private . (多个class放在一个java文件中的情况)
               2.变量声明。 首先是 public, 然后是protected然后是 package level (不包括access modifier ) 最后是private. (多个class放在一个java文件中的情况)
               3.构造函数
               4.方法 -->
        <module name="DeclarationOrder"/>
        <!-- 同一行不能有多个声明 -->
        <module name="MultipleVariableDeclarations"/>
        <!-- 不必要的圆括号 -->
        <module name="UnnecessaryParentheses"/>

        <module name="SuppressionCommentFilter">
            <property name="offCommentFormat" value=" CHECKSTYLE:OFF"/>
            <property name="onCommentFormat" value=" CHECKSTYLE:ON"/>
        </module>

    </module>
</module>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy