Eclipse中使用Checkstyle,checkstyle外掛程式檢查java代碼的自訂設定檔:

來源:互聯網
上載者:User

摘要:近來項目組在搞代碼檢查,所以領導讓把checkstyle這個外掛程式搞明白,現在我把我們寫的自訂的checkstyle.xml檔案記錄一下,以便大家可以一起使用:

一:要使用checkstyle外掛程式在eclipse中檢查java代碼,那必須的先安裝eclipse的checkstyle外掛程式,如何安裝,我相信大家知道,這裡就不多說了

二:下面就是自訂的checkstyle.xml檔案(這個是核心)

<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">  <!--      This configuration file was written by the eclipse-cs plugin configuration editor  -->  <!--      Checkstyle-Configuration: check      Description: none  -->  <module name="Checker"><property name="severity" value="error"/><property name="charset" value="UTF-8"/><message key="general.exception" value="有一個異常 - {0}  "/><message key="general.fileNotFound" value="檔案沒找到!"/> <!--章節2.2A  --><!-- 不允許使用TAB縮排,此規則必須在<TreeWalker>標籤外 --><module name="FileTabCharacter">    <property name="severity" value="error"/>    <property name="eachLine" value="true"/>    <message key="containsTab" value="本行包含 tab 字元,違反編碼規範2.2章節"/></module><!--章節3.1.1  --><!-- 檢查每個java package中是否有java注釋檔案,預設是允許一個package-info.java,也可以通過allowLegacy屬性配置允許package.html。此規則必須在<TreeWalker>標籤外 --><module name="JavadocPackage" /><module name="TreeWalker">    <property name="severity" value="error"/>      <property name="tabWidth" value="4"/>      <message key="general.exception" value="有一個異常 - {0}"/>        <!--章節1.2.2 -->    <!-- 修飾符順序檢測 -->    <module name="ModifierOrder">      <message key="mod.order" value="''{0}'' 修飾符順序錯誤.違反編碼規範1.2.2章節"/>      <message key="annotation.order" value="''{0}'' 注釋修飾符不能在非注釋修飾符前面."/>      </module>        <!--章節2.2B  --><!-- 縮排風格-->   <module name="Indentation">    <property name="severity" value="error"/>    <property name="basicOffset" value="4"/>    <message key="indentation.error" value="你縮排了{1}個空格,正確應該縮排 {2}個空格,違反編碼規範2.2章節"/>    <!-- 子級縮排 -->    <message key="indentation.child.error" value="你縮排了{1}個空格,正確應該縮排 {2}個空格,違反編碼規範2.2章節"/>    </module><!--章節2.3  --><!-- 頁寬-->    <module name="LineLength">      <property name="max" value="80"/>      <message key="maxLineLen" value="行字元數超過80個.違反編碼規範2.3章節"/>      </module>     <!--章節2.4 --> <!--操作符換行策略檢查-->    <module name="OperatorWrap">    <property name="severity" value="error"/>    <property name="option" value="nl"/>    <property name="tokens" value="ASSIGN,BAND,BOR,DIV,EQUAL,GE,GT,LAND,LE,LOR,LT,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS,PLUS_ASSIGN,QUESTION,STAR,STAR_ASSIGN"/>    <message key="line.after" value="''{0}'沒有放在新行之首,違反編碼規範2.4章節"/>    </module>     <!--章節2.6  -->    <module name="ParenPad">    <property name="severity" value="error"/>    <property name="tokens" value="LPAREN,RPAREN,CTOR_CALL,METHOD_CALL,SUPER_CTOR_CALL"/>    <message key="ws.followed" value="''{0}'' 後面有空格,違反編碼規範2.6章節"/>    <message key="ws.preceded" value="''{0}''前面有空格,違反編碼規範2.6章節"/>    </module>        <module name="TypecastParenPad">    <property name="severity" value="error"/>    <property name="tokens" value="RPAREN,TYPECAST"/>    <message key="ws.followed" value="''{0}''後面多一個空格,違反編碼規範2.6章節"/>    <message key="ws.preceded" value="''{0}''前面多一個空格,違反編碼規範2.6章節"/>    </module>        <module name="WhitespaceAfter">    <property name="severity" value="error"/>    <property name="tokens" value="COMMA,SEMI"/>    <message key="ws.notFollowed" value="''{0}''後面多一個空格,違反編碼規範2.6章節"/>    </module>        <module name="WhitespaceAround">    <property name="severity" value="error"/>    <property name="tokens" value="RCURLY,LITERAL_ASSERT,LITERAL_ASSERT,LITERAL_CATCH,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_RETURN,LITERAL_SYNCHRONIZED,LITERAL_TRY,LITERAL_WHILE"/>    <property name="allowEmptyConstructors" value="true"/>    <property name="allowEmptyMethods" value="true"/>    <message key="ws.notPreceded" value="''{0}'' 關鍵字前少一個空格,違反編碼規範2.6章節"/>    <message key="ws.notFollowed" value="''{0}'' 關鍵字後少一個空格,違反編碼規範2.6章節"/>    </module><!--章節2.7 --><!-- 每行語句數量--><module name="OneStatementPerLine"><!--模組的中繼資料類型設定,經過測試發現該標籤沒用--><metadata name="net.sf.eclipsecs.core.comment" value="Coding Problems-> Only one statement per line allowed" /><message key="multiple.statements.line" value="禁止一行有多句代碼,違反編碼規範2.7章節" /></module><!--章節2.8 --><!-- 每行變數聲明數量-->    <module name="MultipleVariableDeclarations">      <property name="severity" value="error"/>      <message key="multiple.variable.declarations.comma" value="每一個變數的定義必須在它的聲明處,且在同一行,違反編碼規範2.8章節"/>      <message key="multiple.variable.declarations" value="每一行只能定義一個變數,違反編碼規範2.8章節"/>      </module> <!--章節2.9.1  -->    <!-- Checks the placement of right curly braces ('}') for  else, try, and catch tokens. The policy to verify is specified using property  option.         option: 右大括弧是否單獨一行顯示        tokens: 定義檢查的類型  -->      <module name="RightCurly">       <property name="option" value="alone"/>    <property name="severity" value="error"/>         </module>         <!--章節2.9.1  -->      <!-- 檢查左側大括弧 左側大括弧必須放在前一行代碼的行尾 --> <module name="LeftCurly"> <property name="severity" value="error"/> <message key="line.previous" value="左側大括弧沒有放在前一行代碼的行尾,違反編碼規範2.9.1章節"/> </module>  <!--章節2.9.2  --> <!-- 檢查代碼塊是否缺失大括弧-->    <module name="NeedBraces">      <message key="needBraces" value="''{0}'' 結構沒有用大括弧 '''{}'''s,違反編碼規範2.9.2章節"/>      </module>        <!-- 章節3.2 -->    <!-- 對檔案頭的注釋進行檢查 -->            <!--章節3.3  --><!--對類和介面的javadoc注釋進行檢查-->    <module name="JavadocType">    <property name="severity" value="error"/>    <message key="type.missingTag" value="Javadoc 類型的注釋丟失 {0} 標籤.違反編碼規範3.3章節"/>    <message key="javadoc.missing" value="缺少 Javadoc 注釋.違反編碼規範3.3章節"/>    <message key="javadoc.unusedTagGeneral" value="未使用過的 Javadoc 標籤.違反編碼規範3.23章節"/>    <message key="javadoc.unusedTag" value="未使用過的 {0} 標籤for ''{1}''.違反編碼規範3.3章節"/>    <message key="type.tagFormat" value="Javadoc 類型標籤 {0}必須匹配模式 ''{1}''.違反編碼規範3.3章節"/>    </module><!--章節3.4,3.7  --> <!--public protect private變數的注釋進行檢查-->    <module name="JavadocVariable">    <property name="severity" value="error"/>    <property name="scope" value="public"/>    <message key="javadoc.missing" value="變數注釋:缺少Javadoc注釋,違反編碼規範3.4章節"/>    </module>    <module name="JavadocVariable">    <property name="severity" value="error"/>    <property name="scope" value="protected"/>    <message key="javadoc.missing" value="變數注釋:缺少Javadoc注釋,違反編碼規範3.4章節"/>    </module>    <module name="JavadocVariable">    <property name="severity" value="error"/>    <message key="javadoc.missing" value="變數注釋:缺少Javadoc注釋,違反編碼規範3.4章節"/>    </module> <!--章節3.5  --><!-- 檢查所有方法的javadoc,可以不聲明RuntimeException --> <module name="JavadocMethod"> <property name="allowUndeclaredRTE" value="true"/><!--允許get set 方法沒有注釋--> <property name="allowMissingPropertyJavadoc" value="true"/> <message key="javadoc.missing" value="方法注釋:缺少Javadoc注釋,違反編碼規範3.5章節"/> </module>    <!-- 命名規範 -->    <!--章節4.2 --><!-- 包名命名規範 --><module name="PackageName">        <!-- <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>  -->     <property name="format" value="^org\.neris\.[a-z]+(\.[a-z]+)+$"/>          <message key="name.invalidPattern" value="包名 ''{0}'' 不符合org.neris.項目名.模組名,違反編碼規範4.2章節"/>      </module>     <!--章節4.3,4.4  --> <!-- 類的命名,匹配規則預設:(^[A-Z][a-zA-Z0-9]*$),必須以大寫字母開始 -->    <module name="TypeName">      <property name="tokens" value="CLASS_DEF"/>    <message key="name.invalidPattern" value="類名 ''{0}''沒有通過大駝峰命名法命名,具體名稱應使用意義完整的英文描述,違反編碼規範4.3章節"/>     </module>            <!-- 介面命名,匹配規則預設:(^[A-Z][a-zA-Z0-9]*$),必須以大寫字母開始 --> <module name="TypeName">  <property name="tokens" value="INTERFACE_DEF"/> <message key="name.invalidPattern" value="介面名 ''{0}''沒有通過大駝峰命名法命名,具體名稱應使用意義完整的英文描述,違反編碼規範4.3章節"/>  </module><!--章節4.6 -->    <!-- 方法名命名 -->    <module name="MethodName">          <property name="severity" value="error"/>          <property name="format" value="(^[a-z][a-zA-Z0-9]*$)"/>          <message key="name.invalidPattern" value="方法名 ''{0}''沒有通過小駝峰命名法命名,具體名稱應使用意義完整的英文描述.違反編碼規範4.6章節"/>           </module>  <!--章節4.7 --><!-- 局部變數命名 -->    <module name="LocalVariableName">           <property name="format" value="(^[a-z][a-zA-Z0-9]*$)"/>      <message key="name.invalidPattern" value="變數名 ''{0}''沒有通過小駝峰命名法命名,具體名稱應使用意義完整的英文描述.違反編碼規範4.7章節"/>          </module>        <!-- 局部的final變數,包括catch中的參數的檢查 -->       <module name="LocalFinalVariableName" >  <property name="severity" value="error"/>    <message key="name.invalidPattern" value="變數名 ''{0}''沒有通過小駝峰命名法命名,具體名稱應使用意義完整的英文描述.違反編碼規範4.7章節"/></module>    <!-- 變數命名 -->    <module name="MemberName">      <message key="name.invalidPattern" value="變數名 ''{0}''沒有通過小駝峰命名法命名,具體名稱應使用意義完整的英文描述.違反編碼規範4.7章節"/>      </module>    <!-- 靜態變數命名 --><module name="StaticVariableName">    <message key="name.invalidPattern" value="變數名 ''{0}''沒有通過小駝峰命名法命名,具體名稱應使用意義完整的英文描述.違反編碼規範4.7章節"/>    </module>    <!-- 陣列變數命名 -->    <module name="ArrayTypeStyle">    <property name="severity" value="error"/>    <message key="array.type.style" value="數組定義沒有採取int[] index這種方式,違反編碼規範4.7.2章節"/>    </module><!--章節4.8 --><!-- 常量命名-->    <module name="ConstantName">    <property name="severity" value="error"/>    <message key="name.invalidPattern" value="常量 ''{0}'' 常量名違反編碼規範4.8章節."/>    </module><!--章節5.1 -->    <!-- import語句不使用萬用字元 -->    <module name="AvoidStarImport">    <property name="severity" value="error"/>    <message key="import.avoidStar" value="引用包時不能使用*號.違反編碼規範5.1章節"/>    </module>      <!--章節5.2 -->    <!-- 魔法數檢測-->    <module name="MagicNumber">      <property name="severity" value="error"/>      <message key="magic.number" value="''{0}'' 是一個魔法數(即常數).違反編碼規範5.2章節"/>      </module><!--章節5.4 -->    <!-- 多餘的關鍵字,包含不適用this作為關鍵字 -->     <module name="RedundantModifier">      <message key="redundantModifier" value="''{0}'' 多餘的修飾符.違反編碼規範5.4章節"/>      </module><!--章節5.5 --><!-- 重載父類方法 --><module name="MissingOverride"><message key="annotation.missing.override" value="重載方法缺少@Override,違反編碼規範5.5章節" /><message key="tag.not.valid.on" value="注釋-> Javadoc {0}標籤在這個位置是無效的." /></module><!--章節5.6 --><!--判斷語句使用  -->    <module name="SimplifyBooleanExpression">    <property name="severity" value="error"/>    <message key="simplify.expression" value="存在布爾冗餘,違法編碼規範5.6章節."/>    </module><!--章節5.7 --> <!-- 檢查switch語句是否忘記了default標籤 --> <module name="MissingSwitchDefault" > <property name="severity" value="error"/>    <message key="missing.switch.default" value="switch 語句後邊沒有 default 語句.違法編碼規範5.7章節"/> </module>  <!-- 檢查switch語句中default標籤的順序 --> <module name="DefaultComesLast">    <property name="severity" value="error"/>    <message key="default.comes.last" value="建議Default 放在 switch 語句的最後."/>    </module><!--章節5.9 --> <!-- 禁止使用System.out.println --> <module name="Regexp"> <property name="format" value="System\.out\.println"/>  <property name="message" value="不要使用 System.out 與 System.out 進行控制台列印,應該使用日誌工具類(如:log4j)進行統一記錄或者列印,違法編碼規範5.9章節"/> <property name="illegalPattern" value="true"/> </module> <!-- 禁止使用System.err.println --> <module name="Regexp"> <property name="format" value="System\.err\.println"/>  <property name="message" value="不要使用 System.out 與 System.err 進行控制台列印,應該使用日誌工具類(如:log4j)進行統一記錄或者列印,違法編碼規範5.9章節"/> <property name="illegalPattern" value="true"/> </module>  <!--章節5.10 --><!-- 不允許用main方法測試-->    <module name="UncommentedMain">        </module><!--章節5.11 -->    <!-- NeedBraces 檢查是否應該使用括弧的地方沒有加括弧        tokens: 定義檢查的類型 -->      <module name="NeedBraces"/>      </module>  </module>


三:安裝好eclipse的checkstyle外掛程式後,你就可以把checkstyle.xml檔案添加進去,如何添加,網上有很多文檔

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.