转载地址:http://www.searchtb.com/2011/01/coding-better-java-with-checkstyle.html
<?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">
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
http://checkstyle.sourceforge.net/5.x/config.html#Checker
<property name="basedir" value="${basedir}"/>
-->
<!-- Checks that each Java package has a Javadoc file used for commenting. -->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
<!-- Checks whether files end with a new line. -->
<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
<!-- Checks that property files contain the same keys. -->
<!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
<module name="Translation"/>
<module name="FileLength"/>
<!-- Following interprets the header file as regular expressions. -->
<!-- <module name="RegexpHeader"/> -->
<module name="FileTabCharacter">
<property name="eachLine" value="false"/>
</module>
<module name="RegexpSingleline">
<!-- \s matches whitespace character, $ matches end of line. -->
<property name="format" value="\s+$"/>
<property name="message" value="Line has trailing spaces."/>
</module>
<module name="TreeWalker">
<module name="AbstractClassName">
<property name="format" value="^Abstract.*$|^.*Factory$"/>
</module>
<module name="ExecutableStatementCount">
<property name="max" value="500"/>
<property name="tokens" value="CTOR_DEF,METHOD_DEF,STATIC_INIT,INSTANCE_INIT"/>
</module>
<module name="AnonInnerLength">
<property name="max" value="20"/>
</module>
<module name="EmptyForInitializerPad">
<property name="option" value="space"/>
</module>
<module name="EmptyForIteratorPad">
<property name="option" value="space"/>
</module>
<module name="MethodParamPad">
<property name="allowLineBreaks" value="false"/>
<property name="option" value="space"/>
<property name="tokens" value="METHOD_DEF,CTOR_DEF"/>
</module>
<module name="NoWhitespaceAfter">
<property name="allowLineBreaks" value="true"/>
</module>
<module name="NoWhitespaceBefore">
<property name="allowLineBreaks" value="true"/>
</module>
<module name="TypecastParenPad">
<property name="option" value="space"/>
</module>
<module name="ParenPad">
<property name="option" value="nospace"/>
</module>
<module name="WhitespaceAfter">
<property name="tokens" value="COMMA,SEMI,TYPECAST"/>
</module>
<module name="WhitespaceAround">
<property name="tokens" value="ASSIGN"/>
</module>
<module name="ModifierOrder"/>
<module name="RedundantModifier">
<property name="tokens" value="METHOD_DEF,VARIABLE_DEF"/>
</module>
<module name="AvoidNestedBlocks">
<property name="allowInSwitchCase" value="true"/>
</module>
<module name="MissingSwitchDefault"/>
<module name="ModifiedControlVariable"/>
<module name="RedundantThrows">
<property name="allowUnchecked" value="true"/>
<property name="allowSubclasses" value="true"/>
</module>
<module name="StringLiteralEquality"/>
<module name="SuperClone"/>
<module name="SuperFinalize"/>
<module name="PackageDeclaration"/>
<module name="ReturnCount">
<property name="max" value="50"/>
</module>
<module name="DeclarationOrder"/>
<module name="DefaultComesLast"/>
<module name="FallThrough"/>
<module name="MultipleStringLiterals">
<property name="allowedDuplicates" value="20"/>
</module>
<module name="MultipleVariableDeclarations"/>
<module name="RequireThis">
<property name="checkFields" value="false"/>
<property name="checkMethods" value="false"/>
</module>
<module name="ThrowsCount">
<property name="max" value="7"/>
</module>
<module name="BooleanExpressionComplexity">
<property name="max" value="7"/>
</module>
<module name="ClassDataAbstractionCoupling">
<property name="max" value="20"/>
</module>
<module name="CovariantEquals"/>
<module name="HiddenField">
<property name="ignoreSetter" value="true"/>
</module>
<module name="InterfaceIsType">
<property name="allowMarkerInterfaces" value="true"/>
</module>
<module name="ArrayTypeStyle">
<property name="javaStyle" value="true"/>
</module>
<module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="4"/>
</module>
<module name="FileContentsHolder">
</module>
<module name="AvoidStarImport">
<property name="excludes" value="java.io,java.util"/>
</module>
<module name="ConstantName">
<property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
</module>
<module name="EmptyBlock">
<property name="option" value="stmt"/>
</module>
<module name="EqualsHashCode"/>
<module name="IllegalImport">
</module>
<module name="IllegalInstantiation"/>
<module name="JavadocType">
<property name="authorFormat" value="\S"/>
<property name="scope" value="protected"/>
<property name="versionFormat" value="\$Revision.*\$"/>
<property name="excludeScope" value="public"/>
</module>
<module name="JavadocMethod">
<property name="scope" value="private"/>
<property name="allowMissingParamTags" value="false"/>
<property name="allowMissingThrowsTags" value="true"/>
<property name="allowMissingReturnTag" value="false"/>
<property name="tokens" value="METHOD_DEF"/>
<property name="allowUndeclaredRTE" value="true"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
</module>
<module name="JavadocVariable">
<property name="scope" value="private"/>
<property name="excludeScope" value="protected"/>
</module>
<module name="JavadocStyle">
<property name="scope" value="public"/>
<property name="checkFirstSentence" value="false"/>
<property name="checkEmptyJavadoc" value="true"/>
<property name="checkHtml" value="false"/>
</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="LineLength">
<property name="max" value="200"/>
<property name="ignorePattern" value="^ *\* *[^ ]+$"/>
</module>
<module name="LocalFinalVariableName">
<property name="format" value="^[A_Z][A-Z0-9]*(_[A_Z0-9]+)*$"/>
</module>
<module name="LocalVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="MemberName">
<property name="format" value="^[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<module name="MethodLength">
<property name="max" value="100"/>
<property name="countEmpty" value="true"/>
<property name="tokens" value="METHOD_DEF"/>
</module>
<module name="MethodName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="ModifierOrder"/>
<module name="NeedBraces">
</module>
<module name="OperatorWrap">
<property name="tokens"
value="ASSIGN, DIV, DIV_ASSIGN, PLUS_ASSIGN, MINUS, MINUS_ASSIGN, STAR, STAR_ASSIGN, MOD, MOD_ASSIGN, SR, SR_ASSIGN, BSR, BSR_ASSIGN, SL, SL_ASSIGN, BXOR, BXOR_ASSIGN, BOR, BOR_ASSIGN, BAND, BAND_ASSIGN,PLUS, QUESTION"/>
<property name="option" value="eol"/>
</module>
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
</module>
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="ParameterNumber">
<property name="max" value="10"/>
<property name="tokens" value="METHOD_DEF,CTOR_DEF"/>
</module>
<module name="RedundantImport"/>
<module name="RedundantModifier"/>
<module name="RightCurly">
<property name="option" value="alone"/>
<property name="tokens" value="LITERAL_TRY"/>
</module>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="TypeName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
<property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>
</module>
<module name="UnusedImports"/>
<module name="UpperEll"/>
<module name="VisibilityModifier">
<property name="packageAllowed" value="false"/>
<property name="protectedAllowed" value="false"/>
<property name="publicMemberPattern" value="^seriaVersionUID$"/>
</module>
<module name="WhitespaceAround"/>
<module name="FinalClass"/>
<module name="MissingSwitchDefault"/>
<module name="ArrayTrailingComma"/>
<module name="CyclomaticComplexity">
<property name="severity" value="ignore"/>
</module>
<module name="NestedIfDepth">
<property name="max" value="1"/>
</module>
<module name="NestedTryDepth">
<property name="max" value="3"/>
</module>
<module name="ExplicitInitialization"/>
</module>
</module>
<!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">
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
http://checkstyle.sourceforge.net/5.x/config.html#Checker
<property name="basedir" value="${basedir}"/>
-->
<!-- Checks that each Java package has a Javadoc file used for commenting. -->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
<!-- Checks whether files end with a new line. -->
<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
<!-- Checks that property files contain the same keys. -->
<!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
<module name="Translation"/>
<module name="FileLength"/>
<!-- Following interprets the header file as regular expressions. -->
<!-- <module name="RegexpHeader"/> -->
<module name="FileTabCharacter">
<property name="eachLine" value="false"/>
</module>
<module name="RegexpSingleline">
<!-- \s matches whitespace character, $ matches end of line. -->
<property name="format" value="\s+$"/>
<property name="message" value="Line has trailing spaces."/>
</module>
<module name="TreeWalker">
<module name="AbstractClassName">
<property name="format" value="^Abstract.*$|^.*Factory$"/>
</module>
<module name="ExecutableStatementCount">
<property name="max" value="500"/>
<property name="tokens" value="CTOR_DEF,METHOD_DEF,STATIC_INIT,INSTANCE_INIT"/>
</module>
<module name="AnonInnerLength">
<property name="max" value="20"/>
</module>
<module name="EmptyForInitializerPad">
<property name="option" value="space"/>
</module>
<module name="EmptyForIteratorPad">
<property name="option" value="space"/>
</module>
<module name="MethodParamPad">
<property name="allowLineBreaks" value="false"/>
<property name="option" value="space"/>
<property name="tokens" value="METHOD_DEF,CTOR_DEF"/>
</module>
<module name="NoWhitespaceAfter">
<property name="allowLineBreaks" value="true"/>
</module>
<module name="NoWhitespaceBefore">
<property name="allowLineBreaks" value="true"/>
</module>
<module name="TypecastParenPad">
<property name="option" value="space"/>
</module>
<module name="ParenPad">
<property name="option" value="nospace"/>
</module>
<module name="WhitespaceAfter">
<property name="tokens" value="COMMA,SEMI,TYPECAST"/>
</module>
<module name="WhitespaceAround">
<property name="tokens" value="ASSIGN"/>
</module>
<module name="ModifierOrder"/>
<module name="RedundantModifier">
<property name="tokens" value="METHOD_DEF,VARIABLE_DEF"/>
</module>
<module name="AvoidNestedBlocks">
<property name="allowInSwitchCase" value="true"/>
</module>
<module name="MissingSwitchDefault"/>
<module name="ModifiedControlVariable"/>
<module name="RedundantThrows">
<property name="allowUnchecked" value="true"/>
<property name="allowSubclasses" value="true"/>
</module>
<module name="StringLiteralEquality"/>
<module name="SuperClone"/>
<module name="SuperFinalize"/>
<module name="PackageDeclaration"/>
<module name="ReturnCount">
<property name="max" value="50"/>
</module>
<module name="DeclarationOrder"/>
<module name="DefaultComesLast"/>
<module name="FallThrough"/>
<module name="MultipleStringLiterals">
<property name="allowedDuplicates" value="20"/>
</module>
<module name="MultipleVariableDeclarations"/>
<module name="RequireThis">
<property name="checkFields" value="false"/>
<property name="checkMethods" value="false"/>
</module>
<module name="ThrowsCount">
<property name="max" value="7"/>
</module>
<module name="BooleanExpressionComplexity">
<property name="max" value="7"/>
</module>
<module name="ClassDataAbstractionCoupling">
<property name="max" value="20"/>
</module>
<module name="CovariantEquals"/>
<module name="HiddenField">
<property name="ignoreSetter" value="true"/>
</module>
<module name="InterfaceIsType">
<property name="allowMarkerInterfaces" value="true"/>
</module>
<module name="ArrayTypeStyle">
<property name="javaStyle" value="true"/>
</module>
<module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="4"/>
</module>
<module name="FileContentsHolder">
</module>
<module name="AvoidStarImport">
<property name="excludes" value="java.io,java.util"/>
</module>
<module name="ConstantName">
<property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
</module>
<module name="EmptyBlock">
<property name="option" value="stmt"/>
</module>
<module name="EqualsHashCode"/>
<module name="IllegalImport">
</module>
<module name="IllegalInstantiation"/>
<module name="JavadocType">
<property name="authorFormat" value="\S"/>
<property name="scope" value="protected"/>
<property name="versionFormat" value="\$Revision.*\$"/>
<property name="excludeScope" value="public"/>
</module>
<module name="JavadocMethod">
<property name="scope" value="private"/>
<property name="allowMissingParamTags" value="false"/>
<property name="allowMissingThrowsTags" value="true"/>
<property name="allowMissingReturnTag" value="false"/>
<property name="tokens" value="METHOD_DEF"/>
<property name="allowUndeclaredRTE" value="true"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
</module>
<module name="JavadocVariable">
<property name="scope" value="private"/>
<property name="excludeScope" value="protected"/>
</module>
<module name="JavadocStyle">
<property name="scope" value="public"/>
<property name="checkFirstSentence" value="false"/>
<property name="checkEmptyJavadoc" value="true"/>
<property name="checkHtml" value="false"/>
</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="LineLength">
<property name="max" value="200"/>
<property name="ignorePattern" value="^ *\* *[^ ]+$"/>
</module>
<module name="LocalFinalVariableName">
<property name="format" value="^[A_Z][A-Z0-9]*(_[A_Z0-9]+)*$"/>
</module>
<module name="LocalVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="MemberName">
<property name="format" value="^[a-zA-Z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<module name="MethodLength">
<property name="max" value="100"/>
<property name="countEmpty" value="true"/>
<property name="tokens" value="METHOD_DEF"/>
</module>
<module name="MethodName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="ModifierOrder"/>
<module name="NeedBraces">
</module>
<module name="OperatorWrap">
<property name="tokens"
value="ASSIGN, DIV, DIV_ASSIGN, PLUS_ASSIGN, MINUS, MINUS_ASSIGN, STAR, STAR_ASSIGN, MOD, MOD_ASSIGN, SR, SR_ASSIGN, BSR, BSR_ASSIGN, SL, SL_ASSIGN, BXOR, BXOR_ASSIGN, BOR, BOR_ASSIGN, BAND, BAND_ASSIGN,PLUS, QUESTION"/>
<property name="option" value="eol"/>
</module>
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
</module>
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="ParameterNumber">
<property name="max" value="10"/>
<property name="tokens" value="METHOD_DEF,CTOR_DEF"/>
</module>
<module name="RedundantImport"/>
<module name="RedundantModifier"/>
<module name="RightCurly">
<property name="option" value="alone"/>
<property name="tokens" value="LITERAL_TRY"/>
</module>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="TypeName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
<property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>
</module>
<module name="UnusedImports"/>
<module name="UpperEll"/>
<module name="VisibilityModifier">
<property name="packageAllowed" value="false"/>
<property name="protectedAllowed" value="false"/>
<property name="publicMemberPattern" value="^seriaVersionUID$"/>
</module>
<module name="WhitespaceAround"/>
<module name="FinalClass"/>
<module name="MissingSwitchDefault"/>
<module name="ArrayTrailingComma"/>
<module name="CyclomaticComplexity">
<property name="severity" value="ignore"/>
</module>
<module name="NestedIfDepth">
<property name="max" value="1"/>
</module>
<module name="NestedTryDepth">
<property name="max" value="3"/>
</module>
<module name="ExplicitInitialization"/>
</module>
</module>