checkstyle配置文件说明

来源:互联网 发布:韩国的文化知乎 编辑:程序博客网 时间:2024/05/01 11:20

checkstyle配置文件说明(checkstyle 3.5)

属性说明basedir代码所在的位置AbstractClassNameformat: 定义抽象类的命名规则PackageNameformat: 定义包名的命名规则TypeNameformat: 定义类和接口的命名规则
tokens: 定义规则适用的类型,例如:CLASS_DEF表示类,INTERFACE_DEF 表示接口ParameterNameformat: 定义参数名的命名规则ParameterNumbermax: 定义最多有多少个参数
tokens: 定义检查的类型StaticVariableNameformat: 定义静态变量的命名规则MethodNameformat: 定义方法名的命名规则LeftCurlyoption: 定义左大括号'{'显示位置,eol在同一行显示,nl在下一行显示
maxLineLength: 大括号'{'所在行行最多容纳的字符数
tokens: 该属性适用的类型,例:CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEFLineLengthmax: 定义一行所能容许的字符数
ignorePattern: 定义可以忽略的格式MethodLength检查方法的行数
max: 最多容许的行数
countEmpty: 是否计算空行
tokens: 定义检查的类型RightCurlyoption: 右大括号是否单独一行显示
tokens: 定义检查的类型PackageHtml检查对每一个包是否生成了package.html文件
fileExtensions: 指定要检查的文件的类型,如果只包含java文件,就不必指定JavadocType检查类或者接口的javadoc注释
authorFormat: 检查author标签的格式
versionFormat: 检查version标签的格式
scope: 可以检查的类的范围,例如:public只能检查public修饰的类,private可以检查所有的类
excludeScope: 不能检查的类的范围,例如:public,public的类将不被检查,但访问权限小于public的类仍然会检查,其他的权限以此类推
tokens: 该属性适用的类型,例如:CLASS_DEF,INTERFACE_DEFJavadocMethod检查方法的javadoc的注释
scope: 可以检查的方法的范围,例如:public只能检查public修饰的方法,private可以检查所有的方法
allowMissingParamTags: 是否忽略对参数注释的检查
allowMissingThrowsTags: 是否忽略对throws注释的检查
allowMissingReturnTag: 是否忽略对return注释的检查JavadocVariable检查类变量的注释
scope: 检查变量的范围,例如:public只能检查public修饰的变量,private可以检查所有的变量JavadocStylescope:
excludeScope:
checkFirstSentence:
checkEmptyJavadoc:
checkHtml:
tokens:LocalVariableNameformat: 定义局部变量的命名规则LocalFinalVariableNameformat: 定义局部常量的命名规则ConstantNameformat: 定义全局常量的命名规则MemberNameformat: 定义非静态成员变量的命名规则
applyToPublic: 是否适用于public的成员变量
applyToProtected: 是否适用于protected的成员变量
applyToPackage: 是否适用于package的成员变量
applyToPrivate: 是否适用于private的成员变量AvoidStarImport必须导入类的完整路径,即不能使用*导入所需的类
excludes: 定义可以使用*导入的包ImportOrder定义导入包的顺序
groups: 定义导入包的顺序,默认以字母顺序导入
ordered: 定义包是否必须按规定的顺序显示
separated: 定义包与包之间是否应添加空白行
caseSensitive: 是否区分包名的大小写IllegalImport检查是否从非法的包中导入了类
illegalPkgs: 定义非法的包名称UnusedImports检查是否导入的包没有使用RedundantImport检查是否导入了不必显示导入的类EmptyForInitializerPad检查for语句初始化变量的格式
option: 定义初始化语句中是否使用空格,例如:space表示使用空格,则for(int i = 0; i < 100; i++)就是符合格式要求的,而for(int i=0; i<100;i++)就不符合要求EmptyForIteratorPad检查for iterator语句是否使用空格
option: 定义初始化语句是否使用空格,例如:space表示使用空格,则for(Iterator iterator = List.iterator(); iterator.hasNext(); iterator.next())就是形式合理的,否则就是形式不合理的ExecutableStatementCount检查要执行的语句的数目
max: 定义所能容许的语句的最多数目
tokens: 定义可以检查的类型,例如:CTOR_DEF,METHOD_DEF,STATIC_INIT,INSTANCE_INITFileLengthmax: 定义一个文件所能容许的行数AnonInnerLength检查匿名内部类
max: 定义匿名内部类最多容许的行数MethodParamPad检查方法参数的格式
allowLineBreaks: 参数是否允许在不同行(注:没有作用)
option: 在参数和括号、参数和标识符之间是否包含空格OperatorWrap检查运算符是否在应在同一行
option: 定义运算符的位置,eol在同一行,nl在下一行
tokens: 定义检查的类型ParenPad检查左小括号'('后边和右小括号')'前边是否有空格
option: space表示有空格,nospace表示没有空格
tokens: 定义检查的类型TypecastParenPad暂不清楚TabCharacter检查源码中是否包含\tWhitespaceAfter检查类型后是否包含空格
tokens: 检查的类型WhitespaceAround暂不清楚ModifierOrder检查修饰符的顺序,默认是 public,protected,private,abstract,static,final,transient,volatile,synchronized,native,strictfp(注:定义不起作用)RedundantModifier检查是否有多余的修饰符,例如:接口中的方法不必使用public、abstract修饰
tokens: 检查的类型EmptyBlock检查是否有空代码块
option: 定义代码块中应该包含的内容,例如:stmt表示语句
tokens: 检查的类型NeedBraces检查是否应该使用括号的地方没有加括号
tokens: 定义检查的类型AvoidNestedBlocks检查是否有嵌套的代码块
allowInSwitchCase: 定义是否允许switch case中使用嵌套的代码块ArrayTrailingComma检查初始化数祖时,最后一个元素后面是否加了逗号,如果左右大括号都在同一行,则可以不加逗号AvoidInlineConditionals检查是否在同一行初始化, 例如:private int Age = nGe==1 ? 100 : 0; 就应该避免CovariantEquals暂不清楚ModifiedControlVariable检查循环控制变量是否被修改SimplifyBooleanExpression检查是否有boolean使用冗余的地方,例如:b == true、b || true,应该简化为 b、bSimplifyBooleanReturn检查是否在返回boolean值时是否有使用冗余的地方,例如:
    if(valid())
        return true;
    else
        return false;
