checkstyle的xml配置

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


<module name="Checker">
     <!--1.
         重複代碼的檢查,超過8行就認爲重複,UTF-8格式 本檢查一定要放在"TreeWalker"節點前,否則在
         Checkclipse中會無法使用。)注意:StrictDuplicateCode連個方法,只選擇一個。
     -->
     <module name="StrictDuplicateCode">
        <property name="min" value="8" />
        <property name="charset" value="UTF-8" />
  </module>

 <!--2. 檢查類中是否有代碼複製的問題 -->
 <module name="StrictDuplicateCode">
  <property name="min" value="20"/>
  <!--<property name="charset" value="UTF-8"/>-->
  <message key="duplicates.lines" value="從第{2}開始,有{0}行相同代碼 與{1}中重複."/>
 </module>

<module name="TreeWalker">
        <!-- javadoc的檢查 -->
       <!-- 檢查類或者接口的javadoc註釋,author不能爲administrator-->
  <module name="JavadocType">
   <property name="authorFormat" value="[^administrator]"/>
   <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>
  </module>
  <!-- 檢查所有方法的javadoc,可以不聲明RuntimeException -->
        <module name="JavadocMethod">
            <property name="scope" value="private"/>    <!-- 方法定義私有變量,如果需要定義全局變量value值爲public -->  
            <property name="allowMissingParamTags" value="false"/>  <!-- 是否允許錯誤的參數聲明,true爲允許,缺省爲不允許 --> 
            <property name="allowMissingThrowsTags" value="false"/> <!-- 是否允許錯誤的錯誤聲明,true爲允許,缺省爲不允許 -->  
            <property name="allowMissingReturnTag" value="false"/> <!-- 是否允許錯誤的返回類型聲明,true爲允許,缺省爲不允許 -->
            <property name="tokens" value="METHOD_DEF"/>   <!-- 方法中出現標記 -->     
            <property name="allowUndeclaredRTE" value="true"/>  <!-- 方允許出現運行時異常,也就是說在編譯時允許出現異常 -->
            <property name="allowThrowsTagsForSubclasses" value="true"/> <!-- 是否允許創建子類聲明,true爲允許,缺省爲不允許 -->
        </module>
  <!-- 檢查某個變量的javadoc -->
        <module name="JavadocVariable" />
        <!-- 命名方面的檢查,它們都使用了Sun官方定的規則。 -->
        <!-- 類名(class 或interface) 的檢查 -->
  <!-- 定義類和接口的命名規則 -->
        <module name="TypeName">
   <property name="format" value="^[A-Z][a-zA-Z0-9]*$"/> 
   <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>
  </module>
  <!-- 不能使用*導入所需的類 -->
  <module name="AvoidStarImport"/>
  <!-- 檢查是否從非法的包中導入了類 -->
  <module name="IllegalImport"/>  
   <!-- 檢查是否導入的包沒有使用 -->
  <module name="UnusedImports"/> 
   <!-- 檢查修飾符的順序 -->
  <module name="ModifierOrder"/> 

  <!-- 檢查抽象類名 必須以Abstract開頭或者Factory結尾-->
  <module name="AbstractClassName">
            <property name="format" value="^Abstract.*$|^.*Factory$"/>
        </module>
        <!-- 變量的檢查 -->
        <module name="MemberName" />

   <!-- 包名的檢查(只允許小寫字母) -->  
        <module name="PackageName">   
   <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />   
  </module> 

        <!-- 定義方法名的命名規則 -->
  <module name="MethodName">    
   <property name="format" value="^[a-z][a-zA-Z]*$"/><!-- 方法名的檢查 -->
  </module>
  <!-- 檢查是否有沒有被注掉或者刪除的main方法 -->
  <module name="UncommentedMain"/>
  <!-- 檢查是否有靜態import -->
  <module name="AvoidStaticImport"/>
  <!-- 檢查一個可能爲null的字符串是否在equals()比較的左邊 -->
  <module name="EqualsAvoidNull"/>
        <!-- 檢查方法的參數名 -->
        <module name="ParameterName " />
        <!-- 檢查常量名的檢查 -->
        <module name="ConstantName" />
        <!-- 檢查長度方面的檢查 -->
        <!-- 檢查文件長度不超過1500行 -->
        <module name="FileLength">
            <property name="max" value="1500" />
        </module>
         <!-- 檢查每行不超過120個字-->
        <module name="LineLength">
            <property name="max" value="120" />
        </module>
  <!-- 檢查方法不超過30行 -->
        <module name="MethodLength">
            <property name="tokens" value="METHOD_DEF" />
            <property name="max" value="30" />
        </module>
        <!-- 檢查方法的參數個數不超過3個。 -->
        <module name="ParameterNumber">
            <property name="max" value="3" />
        </module>
        <!--檢查多餘的關鍵字 -->
        <module name="RedundantModifier" />
        <!-- 檢查對區域的檢查 -->
        <!-- 檢查不能出現空白區域 -->
        <module name="EmptyBlock" />
  <!-- 檢查是否使用了多餘的小括號 -->
  <module name="UnnecessaryParentheses"/>
  <!-- 檢查類中是否有聲明package -->
  <module name="PackageDeclaration"/>

        <!-- 所有區域都要使用大括號。 -->
        <!-- <module name="NeedBraces" />-->

  <!-- 檢查是否應該使用括號的地方沒有加括號 -->
  <module name="NeedBraces">  
   <property name="tokens" value="CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF"/>
  </module>
  <!-- 檢查多餘嵌套 -->
  <module name="RightCurly">
   <property name="option" value="alone"/> 
            <property name="tokens" value="LITERAL_TRY"/>
  </module>

        <!-- 檢查多餘的括號 -->
        <module name="AvoidNestedBlocks">
            <property name="allowInSwitchCase" value="true" />
        </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="EmptyStatement" />
        <!-- 每個類都實現了equals()和hashCode() -->
         <module name="EqualsHashCode" />
         <!-- 不許使用switch -->
         <module name="IllegalToken">
            <property name="tokens" value="LITERAL_SWITCH" />
        </module>
        <!-- 不許內部賦值 -->
        <module name="InnerAssignment" />
        <!-- 檢查魔鬼數字,絕對不能容忍魔法數 -->
        <module name="MagicNumber" />
        <!-- 循環控制變量不能被修改或者說是檢查循環變量是否被修改 -->
        <module name="ModifiedControlVariable" />
  <!-- 多餘的throw -->
        <module name="RedundantThrows" />
        <!-- 不許使用未被簡化的條件表達式 -->
        <module name="SimplifyBooleanExpression" />
        <!-- 不許使用未被簡化的布爾返回值 -->
        <module name="SimplifyBooleanReturn" />
        <!-- String的比較不能用!= 和 == -->
        <module name="StringLiteralEquality" />
  <!-- 檢查是否拋出了未聲明的異常 -->
  <module name="IllegalThrows"/>
  <!-- 檢查依賴是否否完整 eg:switch代碼的case中是否缺少break,return,throw和continue -->
  <module name="MissingCtor"/>
        <!-- if最多嵌套3層 -->
        <module name="NestedIfDepth">
            <property name="max" value="3" />
        </module>
        <!-- try最多被嵌套1層 -->
        <module name="NestedTryDepth" />
        <!-- 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>
        <!-- JUnitTestCase 的核心方法存在。 -->
        <module name="JUnitTestCase" />
        <!-- 一個方法中最多有3個return -->
        <module name="ReturnCount">
            <property name="max" value="3" />
        </module>
        <!-- 不許對方法的參數賦值 -->
        <module name="ParameterAssignment" />

        <!-- 不許有同樣內容的String -->
       <!-- <module name="MultipleStringLiterals" />-->

   <!-- 檢查一個文件中是否有多次出現的字符串 -->
  <module name="MultipleStringLiterals">
            <property name="allowedDuplicates" value="3"/>
        </module>

   <!-- 檢查switch語句是否忘記了default標籤 -->
  <module name="MissingSwitchDefault"/>

        <!-- 同一行不能有多個聲明 -->
        <module name="MultipleVariableDeclarations" />
        <!-- 各種量度 -->
        <!-- 布爾表達式的複雜度,不超過3 -->
        <module name="BooleanExpressionComplexity" />

        <!-- 類數據的抽象耦合,不超過7 -->
       <module name="ClassDataAbstractionCoupling" />
        <!-- 類的分散複雜度,不超過20 -->
        <module name="ClassFanOutComplexity" />
        <!-- 函數的分支(圈)複雜度,不超過20 -->
        <module name="CyclomaticComplexity" >
   <property name="max" value="20"/>
  </module>
       <!-- NPath複雜度,不超過200 -->
        <module name="NPathComplexity" />
        <!-- 雜項 -->
       <!-- 禁止使用System.out.println -->
        <module name="GenericIllegalRegexp">
            <property name="format" value="System\.out\.println" />
            <property name="ignoreComments" value="true" />
        </module>
  <!--檢查註釋文件,不允許使用與代碼同行的註釋-->
  <module name="TrailingComment" />
  <!-- 檢查switch語句是否忘記了default標籤 -->
  <module name="MissingSwitchDefault"/>
  
   <!-- 檢查初始化長整型變量時,數字後是加了大寫字母'L'而不是小寫字母'l' -->
  <module name="UpperEll"/>
</module>

發佈了12 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章