java代码检测checkstyle.xml

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

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

    <!-- Checks whether files end with a new line.                        -->
    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
    <module name="NewlineAtEndOfFile"/>

    <!-- Checks that property files contain the same keys.         -->
    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
    <module name="Translation"/>

    <!-- 禁止使用System.out.println -->
    <module name="RegexpMultiline">
        <property name="format" value="System\.(out)|(err)\.print(ln)?\("/>
    </module>

    <!-- 长度方面的检查 -->
    <!-- 文件长度不超过1500行 默认2000 -->
    <module name="FileLength">
        <property name="max" value="1500" />
    </module>

    <module name="TreeWalker">
        <!-- javadoc的检查 -->
        <!-- 检查所有的interface和class -->
        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
        <module name="JavadocMethod">
            <property name="allowMissingParamTags" value="true"/>
            <property name="allowMissingPropertyJavadoc" value="true"/>
            <property name="allowMissingJavadoc" value="true"/>
            <property name="scope" value="public"/>
            <property name="excludeScope" value="public"/>
        </module>
        <module name="JavadocType">
            <property name="allowMissingParamTags" value="true"/>
            <property name="scope" value="public"/>
            <property name="excludeScope" value="package"/>
        </module>
        <module name="JavadocVariable">
            <property name="scope" value="public"/>
            <property name="excludeScope" value="package"/>
        </module>
        <module name="JavadocStyle">
            <property name="checkFirstSentence" value="false"/>
            <property name="checkHtml" value="false"/>
        </module>

        <!-- 命名方面的检查 -->
        <!-- 局部的final变量,包括catch中的参数的检查 -->
        <module name="LocalFinalVariableName" />
        <!-- 局部的非final型的变量,包括catch中的参数的检查 -->
        <module name="LocalVariableName" />
        <!-- 包名的检查(只允许小写字母) -->
        <module name="PackageName">
            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
        </module>
        <!-- 仅仅是static型的变量(不包括static final型)的检查 -->
        <module name="StaticVariableName" />
        <!-- 类型(Class或Interface)名的检查 -->
        <module name="TypeName" />
        <!-- 非static型变量的检查 -->
        <module name="MemberName" />
        <!-- 方法名的检查 -->
        <module name="MethodName" />
        <!-- 方法的参数名 -->
        <module name="ParameterName " />
        <!-- 常量名的检查 -->
        <module name="ConstantName" />
        <!-- 没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 -->
        <module name="UnusedImports" />
        <module name="AvoidStarImport"/>
        <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
        <module name="RedundantImport"/>


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

        <!-- 空格检查 -->
        <!-- 允许方法名后紧跟左边圆括号"(" -->
        <module name="MethodParamPad" />
        <!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 -->
        <module name="TypecastParenPad" />
        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
        <module name="EmptyForIteratorPad"/>
        <module name="OperatorWrap"/>
        <module name="ParenPad"/>

        <!-- 关键字 -->
        <!--   
            每个关键字都有正确的出现顺序。比如 public static final XXX 是对一个常量的声明。如果使用 static 
            public final 就是错误的   
        -->
        <module name="ModifierOrder" />
        <!-- 多余的关键字 -->
        <!--<module name="RedundantModifier" />-->

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


        <!-- 编码方面的检查 -->
        <!-- 不许出现空语句 -->
        <module name="EmptyStatement" />
        <!-- 不允许魔法数 -->
        <module name="MagicNumber"/>
        <!-- 多余的throw -->
        <module name="RedundantThrows" />
        <!-- 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" />
        <!-- 不能catch java.lang.Exception -->
        <module name="IllegalCatch">
            <property name="illegalClassNames" value="java.lang.Exception" />
        </module>
        <!-- 确保一个类有package声明 -->
        <module name="PackageDeclaration" />
        <!-- 一个方法中最多有3个return -->
        <module name="ReturnCount">
            <property name="max" value="3" />
            <property name="format" value="^$" />
        </module>
        <!--   
            根据 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" />

        <!-- 杂项 -->

        <!-- 检查并确保所有的常量中的L都是大写的。因为小写的字母l跟数字1太象了 -->
        <module name="UpperEll" />
        <!-- 检查数组类型的定义是String[] args,而不是String args[] -->
        <module name="ArrayTypeStyle" />
        <!-- 检查java代码的缩进 默认配置:基本缩进 4个空格,新行的大括号:0。新行的case 4个空格 -->
        <module name="Indentation" />
        <!-- Todo 备注  -->
        <module name="TodoComment"/>
        <!-- 常量类检测 -->
        <module name="FinalClass"/>

        <!-- Checks for common coding problems               -->
        <!-- See http://checkstyle.sf.net/config_coding.html -->
        <module name="AvoidInlineConditionals"/>
        <module name="EqualsHashCode"/>
        <module name="IllegalInstantiation"/>
        <module name="InnerAssignment"/>
        <module name="MissingSwitchDefault"/>
        <module name="SimplifyBooleanExpression"/>
        <module name="SimplifyBooleanReturn"/>


    </module>
</module>  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值