应该改为:
    return valid();StringLiteralEquality检查在判断字符串是否相等时是否使用了正确的形式EqualsHashCode检查在重写了equals方法后是否重写了hashCode方法FinalLocalVariable检查变量值没有改动的情况下,该变量是否定义成了finalMissingSwitchDefault检查switch语句是否忘记了default标签RedundantThrows检查是否抛出了多余的异常DefaultComesLast检查switch中default是否在所有case的后面MissingCtor检查类中是否显式定义了构造器FallThrough检查switch中case后是否加入了跳出语句,例如:return、break、throw、continueMultipleStringLiterals检查一个字符串变量在不改变变量值的情况下或者字符串出现的次数
allowedDuplicates: 定义在类中一个字符串变量在不改变变量值的情况下或者字符串所能使用的最多次数MultipleVariableDeclarations检查一次声明多个变量时,变量是否在同一行或者在同一个语句中RequireThis检查是否使用了this
checkFields: 是否检查变量引用
checkMethods: 是否检查方法调用UnnecessaryParentheses检查是否使用了多余的小括号VisibilityModifier检查变量是否对外部可见
packageAllowed: 变量包内成员可以访问
protectedAllowed: 变量是受保护的
publicMemberPattern: 可以公开访问的变量所匹配的命名形式FinalClass只有私有构造器的类必须声明为finalInterfaceIsType检查接口是否只定义了变量而没有定义方法,因为接口应该用来描述一个类型,所以只定义变量而不定义方法是不恰当的
allowMarkerInterfaces: 是否检查空接口HideUtilityClassConstructor只定义了静态方法的类不应该定义一个公有的构造器DesignForExtension检查类是否被设计为可扩展的,如果是,则方法应该abstract、final或者是空的ThrowsCount检查抛出异常的数量
max: 定义抛出异常的最大数目StrictDuplicateCode检查类中是否有代码复制的问题
min: 允许代码重复的最小行数
charset: 文件所用的字符集BooleanExpressionComplexitymax: 布尔运算符在一条语句中允许出现的最大数目GenericIllegalRegexp检查代码中是否有不合适的引用形式或者字符
format: 定义检查所匹配的类型
ignoreCase: 是否区分大小写
ignoreComments: 是否忽略注释
message: 出现问题应该显示给用户的信息NewlineAtEndOfFile检查文件是否以一个新行结束
lineSeparator: 行分隔符的类型,windows是crlfUncommentedMain检查是否有没有被注掉或者删除的main方法
excludedClasses: 定义可以带main方法的类所匹配的名字形式UpperEll检查初始化长整型变量时,数字後是加了大写字母'L'而不是小写字母'l'ArrayTypeStyle检查再定义数组时,采用java风格还是c风格,例如:int[] num是java风格,int num[]是c风格
javaStyle: 定义是否采用java风格定义数组FinalParameters检查参数是否是常量
tokens: 定义检查的类型Indentation检查代码的缩进是否符合要求
basicOffset: 定义代码体相对于所属的代码体的缩进量
braceAdjustment: 定义括号的缩进量
caseIndent: 定义case的缩进量RequiredRegexp检查文件中是否存在相应的文字
format: 定义所匹配的形式usage.OneMethodPrivateField检查是否只有一个方法访问了私有变量
ignoreFormat: 定义可以忽略的变量所匹配的命名形式usage.UnusedLocalVariable检查是否有命名後没有使用的变量
ignoreFormat: 定义可以忽略的变量所匹配的命名形式usage.UnusedParameter检查是否有没有使用的参数
ignoreFormat: 定义可以忽略的变量所匹配的命名形式
ignoreCatch: 是否忽略catch中的参数
ignoreNonLocal: 是否忽略非本地的变量usage.UnusedPrivateField检查是否存在未被使用的私有成员变量
ignoreFormat: 定义可以忽略的变量所匹配的命名形式usage.UnusedPrivateMethod检查是否存在未被使用的私有方法
ignoreFormat: 定义可以忽略的变量所匹配的命名形式
 
