<?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>