……天天向上

          好的想法總是無窮無盡

          統計

          留言簿(1)

          閱讀排行榜

          評論排行榜

          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<!--
            7
            8  Checkstyle configuration that checks the sun coding conventions from:
            9
           10    - the Java Language Specification at
           11      http://java.sun.com/docs/books/jls/second_edition/html/index.html
           12
           13    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
           14
           15    - the Javadoc guidelines at
           16      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
           17
           18    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
           19
           20    - some best practices
           21
           22  Checkstyle is very configurable. Be sure to read the documentation at
           23  http://checkstyle.sf.net (or in your downloaded distribution).
           24
           25  Most Checks are configurable, be sure to consult the documentation.
           26
           27  To completely disable a check, just comment it out or delete it from the file.
           28
           29  Finally, it is worth reading the documentation.
           30
           31-->
           32
           33<module name="Checker">
           34    <!--
           35        重復代碼的檢查,超過8行就認為重復,UTF-8格式 本檢查一定要放在"TreeWalker"節點前,否則在
           36        Checkclipse中會無法使用。(在ant下可以)
           37    -->
           38    <module name="StrictDuplicateCode">
           39        <property name="min" value="8" />
           40        <property name="charset" value="UTF-8" />
           41    </module>
           42    <module name="TreeWalker">
           43        <!-- javadoc的檢查 -->
           44        <!-- 檢查所有的interface和class -->
           45        <module name="JavadocType" />
           46        <!-- 檢查所有方法的javadoc,可以不聲明RuntimeException -->
           47        <module name="JavadocMethod">
           48            <property name="allowUndeclaredRTE" value="true" />
           49        </module>
           50        <!-- 檢查某個變量的javadoc -->
           51        <module name="JavadocVariable" />
           52        <!-- 命名方面的檢查,它們都使用了Sun官方定的規則。 -->
           53        <!-- 類名(class 或interface) 的檢查 -->
           54        <module name="TypeName" />
           55        <!-- 變量的檢查 -->
           56        <module name="MemberName" />
           57        <!-- 方法名的檢查 -->
           58        <module name="MethodName" />
           59        <!-- 方法的參數名 -->
           60        <module name="ParameterName " />
           61        <!-- 常量名的檢查 -->
           62        <module name="ConstantName" />
           63        <!-- 長度方面的檢查 -->
           64        <!-- 文件長度不超過1500行 -->
           65        <module name="FileLength">
           66            <property name="max" value="1500" />
           67        </module>
           68        <!-- 每行不超過120個字-->
           69        <module name="LineLength">
           70            <property name="max" value="120" />
           71        </module>
           72        <!-- 方法不超過30行 -->
           73        <module name="MethodLength">
           74            <property name="tokens" value="METHOD_DEF" />
           75            <property name="max" value="30" />
           76        </module>
           77        <!-- 方法的參數個數不超過3個。 -->
           78        <module name="ParameterNumber">
           79            <property name="max" value="3" />
           80        </module>
           81        <!-- 多余的關鍵字 -->
           82        <module name="RedundantModifier" />
           83        <!-- 對區域的檢查 -->
           84        <!-- 不能出現空白區域 -->
           85        <module name="EmptyBlock" />
           86        <!-- 所有區域都要使用大括號。 -->
           87        <module name="NeedBraces" />
           88        <!-- 多余的括號 -->
           89        <module name="AvoidNestedBlocks">
           90            <property name="allowInSwitchCase" value="true" />
           91        </module>
           92        <!-- 編碼方面的檢查 -->
           93        <!-- 不許出現空語句 -->
           94        <module name="EmptyStatement" />
           95        <!-- 每個類都實現了equals()和hashCode() -->
           96        <module name="EqualsHashCode" />
           97        <!-- 不許使用switch -->
           98        <module name="IllegalToken">
           99            <property name="tokens" value="LITERAL_SWITCH" />
          100        </module>
          101        <!-- 不許內部賦值 -->
          102        <module name="InnerAssignment" />
          103        <!-- 絕對不能容忍魔法數 -->
          104        <module name="MagicNumber" />
          105        <!-- 循環控制變量不能被修改 -->
          106        <module name="ModifiedControlVariable" />
          107        <!-- 多余的throw -->
          108        <module name="RedundantThrows" />
          109        <!-- 不許使用未被簡化的條件表達式 -->
          110        <module name="SimplifyBooleanExpression" />
          111        <!-- 不許使用未被簡化的布爾返回值 -->
          112        <module name="SimplifyBooleanReturn" />
          113        <!-- String的比較不能用!= 和 == -->
          114        <module name="StringLiteralEquality" />
          115        <!-- if最多嵌套3層 -->
          116        <module name="NestedIfDepth">
          117            <property name="max" value="3" />
          118        </module>
          119        <!-- try最多被嵌套1層 -->
          120        <module name="NestedTryDepth" />
          121        <!-- clone方法必須調用了super.clone() -->
          122        <module name="SuperClone" />
          123        <!-- finalize 必須調用了super.finalize() -->
          124        <module name="SuperFinalize" />
          125        <!-- 不能catch java.lang.Exception -->
          126        <module name="IllegalCatch">
          127            <property name="illegalClassNames" value="java.lang.Exception" />
          128        </module>
          129        <!-- JUnitTestCase 的核心方法存在。 -->
          130        <module name="JUnitTestCase" />
          131        <!-- 一個方法中最多有3個return -->
          132        <module name="ReturnCount">
          133            <property name="max" value="3" />
          134        </module>
          135        <!-- 不許對方法的參數賦值 -->
          136        <module name="ParameterAssignment" />
          137        <!-- 不許有同樣內容的String -->
          138        <module name="MultipleStringLiterals" />
          139        <!-- 同一行不能有多個聲明 -->
          140        <module name="MultipleVariableDeclarations" />
          141        <!-- 各種量度 -->
          142        <!-- 布爾表達式的復雜度,不超過3 -->
          143        <module name="BooleanExpressionComplexity" />
          144        <!-- 類數據的抽象耦合,不超過7 -->
          145        <module name="ClassDataAbstractionCoupling" />
          146        <!-- 類的分散復雜度,不超過20 -->
          147        <module name="ClassFanOutComplexity" />
          148        <!-- 函數的分支復雜度,不超過10 -->
          149        <module name="CyclomaticComplexity" />
          150        <!-- NPath復雜度,不超過200 -->
          151        <module name="NPathComplexity" />
          152        <!-- 雜項 -->
          153        <!-- 禁止使用System.out.println -->
          154        <module name="GenericIllegalRegexp">
          155            <property name="format" value="System\.out\.println" />
          156            <property name="ignoreComments" value="true" />
          157        </module>
          158        <!-- 不許使用與代
          主頁: http://checkstyle.sourceforge.net/ 

          Checkstyle配置文件的簡要說明
          關于配置文件的各個模塊的更多細節,請參考CHECKSTYLE_HOME/docs/index.html 
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
          "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"
          >
          <!-- 對于所有的模塊來書,如果有這個模塊則說明檢測這一項,沒有則不檢測這一項 -->
          <!-- 所有的模塊中,其ROOT必須為Checker -->
          <module name="Checker">
          <!-- 檢驗每個包是否存在package.html文件-->
          <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
          <!--
          <module name="PackageHtml"/>
          -->
          <!-- 檢驗每個文件末尾是否有一個空行-->
          <!-- 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"/>
          <module name="TreeWalker">
          <!-- Checks for Javadoc comments. -->
          <!-- See http://checkstyle.sf.net/config_javadoc.html -->
          <!-- Checks Javadoc comments for method definitions.-->
          <module name="JavadocMethod">
          <property name="scope" value="public"/>
          <!-- 是否允許錯誤的參數聲明,true為允許,缺省為不允許 -->
          <property name="allowMissingParamTags" value="true"/>
          <!-- 是否允許錯誤的錯誤聲明,true為允許,缺省為不允許 -->
          <property name="allowMissingThrowsTags" value="true"/>
          <!-- 是否允許錯誤的返回類型聲明,true為允許,缺省為不允許 -->
          <property name="allowMissingReturnTag" value="true"/>
          </module>
          <!--Checks Javadoc comments for class and interface definitions.-->
          <module name="JavadocType"/>
          <!-- Checks that variables have Javadoc comments.-->
          <module name="JavadocVariable">
          <property name="scope" value="protected"/>
          </module>
          <!-- 檢查Javadoc的格式 -->
          <module name="JavadocStyle">
          <property name="scope" value="public"/>
          <!-- Comment的第一句的末尾是否要有一個句號,true必須有,default為true -->
          <property name="checkFirstSentence" value="false"/>
          <!-- 檢查錯誤的HTML腳本,比如不匹配,true檢查,default為true -->
          <property name="checkHtml" value="true"/>
          </module>
          <!-- Checks for Naming Conventions. -->
          <!-- See http://checkstyle.sf.net/config_naming.html -->
          <!-- 確省必須以Abstract開始或者以Factory結束 -->
          <!--
          <module name="AbstractClassName"/>
          -->
          <module name="ConstantName"/>
          <module name="LocalFinalVariableName"/>
          <module name="LocalVariableName"/>
          <module name="MemberName"/>
          <module name="MethodName"/>
          <module name="PackageName"/>
          <module name="ParameterName"/>
          <module name="StaticVariableName"/>
          <module name="TypeName"/>
          <!-- Checks for Headers -->
          <!-- See http://checkstyle.sf.net/config_header.html -->
          <!-- 檢查文件是否以指定文件開始,這里最好是放一些版權信息和工程描述 -->
          <!-- headerFile:指定的文件 -->
          <!-- ignoreLines:忽略哪些行,以","分隔 -->
          <!--
          <module name="Header">
          <property name="headerFile" value="java.header"/>
          <property name="ignoreLines" value="2, 3, 4, 5"/>
          </module>
          -->
          <!-- Following interprets the header file as regular expressions. -->
          <!--
          <module name="RegexpHeader"/>
          -->
          <!-- Checks for imports -->
          <!-- See http://checkstyle.sf.net/config_import.html -->
          <!-- 檢查使用*號的導入,默認為全部類 -->
          <module name="AvoidStarImport"/>
          <!-- 檢查是否有非法的包,確省檢查sun.*;對于某些包是不建議直接調用的 -->
          <module name="IllegalImport">
          <property name="illegalPkgs" value="sun.*"/>
          </module>
          <!-- 檢查多于的導入,如一個類導入了多次 -->
          <module name="RedundantImport"/>
          <!-- 檢查沒有使用的導入 -->
          <module name="UnusedImports"/>
          <!-- 導入排序 -->
          <!-- groups:分組,哪些是一組的 -->
          <!-- ordered:同一個組內是否排序,true排序,確省為true -->
          <!-- separated:各個組之間是否需要用空行分隔,確省為false -->
          <!-- caseSensitive:是否是大小寫敏感的,確省是 -->
          <!--
          <module name="ImportOrder">
          <property name="groups" value="java,javax"/>
          <property name="ordered" value="true"/>
          <property name="separated" value="true"/>
          <property name="caseSensitive" value="true"/>
          </module>
          -->
          <!-- Checks for Size Violations. -->
          <!-- See http://checkstyle.sf.net/config_sizes.html -->
          <!-- 檢查方法內可執行語句的個數,確省為30行 -->
          <!--
          <module name="ExecutableStatementCount">
          <property name="max" value="30"/>
          </module>
          -->
          <!-- 文件的最大行數,缺省為1500 -->
          <module name="FileLength">
          <property name="max" value="2000"/>
          </module>
          <!-- 每行的最大字符數,缺省為80 -->
          <module name="LineLength">
          <!-- 忽略指定格式的行,如*號開始的,等 -->
          <!--
          <property name="ignorePattern" value="^ *\* *[^ ]+$"/>
          -->
          <property name="max" value="120"/>
          </module>
          <!-- 方法的最大行數,缺省為150 -->
          <module name="MethodLength">
          <property name="max" value="200"/>
          <!-- 統計時是否包括空行和以//開始的注釋,缺省為統計(true)-->
          <property name="countEmpty" value="false"/>
          </module>
          <!-- 匿名類的最大行數,缺省為20 -->
          <module name="AnonInnerLength">
          <property name="max" value="60"/>
          </module>
          <!-- 檢查方法和構造子參數的最大個數,缺省為7 -->
          <module name="ParameterNumber"/>
          <!-- Checks for whitespace -->
          <!-- See http://checkstyle.sf.net/config_whitespace.html -->
          <module name="EmptyForInitializerPad"/>
          <module name="EmptyForIteratorPad"/>
          <module name="MethodParamPad">
          <property name="allowLineBreaks" value="true"/>
          </module>
          <module name="NoWhitespaceAfter"/>
          <module name="NoWhitespaceBefore"/>
          <module name="OperatorWrap"/>
          <module name="ParenPad"/>
          <module name="TypecastParenPad"/>
          <module name="TabCharacter"/>
          <module name="WhitespaceAfter"/>
          <module name="WhitespaceAround"/>
          <!-- Modifier Checks -->
          <!-- See http://checkstyle.sf.net/config_modifiers.html -->
          <!-- 要求JLS suggestions -->
          <!--
          <module name="ModifierOrder"/>
          -->
          <module name="RedundantModifier"/>
          <!-- Checks for blocks. You know, those {}'s -->
          <!-- See http://checkstyle.sf.net/config_blocks.html -->
          <!-- 檢查空塊 -->
          <!--
          <module name="EmptyBlock"/>
          -->
          <module name="LeftCurly"/>
          <!-- 檢查只有必須有{},確省為必須,主要在if,else時有這樣的情況 -->
          <module name="NeedBraces"/>
          <!-- 檢查"}",確省在同一行 -->
          <module name="RightCurly">
          <property name="option" value="alone"/>
          </module>
          <!-- 檢查多余嵌套的{},請看文檔,不易說明 -->
          <module name="AvoidNestedBlocks"/>
          <!-- Checks for common coding problems -->
          <!-- See http://checkstyle.sf.net/config_coding.html -->
          <module name="AvoidInlineConditionals"/>
          <module name="CovariantEquals"/>
          <module name="DeclarationOrder"/>
          <module name="DefaultComesLast"/>
          <module name="DoubleCheckedLocking"/>
          <!--
          <module name="EmptyStatement"/>
          -->
          <module name="EqualsHashCode"/>
          <!-- 變量必須初始化為自己的類型,如果給一個Object類型的變量初始化為null會提示 -->
          <!--
          <module name="ExplicitInitialization"/>
          -->
          <module name="FallThrough"/>
          <!--
          <module name="FinalLocalVariable"/>
          -->
          <module name="HiddenField">
          <property name="ignoreConstructorParameter" value="true"/>
          <property name="ignoreSetter" value="true"/>
          </module>
          <!-- Exception, Throwable, RuntimeException是不允許catch的 -->
          <!--
          <module name="IllegalCatch"/>
          -->
          <module name="IllegalInstantiation"/>
          <!-- 
          <module name="IllegalToken"/>
          -->
          <module name="IllegalTokenText"/>
          <module name="IllegalType"/>
          <module name="InnerAssignment"/>
          <!--檢查直接數
          <module name="MagicNumber"/>
          檢查是否有構造子
          <module name="MissingCtor"/>
          -->
          <module name="MissingSwitchDefault"/>
          <module name="MultipleVariableDeclarations"/>
          <!--
          <module name="JUnitTestCase"/>
          <module name="NestedIfDepth"">
          <property name="max" value="5"/>
          </module>
          <module name="NestedTryDepth"">
          <property name="max" value="5"/>
          </module>
          <module name="PackageDeclaration"/>
          <module name="ReturnCount"/>
          -->
          <!-- 不能為參數付值 -->
          <!--
          <module name="ParameterAssignment"/>
          -->
          <module name="RedundantThrows"/>
          <!-- 不能理解的,好像是bug
          <module name="RequireThis"/>
          -->
          <module name="SimplifyBooleanExpression"/>
          <module name="SimplifyBooleanReturn"/>
          <module name="StringLiteralEquality"/>
          <module name="SuperClone"/>
          <module name="SuperFinalize"/>
          <module name="UnnecessaryParentheses"/>
          <!-- Checks for class design -->
          <!-- See http://checkstyle.sf.net/config_design.html -->
          <!-- 要求一個方法必須聲明為Extension的,否則必聲明為abstract, final or empty -->
          <!--
          <module name="DesignForExtension"/>
          -->
          <!-- 檢查private構造子是否聲明為final,這里有個問題,在Java中構造子是不能聲明為final的 -->
          <!--
          <module name="FinalClass"/>
          -->
          <!-- 要求一定要有一個構造子 -->
          <!--
          <module name="HideUtilityClassConstructor"/>
          -->
          <module name="InterfaceIsType"/>
          <!-- 檢查變量的可見性,確省只允許static final 為public,否則只能為private -->
          <module name="VisibilityModifier">
          <property name="packageAllowed" value="true"/>
          <property name="protectedAllowed" value="true"/>
          </module>
          <!--
          <module name="MutableException"/>
          -->
          <!-- 限制拋出聲明的指定數量,確省為1 -->
          <!--
          <module name="ThrowsCount"/>
          -->
          <!-- Miscellaneous other checks. -->
          <!-- See http://checkstyle.sf.net/config_misc.html -->
          <!-- 數組的聲明是否允許Java的類型,確省為允許,Java類型為String[] xx,C++的類型為String xx[]; -->
          <module name="ArrayTypeStyle"/>
          <!--
          <module name="FinalParameters"/>
          -->
          <!-- 一般性的代碼問題,不好的習慣等,可以多 -->
          <!-- 文件中使用了System.out.print等-->
          <module name="GenericIllegalRegexp">
          <property name="format" value="System\.out\.print"/>
          <property name="message" value="bad practice of use System.out.print"/>
          </module>
          <module name="GenericIllegalRegexp">
          <property name="format" value="System\.exit"/>
          <property name="message" value="bad practice of use System.exit"/>
          </module>
          <module name="GenericIllegalRegexp">
          <property name="format" value="printStackTrace"/>
          <property name="message" value="bad practice of use printStackTrace"/>
          </module>
          <!-- 關于Task,你可以聲明自己的Task標識 -->
          <module name="TodoComment">
          <property name="format" value="TODO"/>
          </module>
          <!-- 強迫//注釋必須如何,入下要求只能有一行,具體看文檔 -->
          <!--
          <module name="TrailingComment">
          <property name="format" value="^\\s*$"/>
          </module>
          -->
          <!-- main方法經常會在debug時使用,但發行版本的時候可能并不需要這個方法,提示 -->
          <!--
          <module name="UncommentedMain"/>
          -->
          <!-- 當定義一個常量時,希望使用大寫的L來代替小寫的l,原因是小寫的l和數字1很象 -->
          <module name="UpperEll"/>
          <!-- 檢查正確的縮進,這個更象是個人習慣 -->
          <!--
          <module name="Indentation">
          <property name="braceAdjustment" value="0"/>
          </module>
          -->
          <!-- Checks For Metrics -->
          <!-- See http://checkstyle.sf.net/config_metrics.html -->
          <!-- 檢查嵌套復雜度 -->
          <module name="CyclomaticComplexity">
          <property name="max" value="12"/>
          </module>
          </module>
          </module>
          Checkstyle常見的輸出結果
          1.Type is missing a javadoc commentClass 
          缺少類型說明
          2.“{” should be on the previous line
          “{” 應該位于前一行
          3.Methods is missing a javadoc comment
          方法前面缺少javadoc注釋
          4.Expected @throws tag for “Exception”
          在注釋中希望有@throws的說明
          5.“.” Is preceeded with whitespace “.”
          前面不能有空格
          6.“.” Is followed by whitespace“.”
          后面不能有空格
          7.“=” is not preceeded with whitespace
          “=” 前面缺少空格
          8.“=” is not followed with whitespace 
          “=” 后面缺少空格
          9.“}” should be on the same line 
          “}” 應該與下條語句位于同一行
          10.Unused @param tag for “unused”
          沒有參數“unused”,不需注釋
          11.Variable “CA” missing javadoc
          變量“CA”缺少javadoc注釋
          12.Line longer than 80characters 
          行長度超過80
          13.Line contains a tab character
          行含有”tab” 字符
          14.Redundant “Public” modifier
          冗余的“public” modifier
          15.Final modifier out of order with the JSL
          suggestionFinal modifier的順序錯誤
          16.Avoid using the “.*” form of import
          Import格式避免使用“.*”
          17.Redundant import from the same package
          從同一個包中Import內容
          18.Unused import-java.util.list
          Import進來的java.util.list沒有被使用
          19.Duplicate import to line 13
          重復Import同一個內容
          20.Import from illegal package
          從非法包中 Import內容
          21.“while” construct must use “{}”
          “while” 語句缺少“{}”
          22.Variable “sTest1” must be private and have accessor method
          變量“sTest1”應該是private的,并且有調用它的方法
          23.Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$” 
          變量“ABC”不符合命名規則“^[a-z][a-zA-Z0-9]*$”
          24.“(” is followed by whitespace 
          “(” 后面不能有空格
          25.“)” is proceeded by whitespace
          “)” 前面不能有空格
           

          碼同行的注釋 
          -->
          159        <module name="TrailingComment" />
          160    </module>
          161    <!-- 檢查翻譯文件 -->
          162    <module name="Translation" />
          163</module>
          164



          checkStyle結果分析

          參考:http://commons.apache.org/jelly/libs/http/checkstyle-report.html

          1.Missing a Javadoc comment:缺少JavaDoc注釋
          2.First sentence should end with a period:你的注釋的第一行文字結束應該加上一個"."
          3.Expected @throws tag for 'Exception':在注釋中希望有@throws的說明,在方法前得注釋中添加這樣一行:* @throws Exception if has error(異常說明)
          4.Parameter docType should be final:參數docType應該為final類型  解決方法:在參數docType前面加個final
          5.Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$”變量“ABC”不符合命名規則“^[a-z][a-zA-Z0-9]*$”解決方法:把這個命名改成符合規則的命名 “aBC”
          6.Utility classes should not have a public or default constructor. 接口中的內部類中不應該有公共的或者默認的構造方法
          解決方法:在內部類中,定義一個私有的構造方法,然后內部類聲明為final類型。如果前面有static,那么final還必須放在static之后
          7.'{' is not preceded with whitespace.大括號后面必須空一格

          8.'public' modifier out of order with the JLS suggestions.   public順序錯誤

          9.Method 'deleteChild' is not designed for extension - needs to be abstract, final or empty.  不是拓展或繼承的方法,必須指定abstract,final或空

           

           

          1Type is missing a javadoc commentClass  缺少類型說明

          2“{” should be on the previous line“{” 應該位于前一行。解決方法:把“{”放到上一行去

          3Methos is missing a javadoc comment 方法前面缺少javadoc注釋。解決方法:添加javadoc注釋 類似這樣:

          /**

               * set default mock parameter.(方法說明)

               * @param additionalParameters  parameter additional(參數名稱)

               * @return data manager(返回值說明)

               * @throws Exception if has error(異常說明)

               */

          4 Expected @throws tag for “Exception”在注釋中希望有@throws的說明

          解決方法:在方法前得注釋中添加這樣一行:* @throws Exception if has error(異常說明)

          5“.” Is preceeded with whitespace “.” 前面不能有空格。解決方法:把“(”前面的空格去掉

          6“.” Is followed by whitespace“.” 后面不能有空格。解決方法:把“)”后面的空格去掉

          7“=” is not preceeded with whitespace“=” 前面缺少空格。解決方法:在“=”前面加個空格

          8“=” is not followed with whitespace“=” 后面缺少空格。解決方法:在“=”后面加個空格

          9“}” should be on the same line“}” 應該與下條語句位于同一行。解決方法:把“}”放到下一行的前面

          10Unused @param tag for “unused”沒有參數“unused”,不需注釋

          解決方法:“* @param unused  parameter additional(參數名稱)” 把這行unused參數的注釋去掉“

          11Variable “CA” missing javadoc變量“CA”缺少javadoc注釋

          解決方法:在“CA“變量前添加javadoc注釋:/** CA. */(注意:一定記得加上“.”)

          12Line longer than 80characters行長度超過80  。解決方法:把它分成多行寫。必要時候,可以ctrl+shift+f

          13Line contains a tab character行含有”tab” 字符。快速解決方法:可以使用editplus中的format功能,把tab字符轉化為空格,然后保存Editplus英文版安裝文件在我機子上有。需要的可以來拷貝。注冊Editplus,點擊安裝文件中注冊的文件


          14Redundant “Public” modifier冗余的“public” modifier   。解決方法:冗余的“public”

          15Final modifier out of order with the JSL suggestion Final modifier的順序錯誤

          16Avoid using the “.*” form of importImport格式避免使用“.*”

          17Redundant import from the same package從同一個包中Import內容

          18Unused import-java.util.listImport進來的java.util.list沒有被使用。解決方法:去掉導入的多余的類

          19Duplicate import to line 13重復Import同一個內容    解決方法:去掉導入的多余的類

          20Import from illegal package從非法包中 Import內容

          21“while” construct must use “{}”  “while” 語句缺少“{}”

          22Variable “sTest1” must be private and have accessor method變量“sTest1”應該是private的,并且有調用它的方法

          23Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$”變量“ABC”不符合命名規則“^[a-z][a-zA-Z0-9]*$”解決方法:把這個命名改成符合規則的命名 “aBC”

          24“(” is followed by whitespace“(” 后面不能有空格 25“)”is proceeded by whitespace“)” 前面不能有空格

          解決方法:把前面或者后面的空格去掉

          25、First sentence should end with a period.解決方法:你的注釋的第一行文字結束應該加上一個"."。


          26、Redundant throws: 'NameNotFoundException' is subclass of 'NamingException'. 'NameNotFoundException '是'NamingException'的子類重復拋出異常。

          解決方法:如果拋出兩個異常,一個異常類是另一個的子類,那么只需要寫父類

          去掉NameNotFoundException異常,對應的javadoc注釋異常注釋說明也需要去掉


          27、Parameter docType should be final.  參數docType應該為final類型  解決方法:在參數docType前面加個final


          28、Line has trailing spaces.  多余的空行  解決方法:去掉這行空行


          29.Must have at least one statement.  至少一個聲明

          解決方法:} catch (NumberFormatException nfe) {

           LOG.error("Auto Renews the agreement failed", nfe);//異常捕捉里面不能為空,在異常里面加一句話。如打印等等

           

          30、'>' is not followed by whitespace.并且又有 '(' is preceded with whitespace.

          定義集合和枚舉的時候的時候,最后一個“>”后面要有空格,“(”前面不容許有空格。解決方法:去掉泛型


          31、Got an exception - java.lang.RuntimeException: Unable to get class information for @throws tag 'SystemException'.原因:不合理的throws。

          解決方法:要確保某些類型,如某些類、接口不被throws。把聲明的異常去掉。在實現類中拋出異常


          網上參考解決方法:1、這是CheckStyle報的錯。通常需要Refreh, clean/build這個Project. 如果不行,可以嘗試clean all projects, restart Eclipse.

          2、因為編譯好的類沒有在checkstyle的classpath中.所以, 只要將編譯好的class配置到在<checkstyle/>的classpath中就沒有這個問題了.另外, 還發現checkstyle的line length好像也有點問題, 明明沒有超過120個字符, 卻還是報錯.無奈, 我把Eclipse中java > code style > formatter中的Maximum line with改成了100, 然后format一下, 基本就沒有問題了


          32、File does not end with a newline.解決方法:刪掉報錯的類,新建一個同名的類,把代碼全部復制過去


          33、Utility classes should not have a public or default constructor. 接口中的內部類中不應該有公共的或者默認的構造方法

          解決方法:在內部類中,定義一個私有的構造方法,然后內部類聲明為final類型。如果前面有static,那么final還必須放在static之后


          34、Variable 'functionCode' must be private and have accessor methods.變量要改成private然后提供訪問的方法

          解決方法:給這些變量的修飾符改成private,然后提供set,get方法,并加上對應的方法javadoc注釋、參數注釋。并在返回值和參數類型前添加final。并把調用了這個變量的地方改成通過方法訪問


          35.  'X' hides a field.

          public class Foo
          {
              private int bar;

              public Foo(int bar)
              {
                  this.bar = bar;
              }

              public final int getBar()
              {
                  return bar;
              }
          }

          全局private int bar;和局部public Foo(int bar)的bar變量名字重復。
          解決方法:把方法里面的參數名稱改變下就可以了public Foo(int newBar)
              {
                  this.bar = newBar;
              }。

           

          36、Got an exception - Unexpected character 0xfffd in identifier

          這是因為CheckStyle不能識別制定的編碼格式。

          網上參考解決方法:

          1、Eclipse中可以配置,在Other-->checker中可以指定

                      2、可以修改checkstyle配置文件:

          <module name="Checker">

                      <property name="severity" value="warning"/>

          <property name="charset" value="UTF-8"/>

                                <module name="TreeWalker">

                      如果是UTF-8的話,就添加加粗的那條語句,就可以了。

          37、 Got an exception - java.lang.RuntimeException: Unable to get class information for @throws tag *whatever*.
              網上參考解決方法:選中CheckSytle的JavaDoc --> Method JavaDoc --> logLoadErrors。如果是CheckStyle自己加載時出錯的,打個Log就可以了,不要整出Errors嚇人。
             還有一處也可能包出同樣的錯誤。Coding Problems --> Redundant Throws --> logLoadErrors選中即可


          38、Expected @param tag for 'dataManager'.    缺少dataManager參數的注釋   解決方法:在注釋中添加@param  dataManager  DataManager

          網上一些其他錯誤的解答:
          1. Parameter X should be final.
          public class Foo
          {
              private int bar;

              public Foo(int bar)
              {
                  this.bar = bar;
              }

              public final int getBar()
              {
                  return bar;
              }
          }

          解釋:public Foo(int bar)的局部變量,被認為是不可改變的,檢查需要加上final關鍵字定義public Foo(final int bar)此錯誤,可以忽略不檢查。

          2. Redundant 'X' modifier.

          public interface CacheHRTreeService extends Manager {

           /**
            * Organization Tree
            * @param orgDto
            * @return
            * @throws Exception
            */
           public void setOrganization(OrganizationDTO orgDto) throws Exception;

           /**
            * Organization Tree
            * @return
            * @throws Exception
            */
           public OrganizationDTO getOrganization() throws Exception;
          ......
          }

          解釋:多余的字段。public OrganizationDTO getOrganization() throws Exception;此時public為多余的字段,因為interface定義的時候,就是public的。

          需要檢查。

          3. - Class X should be declared as final.

          解釋:對于單例設計模式,要求返回唯一的類對象。但是HRFactory和ContextFactory為優化的兩個類,不需求檢查。
          其他的單例類,依然需要進行檢查。

          4. - Method 'addChildrenId' is not designed for extension - needs to be
            abstract, final or empty.

          解釋:通過父類繼承的,此類有點特殊可以忽略此類。

          5. Variable 'id' must be private and have accessor methods.解釋:BaseHRDTO類,為父類,屬性給子類繼承,比較特殊。但是其他的類,聲名需要加上范圍'private'關鍵字。需要檢查。

          6. -Array brackets at illegal position.解釋:代碼寫法,習慣不一樣。需要檢查,僅僅提示




          配置參考說明:

          posted on 2012-05-24 17:50 japper 閱讀(10089) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 乐安县| 舒城县| 德保县| 改则县| 舞阳县| 桦川县| 沂水县| 峨眉山市| 南京市| 岳普湖县| 衢州市| 旌德县| 繁昌县| 巴彦县| 晋州市| 神池县| 两当县| 兴业县| 吉林省| 高淳县| 沾益县| 阜阳市| 山西省| 万山特区| 东平县| 汪清县| 阳朔县| 阿巴嘎旗| 广灵县| 龙口市| 麻江县| 徐水县| 宣城市| 璧山县| 金秀| 厦门市| 通许县| 曲靖市| 白朗县| 安康市| 尼勒克县|