checkstyle配置

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<!--

  Checkstyle configuration that checks the sun coding conventions from:

    - the Java Language Specification at
      http://java.sun.com/docs/books/jls/second_edition/html/index.html

    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/

    - the Javadoc guidelines at
      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html

    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html

    - some best practices

  Checkstyle is very configurable. Be sure to read the documentation at
  http://checkstyle.sf.net (or in your downloaded distribution).

  Most Checks are configurable, be sure to consult the documentation.

  To completely disable a check, just comment it out or delete it from the file.

  Finally, it is worth reading the documentation.

-->

<module name="Checker">
	<property name="severity" value="warning"/>

	<!-- javadoc的检查 --> 
    <!-- 检查所有的interface和class -->
    <module name="JavadocPackage"/>

    <module name="NewlineAtEndOfFile">
        <property name="severity" value="ignore"/>
    </module>

    <module name="Translation"/>

    <!-- 长度方面的检查 --> 
	<!-- 文件长度不超过1500行 --> 
	<module name="FileLength"/>
    <module name="FileTabCharacter">
        <property name="severity" value="ignore"/>
    </module>

    <module name="RegexpSingleline">
       <property name="severity" value="ignore"/>
       <property name="format" value="\s+$"/>
       <property name="minimum" value="0"/>
       <property name="maximum" value="0"/>
       <property name="message" value="Line has trailing spaces."/>
    </module>

    <module name="TreeWalker">
	    <!-- TAB链占用长度 --> 
        <property name="tabWidth" value="4"/>

        <module name="JavadocMethod">
            <property name="logLoadErrors" value="true"/>
            <property name="suppressLoadErrors" value="true"/>
        </module>
        <module name="JavadocVariable"/>
        <!-- 检查Javadoc的格式 -->
		<module name="JavadocStyle">
			<property name="scope" value="public"/>
			<!-- Comment的第一句的末尾是否要有一个句号,true必须有,default为true -->
			<property name="checkFirstSentence" value="false"/>
			<!-- 检查错误的HTML脚本,比如不匹配,true检查,default为true -->
			<property name="checkHtml" value="true"/>
		</module>
		
		<!-- 常量名的检查 --> 
        <module name="ConstantName"/>
		<!-- 命名方面的检查,它们都使用了Sun官方定的规则。 --> 
        <!-- 局部的final变量,包括catch中的参数的检查 -->
        <module name="LocalFinalVariableName"/>
		<!-- 局部的非final型的变量,包括catch中的参数的检查 -->
        <module name="LocalVariableName"/>
		<!-- 非static型变量的检查 -->
        <module name="MemberName"/>
		<!-- 方法名的检查 --> 
        <module name="MethodName"/>
		<!-- 包名的检查(只允许小写字母) --> 
        <module name="PackageName"> 
            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" /> 
        </module>
		<!-- 方法的参数名 --> 
        <module name="ParameterName"/>
		<!-- 仅仅是static型的变量(不包括static final型)的检查 --> 
        <module name="StaticVariableName"/>
		<!-- 类型(Class或Interface)名的检查 -->
        <module name="TypeName"/>

		<!-- import方面的检查 --> 
        <!-- import中避免星号"*" --> 
        <module name="AvoidStarImport"/>
        <module name="IllegalImport"/>
        <module name="RedundantImport"/>
		<!-- 
            没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 
            与该类在同一个package的 
        --> 
        <module name="UnusedImports"/>

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

		<!-- 空格检查  --> 
        <!-- 允许方法名后紧跟左边圆括号"(" -->
        <module name="EmptyForIteratorPad"/>
        <module name="MethodParamPad"/>
        <module name="NoWhitespaceAfter">
            <property name="tokens" value="BNOT,DEC,DOT,INC,LNOT,UNARY_MINUS,UNARY_PLUS"/>
        </module>
        <module name="NoWhitespaceBefore"/>
        <module name="OperatorWrap"/>
        <module name="ParenPad"/>
		<!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 -->
        <module name="TypecastParenPad"/>
        <module name="WhitespaceAfter"/>
        <module name="WhitespaceAround">
            <property name="tokens" value="ASSIGN,BAND,BAND_ASSIGN,BOR,BOR_ASSIGN,BSR,BSR_ASSIGN,BXOR,BXOR_ASSIGN,COLON,DIV,DIV_ASSIGN,EQUAL,GE,GT,LAND,LCURLY,LE,LITERAL_ASSERT,LITERAL_CATCH,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_RETURN,LITERAL_SYNCHRONIZED,LITERAL_TRY,LITERAL_WHILE,LOR,LT,MINUS,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS,PLUS_ASSIGN,QUESTION,RCURLY,SL,SLIST,SL_ASSIGN,SR,SR_ASSIGN,STAR,STAR_ASSIGN,LITERAL_ASSERT,TYPE_EXTENSION_AND,WILDCARD_TYPE"/>
        </module>
		
		<!-- 关键字 --> 
        <!-- 
            每个关键字都有正确的出现顺序。比如 public static final XXX 是对一个常量的声明。如果使用 static 
            public final 就是错误的 
        -->
        <module name="ModifierOrder"/>
        <module name="RedundantModifier"/>

        <!-- 多余的括号 --> 
        <module name="AvoidNestedBlocks"> 
            <property name="allowInSwitchCase" value="true" /> 
        </module>
		<!-- 对区域的检查 --> 
        <!-- 不能出现空白区域 -->
        <module name="EmptyBlock"/>
        <module name="LeftCurly"/>
		<!-- 所有区域都要使用大括号。 -->
        <module name="NeedBraces"/>
        <module name="RightCurly"/>

        <module name="AvoidInlineConditionals"/>
        <module name="EmptyStatement"/>
        <module name="EqualsHashCode"/>
        <module name="HiddenField"/>
        <module name="IllegalInstantiation"/>
        <module name="InnerAssignment"/>
		<!-- 编码方面的检查 --> 
        <!-- 不允许使用常数,需要定义成常量 -->
        <module name="MagicNumber"> 
            <property name="tokens" value="NUM_DOUBLE, NUM_INT" /> 
        </module>
        <module name="MissingSwitchDefault"/>
        <module name="RedundantThrows">
            <property name="logLoadErrors" value="true"/>
            <property name="suppressLoadErrors" value="true"/>
        </module>
        <module name="SimplifyBooleanExpression"/>
        <module name="SimplifyBooleanReturn"/>

        <module name="DesignForExtension"/>
        <module name="FinalClass"/>
        <module name="HideUtilityClassConstructor"/>
        <module name="InterfaceIsType"/>
        <module name="VisibilityModifier"/>
		<!-- 检查数组类型的定义是String[] args,而不是String args[] --> 
        <module name="ArrayTypeStyle"/>
        <module name="FinalParameters"/>
        <module name="TodoComment">
            <property name="severity" value="ignore"/>
        </module>
		
		<!-- 循环控制变量不能被修改 --> 
        <module name="ModifiedControlVariable" />  
        <!-- String的比较不能用!= 和 == --> 
        <module name="StringLiteralEquality" /> 
        <!-- if最多嵌套3层 --> 
        <module name="NestedIfDepth"> 
            <property name="max" value="3" /> 
        </module> 
        <!-- try最多被嵌套2层 --> 
        <module name="NestedTryDepth"> 
            <property name="max" value="2" /> 
        </module> 
        <!-- clone方法必须调用了super.clone() --> 
        <module name="SuperClone" /> 
        <!-- finalize 必须调用了super.finalize() --> 
        <module name="SuperFinalize" /> 
        <!-- 确保一个类有package声明 --> 
        <module name="PackageDeclaration" /> 
        <!-- 一个方法中最多有3个return --> 
        <module name="ReturnCount"> 
            <property name="max" value="3" /> 
            <property name="format" value="^$" /> 
        </module> 
        <!-- 不许对方法的参数赋值 --> 
        <module name="ParameterAssignment" /> 
        <!-- 确保某个class 在被使用时都已经被初始化成默认值(对象是null,数字和字符是0,boolean 变量是false.) --> 
        <module name="ExplicitInitialization" /> 
        <!-- 同一行不能有多个声明 --> 
        <module name="MultipleVariableDeclarations" />
		<!-- 检查并确保所有的常量中的L都是大写的。因为小写的字母l跟数字1太象了 -->
        <module name="UpperEll"/>
    </module>
</module>

你可能感兴趣的:(checkstyle配置)