一个checkstyle文件的例子:
  1. <?xml version="1.0"?>   
  2. <!DOCTYPE module PUBLIC   
  3.     "-//Puppy Crawl//DTD Check Configuration 1.2//EN"  
  4.     "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">   
  5.   
  6. <module name="Checker">   
  7.     <property name="basedir" value="${check.src}"/>   
  8.     <property name="localeCountry" value="CN"/>   
  9.     <property name="localeLanguage" value="cn"/>   
  10.     <metadata name="com.atlas-sw.eclipse" value="I like Sydney"/>   
  11.     <property name="severity" value="error"/>   
  12.     <module name="SuppressionFilter">   
  13.         <property name="file" value="${check.filter.file}"/>   
  14.     </module>   
  15.     <module name="PackageHtml">   
  16.         <property name="fileExtensions" value="java,properties"/>   
  17.     </module>   
  18.     <module name="Translation">   
  19.         <property name="severity" value="info"/>   
  20.     </module>   
  21.     <module name="StrictDuplicateCode">   
  22.         <property name="min" value="7"/>   
  23.         <property name="charset" value="UTF-8"/>   
  24.     </module>   
  25.     <module name="NewlineAtEndOfFile">   
  26.     </module>   
  27.     <module name="TreeWalker">   
  28.         <module name="AbstractClassName">   
  29.             <property name="format" value="^Abstract.*$|^.*Factory$"/>   
  30.         </module>   
  31.         <module name="ImportOrder">   
  32.             <property name="groups" value="java,javax"/>   
  33.             <property name="ordered" value="true"/>   
  34.             <property name="separated" value="true"/>   
  35.             <property name="caseSensitive" value="true"/>   
  36.         </module>   
  37.         <module name="ExecutableStatementCount">   
  38.             <property name="max" value="20"/>   
  39.             <property name="tokens" value="CTOR_DEF,METHOD_DEF,STATIC_INIT,INSTANCE_INIT"/>   
  40.         </module>   
  41.         <module name="AnonInnerLength">   
  42.             <property name="max" value="20"/>   
  43.         </module>   
  44.         <module name="EmptyForInitializerPad">   
  45.             <property name="option" value="space"/>   
  46.         </module>   
  47.         <module name="EmptyForIteratorPad">   
  48.             <property name="option" value="space"/>   
  49.         </module>   
  50.         <module name="MethodParamPad">   
  51.             <property name="allowLineBreaks" value="false"/>   
  52.             <property name="option" value="space"/>   
  53.             <property name="tokens" value="METHOD_DEF,CTOR_DEF"/>   
  54.         </module>   
  55.         <module name="NoWhitespaceAfter">   
  56.             <property name="allowLineBreaks" value="true"/>   
  57.         </module>   
  58.         <module name="NoWhitespaceBefore">   
  59.             <property name="allowLineBreaks" value="true"/>   
  60.         </module>   
  61.         <module name="TypecastParenPad">   
  62.             <property name="option" value="space"/>   
  63.         </module>   
  64.         <module name="ParenPad">   
  65.             <property name="option" value="nospace"/>   
  66.         </module>   
  67.         <module name="WhitespaceAfter">   
  68.             <property name="tokens" value="COMMA,SEMI,TYPECAST"/>   
  69.         </module>   
  70.         <module name="WhitespaceAround">   
  71.             <property name="tokens" value="ASSIGN"/>   
  72.         </module>   
  73.         <module name="ModifierOrder"/>   
  74.         <module name="RedundantModifier">   
  75.             <property name="tokens" value="METHOD_DEF,VARIABLE_DEF"/>   
  76.         </module>   
  77.         <module name="AvoidNestedBlocks">   
  78.             <property name="allowInSwitchCase" value="true"/>   
  79.         </module>   
  80.         <module name="MissingSwitchDefault"/>   
  81.         <module name="ModifiedControlVariable"/>   
  82.         <module name="RedundantThrows">   
  83.             <property name="allowUnchecked" value="true"/>   
  84.             <property name="allowSubclasses" value="true"/>   
  85.         </module>   
  86.         <module name="StringLiteralEquality"/>   
  87.         <module name="SuperClone"/>   
  88.         <module name="SuperFinalize"/>   
  89.         <module name="IllegalCatch"/>   
  90.         <module name="PackageDeclaration"/>   
  91.         <module name="ReturnCount">   
  92.             <property name="max" value="3"/>   
  93.         </module>   
  94.         <module name="DeclarationOrder"/>   
  95.         <module name="ParameterAssignment"/>   
  96.         <module name="DefaultComesLast"/>   
  97.         <module name="FallThrough"/>   
  98.         <module name="MultipleStringLiterals">   
  99.             <property name="allowedDuplicates" value="3"/>   
  100.         </module>   
  101.         <module name="MultipleVariableDeclarations"/>   
  102.         <module name="RequireThis">   
  103.             <property name="checkFields" value="false"/>   
  104.             <property name="checkMethods" value="false"/>   
  105.         </module>   
  106.         <module name="UnnecessaryParentheses"/>   
  107.         <module name="HideUtilityClassConstructor"/>   
  108.         <module name="ThrowsCount">   
  109.             <property name="max" value="7"/>   
  110.         </module>   
  111.         <module name="BooleanExpressionComplexity">   
  112.             <property name="max" value="7"/>   
  113.         </module>   
  114.         <module name="ClassDataAbstractionCoupling">   
  115.             <property name="max" value="7"/>   
  116.         </module>   
  117.         <module name="AvoidInlineConditionals"/>   
  118.         <module name="CovariantEquals"/>   
  119.         <module name="HiddenField">   
  120.         </module>   
  121.         <module name="InterfaceIsType">   
  122.             <property name="allowMarkerInterfaces" value="true"/>   
  123.         </module>   
  124.         <module name="UncommentedMain">   
  125.             <property name="excludedClasses" value="^$"/>   
  126.         </module>   
  127.         <module name="ArrayTypeStyle">   
  128.             <property name="javaStyle" value="true"/>   
  129.         </module>   
  130.         <module name="Indentation">   
  131.             <property name="basicOffset" value="4"/>   
  132.             <property name="braceAdjustment" value="0"/>   
  133.             <property name="caseIndent" value="4"/>   
  134.         </module>   
  135.         <module name="RequiredRegexp">   
  136.             <property name="format" value="^$"/>   
  137.         </module>   
  138.         <module name="usage.OneMethodPrivateField">   
  139.             <property name="ignoreFormat" value="^$"/>   
  140.         </module>   
  141.         <module name="usage.UnusedLocalVariable">   
  142.             <property name="ignoreFormat" value="^$"/>   
  143.         </module>   
  144.         <module name="usage.UnusedParameter">   
  145.             <property name="ignoreFormat" value="^$"/>   
  146.             <property name="ignoreCatch" value="true"/>   
  147.             <property name="ignoreNonLocal" value="false"/>   
  148.         </module>   
  149.         <module name="usage.UnusedPrivateField">   
  150.             <property name="ignoreFormat" value="^$"/>   
  151.         </module>   
  152.         <module name="usage.UnusedPrivateMethod">   
  153.             <property name="ignoreFormat" value="^$"/>   
  154.         </module>   
  155.         <property name="cacheFile" value="${checkstyle.dir}/cacheFile"/>   
  156.         <property name="fileExtensions" value="java,ejb,jpf"/>   
  157.         <property name="charset" value="UTF-8"/>   
  158.         <property name="tabWidth" value="4" />   
  159.         <module name="FileContentsHolder">   
  160.         </module>   
  161.         <module name="GenericIllegalRegexp">   
  162.             <property name="format" value="\s$"/>   
  163.             <property name="ignoreCase" value="true"/>   
  164.             <property name="ignoreComments" value="true"/>   
  165.             <property name="message" value="wrong used"/>   
  166.         </module>   
  167.         <module name="AvoidStarImport">   
  168.             <property name="excludes" value="java.io,java.util"/>   
  169.         </module>   
  170.         <module name="ConstantName">   
  171.             <property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>   
  172.         </module>   
  173.         <module name="EmptyBlock">   
  174.             <property name="option" value="stmt"/>   
  175.         </module>   
  176.         <module name="EqualsHashCode"/>   
  177.         <module name="FileLength">   
  178.             <property name="max" value="1000"/>   
  179.         </module>   
  180.         <module name="IllegalImport">   
  181.         </module>   
  182.         <module name="IllegalInstantiation"/>   
  183.         <module name="InnerAssignment"/>   
  184.         <module name="JavadocType">   
  185.             <property name="authorFormat" value="\S"/>   
  186.             <property name="scope" value="protected"/>   
  187.             <property name="versionFormat" value="\$Revision.*\$"/>   
  188.             <property name="excludeScope" value="public"/>   
  189.             <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>   
  190.         </module>   
  191.         <module name="JavadocMethod">   
  192.             <property name="scope" value="private"/>   
  193.             <property name="allowMissingParamTags" value="false"/>   
  194.             <property name="allowMissingThrowsTags" value="false"/>   
  195.             <property name="allowMissingReturnTag" value="false"/>   
  196.             <property name="tokens" value="METHOD_DEF"/>   
  197.             <property name="allowUndeclaredRTE" value="true"/>   
  198.             <property name="allowThrowsTagsForSubclasses" value="true"/>   
  199.         </module>   
  200.         <module name="JavadocVariable">   
  201.             <property name="scope" value="private"/>   
  202.         </module>   
  203.         <module name="JavadocStyle">   
  204.             <property name="scope" value="public"/>   
  205.             <property name="checkFirstSentence" value="true"/>   
  206.             <property name="checkEmptyJavadoc" value="true"/>   
  207.             <property name="checkHtml" value="true"/>   
  208.         </module>   
  209.         <module name="LeftCurly">   
  210.             <property name="option" value="eol"/>   
  211.             <property name="maxLineLength" value="80"/>   
  212.             <property name="tokens"    
  213.                 value="CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF"/>   
  214.         </module>   
  215.         <module name="LineLength">   
  216.             <property name="max" value="80"/>   
  217.             <property name="ignorePattern" value="^ *\* *[^ ]+$"/>   
  218.         </module>   
  219.         <module name="LocalFinalVariableName">   
  220.             <property name="format" value="^[A_Z][A-Z0-9]*(_[A_Z0-9]+)*$"/>   
  221.         </module>   
  222.         <module name="LocalVariableName">   
  223.             <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>   
  224.         </module>   
  225.         <module name="MemberName">   
  226.             <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>   
  227.             <property name="applyToPublic" value="true"/>   
  228.             <property name="applyToProtected" value="true"/>   
  229.             <property name="applyToPackage" value="true"/>   
  230.             <property name="applyToPrivate" value="true"/>   
  231.         </module>   
  232.         <module name="MethodLength">   
  233.             <property name="max" value="100"/>   
  234.             <property name="countEmpty" value="true"/>   
  235.             <property name="tokens" value="METHOD_DEF"/>   
  236.         </module>   
  237.         <module name="MethodName">   
  238.             <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>   
  239.         </module>   
  240.         <module name="ModifierOrder"/>   
  241.         <module name="NeedBraces">   
  242.         </module>   
  243.         <module name="OperatorWrap">   
  244.             <property name="tokens"    
  245.                 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"/>   
  246.             <property name="option" value="eol"/>   
  247.         </module>   
  248.         <module name="PackageName">   
  249.             <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>   
  250.         </module>   
  251.         <module name="ParameterName">   
  252.             <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>   
  253.         </module>   
  254.         <module name="ParameterNumber">   
  255.             <property name="max" value="10"/>   
  256.             <property name="tokens" value="METHOD_DEF,CTOR_DEF"/>   
  257.         </module>   
  258.         <module name="RedundantImport"/>   
  259.         <module name="RedundantModifier"/>   
  260.         <module name="RightCurly">   
  261.             <property name="option" value="alone"/>   
  262.             <property name="tokens" value="LITERAL_TRY"/>   
  263.         </module>   
  264.         <module name="SimplifyBooleanExpression"/>   
  265.         <module name="SimplifyBooleanReturn"/>   
  266.         <module name="StaticVariableName">   
  267.             <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>   
  268.         </module>   
  269.         <module name="TypeName">   
  270.             <property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>   
  271.             <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>   
  272.         </module>   
  273.         <module name="UnusedImports"/>   
  274.         <module name="UpperEll"/>   
  275.         <module name="VisibilityModifier">   
  276.             <property name="packageAllowed" value="false"/>   
  277.             <property name="protectedAllowed" value="false"/>   
  278.             <property name="publicMemberPattern" value="^seriaVersionUID$"/>   
  279.         </module>   
  280.         <module name="WhitespaceAround"/>   
  281.         <module name="FinalClass"/>   
  282.         <module name="MissingSwitchDefault"/>   
  283.         <module name="Indentation">   
  284.             <property name="basicOffset" value="4"/>   
  285.             <property name="braceAdjustment" value="0"/>   
  286.             <property name="caseIndent" value="0"/>   
  287.         </module>   
  288.         <module name="ArrayTrailingComma"/>   
  289.         <module name="CyclomaticComplexity">   
  290.             <property name="severity" value="ignore"/>   
  291.         </module>   
  292.         <module name="NestedIfDepth">   
  293.             <property name="max" value="1"/>   
  294.         </module>   
  295.         <module name="NestedTryDepth">   
  296.             <property name="max" value="3"/>   
  297.         </module>   
  298.         <module name="ExplicitInitialization"/>   
  299.     </module>   
  300. </module>