java checkstyle 导入_Checkstyle的配置详解
Checkstyle是一款檢查java程序代碼樣式的工具,可以有效的幫助我們檢視代碼以便更好的遵循代碼編寫標準,特別適用于小組開發時彼此間的樣式規范和統一。Checkstyle提供了高可配置性,以便適用于各種代碼規范,所以除了可以使用它提供的sun的代碼標準外,你也可以定制自己的標準。我們可以在eclipse中安裝checkstyle的插件,來方便我們的使用。
Checkstyle可以讓我們養成書寫良好代碼風格的習慣,代碼的整潔也減少了很多bad smell的產生。使用checkstyle的過程中可能需要經常的調整配置文件,有些check過于嚴格,可以根據實際情況取消一些代碼檢查。
Checkstyle的配置
Checkstyle配置是通過指定modules來應用到java文件的。modules是樹狀結構,以一個名為Checker的module作為root節點,一般的checker都會包括TreeWalker子module。我們可以參照checkstyle中的sun_checks.xml,這是根據sun的java語言規范寫的配置。
在xml配置文件中通過module的name屬性來區分module,module的Properties可以控制如何去執行這個module,每個property都有一個默認值,所有的check都有一個severity屬性,用它來指定check的level。TreeWalker為每個java文件創建一個語法樹,在節點之間調用submodules的Checks。
下面來看看standard checks中的一些具體用法。
Javadoc Comments
lJavadocPackage
檢查每個java package中是否有java注釋文件,默認是允許一個package-info.java,也可以通過allowLegacy屬性配置允許package.html。
lJavadocType
檢查類和接口的javadoc。默認不檢查author?和version tags。
lJavadocMethod
檢查方法和構造函數的javadoc。默認不檢查未使用的異常拋出。
lJavadocVariable
檢查變量的javadoc。
lJavadocStyle
檢查javadoc的格式。比如:javadoc的第一行是否以句號結束,javadoc除了tags外是否有description,檢查javadoc中的html格式。
lWriteTag
輸出javadoc中的tag。
Naming Conventions
lAbstractClassName
檢查抽象類名。
lClassTypeParameterName
檢查類的Parameter名。
lConstantName
檢查常量名。
lLocalFinalVariableName
檢查局部的final類型變量名,包括catch的參數。
lLocalVarableName
檢查局部的非final類型的變量名,包括catch的參數。
lMemberName
檢查非靜態變量。
lMethodName
檢查方法名。
lMethodTypeParameterName
檢查方法的參數名。
lPackageName
檢查包名。
lParameterName
檢查參數名。
lStaticVariableName
檢查靜態的,非final類型的變量名。
lTypeName
檢查類名和接口名。
Imports
lAvoidStarImport
檢查是否有使用*進行import。
lAvoidStaticImport
檢查是否有靜態import。比如是否導入了java.lang包中的內容。
lIllegalImport
檢查是否import了違法的包。默認拒絕import所有sun.*包。
lRedundanImport
檢查是否有重復的import。
lUnusedImports
檢查是否有未使用的import。
lImportOrder
檢查import的分組和順序。
lImportControl
Size Violations
l?????????ExecutableStatementCount
限制可執行代碼片段的長度。默認為30。
lFileLength
檢查java文件的長度。默認為2000。
lLineLength
檢查代碼行的長度。默認為80。
lMethodLength
檢查方法和構造函數的長度。默認為150。
lAnonInnerLength
檢查匿名內部類的長度。默認為20。
lParameterNumber
檢查方法和構造函數的參數個數。默認為7。
Whitespace
l????????GenericWhitespace
檢查周圍的空白。
l?????????EmptyForInitializerPad
檢查空的初始化位置的空白。比如for循環中的初始化。
l?????????EmptyForIteratorPad
檢查空的迭代位置的空白。
l?????????MethodParamPad
檢查方法簽名之前的空白。
l?????????NoWhitespaceAfter
檢查分隔符后的空白。
l?????????NoWhitespaceBefore
檢查分隔符前的空白。
l?????????OperatorWrap
檢查操作符的空白規則。
l?????????ParenPad
檢查圓括號的空白規則。
l?????????TypecaseParenPad
檢查強制轉型的圓括號的空白規則。
l?????????TabCharacter
檢查是否有Tab字符(’"t’)。
l?????????WhitespaceAfter
檢查分隔符是否在空白之后。
l?????????WhitespaceAround
檢查分隔符周圍是否有空白。
ModifierOrder
l?????????ModifierOrder
檢查修飾符的順序是否遵照java語言規范。
l?????????RedundantModifier
檢查接口和annotation中是否有重復的修飾符。
Block Checks
l?????????EmptyBlock
檢查空的代碼塊。
l?????????LeftCurly
檢查’{’和左邊的代碼塊是否在同一行。
l?????????NeedBraces
檢查是否需要大括號。主要是在if,else時的情況。
l?????????RightCurly
檢查’}’。
l?????????AvoidNestedBlocks
檢查不需要的嵌套’{}’。
Coding
l?????????ArrayTrailingComma
檢查數組初始化是否以逗號結束。
l?????????AvoidInlineConditionals
檢查inline的條件操作。
l?????????CovariantEquals
檢查類是否覆蓋了equals(java.lang.Object)。
l?????????DoubleCheckedLocking
檢查DCL的問題。
l?????????EmptyStatement
檢查空的代碼段。
l?????????EqualsAvoidNull
檢查一個可能為null的字符串是否在equals()比較的左邊。
l?????????EqualsHashCode
檢查類是否覆蓋了equals()和hashCode()。
l?????????FinalLocalVariable
檢查未改變過的局部變量是否聲明為final。
l?????????HiddenField
檢查局部變量或參數是否隱藏了類中的變量。
l?????????IllegalInstantiation
檢查是否使用工廠方法實例化。
l?????????IllegalToken
檢查非法的分隔符。
l?????????IllegalTokenText
檢查非法的分隔符的下個字符。
l?????????InnerAssignment
檢查子表達式中是否有賦值操作。
l?????????MagicNumber
檢查是否有“magic numbers”。
l?????????MissingSwitchDefault
檢查switch語句是否有default的clause。
l?????????ModifiedControlVariable
檢查循環控制的變量是否在代碼塊中被修改。
l?????????RedundantThrows
檢查是否有被重復拋出的異常。
l?????????SimplifyBooleanExpression
檢查是否有過度復雜的布爾表達式。
l?????????SimplifyBooleanReturn
檢查是否有過于復雜的布爾返回代碼段。
l?????????StringLiteralEquality
檢查字符串是否有用= =或!=進行操作。
l?????????NestedIfDepth
檢查嵌套的層次深度。
l?????????NestedTryDepth
檢查try的層次深度。
l?????????NoClone
檢查是否覆蓋了clone()。
l?????????NoFinalizer
檢查是否有定義finalize()。
l?????????SuperClone
檢查覆蓋的clone()是否有調用super.clone()。
l?????????SuperFinalize
檢查覆蓋的finalize()是否有調用super.finalize()。
l?????????IllegalCatch
檢查是否catch了不能接受的錯誤。
l?????????IllegalThrows
檢查是否拋出了未聲明的異常。
l?????????PackageDeclaration
檢查類中是否有聲明package。
l?????????JUnitTestCase
確保setUp(), tearDown()方法簽名的正確性。
l?????????ReturnCount
限制return代碼段的數量。
l?????????IllegalType
檢查未使用過的類。
l?????????DeclarationOrder
檢查類和接口中的聲明順序。
l?????????ParameterAssignment
檢查不允許的參數賦值。
l?????????ExplicitInitialization
檢查類和對象成員是否初始化為默認值。
l?????????DefaultComesLast
檢查default的clause是否在switch代碼段的最后。
l?????????MissingCtor
檢查類依賴。
l?????????FallThrough
檢查switch代碼的case中是否缺少break,return,throw和continue。
l?????????MultipleStringLiterals
檢查一個文件中是否有多次出現的字符串。
l?????????MultipleVariableDeclarations
檢查代碼段和代碼行中是否有多次變量聲明。
l?????????RequireThis
檢查代碼中是否有“this.”。
l?????????UnnecessaryParentheses
檢查是否有使用不需要的圓括號。
Class Design
l?????????VisibilityModifier
檢查類成員的可見度。
l?????????FinalClass
檢查只有private構造函數的類是否聲明為final。
l?????????InterfaceIsType
檢查接口是否僅定義類型。
l?????????HideUtilityClassConstructor
檢查工具類是否有putblic的構造器。
l?????????DesignForExension
檢查類是否為擴展設計。
l?????????MutableException
確保異常是不可變的。
l?????????ThrowsCount
限制拋出異常的數量。
Duplicate Code
l?????????StrictDuplicateCode
嚴格檢查重復代碼。
Miscellaneous
l?????????GenericIllegalRegexp
正則表達式的模式檢查。
l?????????NewlineAtEndOfFile
檢查文件是否以一個空行結束。
l?????????TodoComment
檢查TODO:注釋。
l?????????Translation
檢查property文件中是否有相同的key。
l?????????UncommentedMain
檢查是否有未注釋的main方法。
l?????????UpperEll
檢查long型約束是否有大寫的“L”。
l?????????ArrayTypeStyle
檢查數組類型定義的樣式。
l?????????FinalParameters
檢查方法名、構造函數、catch塊的參數是否是final的。
l?????????Indentation
檢查代碼中正確的縮進。
l?????????TrailingComment
確保是否要代碼行注釋。
l?????????RequiredRegexp
確保一個指定的正則表達式的規則已經存在代碼中。
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
“)”?前面不能有空格
轉載自--http://www.blogjava.net/askcuix/archive/2009/02/08/253775.html
總結
以上是生活随笔為你收集整理的java checkstyle 导入_Checkstyle的配置详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java基础包的基本信息_JAVA 基础
- 下一篇: java 矩形重叠问题_两个矩形重叠的问