日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java checkstyle 导入_Checkstyle的配置详解

發(fā)布時間:2025/3/19 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java checkstyle 导入_Checkstyle的配置详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Checkstyle是一款檢查java程序代碼樣式的工具,可以有效的幫助我們檢視代碼以便更好的遵循代碼編寫標準,特別適用于小組開發(fā)時彼此間的樣式規(guī)范和統(tǒng)一。Checkstyle提供了高可配置性,以便適用于各種代碼規(guī)范,所以除了可以使用它提供的sun的代碼標準外,你也可以定制自己的標準。我們可以在eclipse中安裝checkstyle的插件,來方便我們的使用。

Checkstyle可以讓我們養(yǎng)成書寫良好代碼風(fēng)格的習(xí)慣,代碼的整潔也減少了很多bad smell的產(chǎn)生。使用checkstyle的過程中可能需要經(jīng)常的調(diào)整配置文件,有些check過于嚴格,可以根據(jù)實際情況取消一些代碼檢查。

Checkstyle的配置

Checkstyle配置是通過指定modules來應(yīng)用到j(luò)ava文件的。modules是樹狀結(jié)構(gòu),以一個名為Checker的module作為root節(jié)點,一般的checker都會包括TreeWalker子module。我們可以參照checkstyle中的sun_checks.xml,這是根據(jù)sun的java語言規(guī)范寫的配置。

在xml配置文件中通過module的name屬性來區(qū)分module,module的Properties可以控制如何去執(zhí)行這個module,每個property都有一個默認值,所有的check都有一個severity屬性,用它來指定check的level。TreeWalker為每個java文件創(chuàng)建一個語法樹,在節(jié)點之間調(diào)用submodules的Checks。

下面來看看standard checks中的一些具體用法。

Javadoc Comments

lJavadocPackage

檢查每個java package中是否有java注釋文件,默認是允許一個package-info.java,也可以通過allowLegacy屬性配置允許package.html。

lJavadocType

檢查類和接口的javadoc。默認不檢查author?和version tags。

lJavadocMethod

檢查方法和構(gòu)造函數(shù)的javadoc。默認不檢查未使用的異常拋出。

lJavadocVariable

檢查變量的javadoc。

lJavadocStyle

檢查javadoc的格式。比如:javadoc的第一行是否以句號結(jié)束,javadoc除了tags外是否有description,檢查javadoc中的html格式。

lWriteTag

輸出javadoc中的tag。

Naming Conventions

lAbstractClassName

檢查抽象類名。

lClassTypeParameterName

檢查類的Parameter名。

lConstantName

檢查常量名。

lLocalFinalVariableName

檢查局部的final類型變量名,包括catch的參數(shù)。

lLocalVarableName

檢查局部的非final類型的變量名,包括catch的參數(shù)。

lMemberName

檢查非靜態(tài)變量。

lMethodName

檢查方法名。

lMethodTypeParameterName

檢查方法的參數(shù)名。

lPackageName

檢查包名。

lParameterName

檢查參數(shù)名。

lStaticVariableName

檢查靜態(tài)的,非final類型的變量名。

lTypeName

檢查類名和接口名。

Imports

lAvoidStarImport

檢查是否有使用*進行import。

lAvoidStaticImport

檢查是否有靜態(tài)import。比如是否導(dǎo)入了java.lang包中的內(nèi)容。

lIllegalImport

檢查是否import了違法的包。默認拒絕import所有sun.*包。

lRedundanImport

檢查是否有重復(fù)的import。

lUnusedImports

檢查是否有未使用的import。

lImportOrder

檢查import的分組和順序。

lImportControl

Size Violations

l?????????ExecutableStatementCount

限制可執(zhí)行代碼片段的長度。默認為30。

lFileLength

檢查java文件的長度。默認為2000。

lLineLength

檢查代碼行的長度。默認為80。

lMethodLength

檢查方法和構(gòu)造函數(shù)的長度。默認為150。

lAnonInnerLength

檢查匿名內(nèi)部類的長度。默認為20。

lParameterNumber

檢查方法和構(gòu)造函數(shù)的參數(shù)個數(shù)。默認為7。

Whitespace

l????????GenericWhitespace

檢查周圍的空白。

l?????????EmptyForInitializerPad

檢查空的初始化位置的空白。比如for循環(huán)中的初始化。

l?????????EmptyForIteratorPad

檢查空的迭代位置的空白。

l?????????MethodParamPad

檢查方法簽名之前的空白。

l?????????NoWhitespaceAfter

檢查分隔符后的空白。

l?????????NoWhitespaceBefore

檢查分隔符前的空白。

l?????????OperatorWrap

檢查操作符的空白規(guī)則。

l?????????ParenPad

檢查圓括號的空白規(guī)則。

l?????????TypecaseParenPad

檢查強制轉(zhuǎn)型的圓括號的空白規(guī)則。

l?????????TabCharacter

檢查是否有Tab字符(’"t’)。

l?????????WhitespaceAfter

檢查分隔符是否在空白之后。

l?????????WhitespaceAround

檢查分隔符周圍是否有空白。

ModifierOrder

l?????????ModifierOrder

檢查修飾符的順序是否遵照java語言規(guī)范。

l?????????RedundantModifier

檢查接口和annotation中是否有重復(fù)的修飾符。

Block Checks

l?????????EmptyBlock

檢查空的代碼塊。

l?????????LeftCurly

檢查’{’和左邊的代碼塊是否在同一行。

l?????????NeedBraces

檢查是否需要大括號。主要是在if,else時的情況。

l?????????RightCurly

檢查’}’。

l?????????AvoidNestedBlocks

檢查不需要的嵌套’{}’。

Coding

l?????????ArrayTrailingComma

檢查數(shù)組初始化是否以逗號結(jié)束。

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

檢查局部變量或參數(shù)是否隱藏了類中的變量。

l?????????IllegalInstantiation

檢查是否使用工廠方法實例化。

l?????????IllegalToken

檢查非法的分隔符。

l?????????IllegalTokenText

檢查非法的分隔符的下個字符。

l?????????InnerAssignment

檢查子表達式中是否有賦值操作。

l?????????MagicNumber

檢查是否有“magic numbers”。

l?????????MissingSwitchDefault

檢查switch語句是否有default的clause。

l?????????ModifiedControlVariable

檢查循環(huán)控制的變量是否在代碼塊中被修改。

l?????????RedundantThrows

檢查是否有被重復(fù)拋出的異常。

l?????????SimplifyBooleanExpression

檢查是否有過度復(fù)雜的布爾表達式。

l?????????SimplifyBooleanReturn

檢查是否有過于復(fù)雜的布爾返回代碼段。

l?????????StringLiteralEquality

檢查字符串是否有用= =或!=進行操作。

l?????????NestedIfDepth

檢查嵌套的層次深度。

l?????????NestedTryDepth

檢查try的層次深度。

l?????????NoClone

檢查是否覆蓋了clone()。

l?????????NoFinalizer

檢查是否有定義finalize()。

l?????????SuperClone

檢查覆蓋的clone()是否有調(diào)用super.clone()。

l?????????SuperFinalize

檢查覆蓋的finalize()是否有調(diào)用super.finalize()。

l?????????IllegalCatch

檢查是否catch了不能接受的錯誤。

l?????????IllegalThrows

檢查是否拋出了未聲明的異常。

l?????????PackageDeclaration

檢查類中是否有聲明package。

l?????????JUnitTestCase

確保setUp(), tearDown()方法簽名的正確性。

l?????????ReturnCount

限制return代碼段的數(shù)量。

l?????????IllegalType

檢查未使用過的類。

l?????????DeclarationOrder

檢查類和接口中的聲明順序。

l?????????ParameterAssignment

檢查不允許的參數(shù)賦值。

l?????????ExplicitInitialization

檢查類和對象成員是否初始化為默認值。

l?????????DefaultComesLast

檢查default的clause是否在switch代碼段的最后。

l?????????MissingCtor

檢查類依賴。

l?????????FallThrough

檢查switch代碼的case中是否缺少break,return,throw和continue。

l?????????MultipleStringLiterals

檢查一個文件中是否有多次出現(xiàn)的字符串。

l?????????MultipleVariableDeclarations

檢查代碼段和代碼行中是否有多次變量聲明。

l?????????RequireThis

檢查代碼中是否有“this.”。

l?????????UnnecessaryParentheses

檢查是否有使用不需要的圓括號。

Class Design

l?????????VisibilityModifier

檢查類成員的可見度。

l?????????FinalClass

檢查只有private構(gòu)造函數(shù)的類是否聲明為final。

l?????????InterfaceIsType

檢查接口是否僅定義類型。

l?????????HideUtilityClassConstructor

檢查工具類是否有putblic的構(gòu)造器。

l?????????DesignForExension

檢查類是否為擴展設(shè)計。

l?????????MutableException

確保異常是不可變的。

l?????????ThrowsCount

限制拋出異常的數(shù)量。

Duplicate Code

l?????????StrictDuplicateCode

嚴格檢查重復(fù)代碼。

Miscellaneous

l?????????GenericIllegalRegexp

正則表達式的模式檢查。

l?????????NewlineAtEndOfFile

檢查文件是否以一個空行結(jié)束。

l?????????TodoComment

檢查TODO:注釋。

l?????????Translation

檢查property文件中是否有相同的key。

l?????????UncommentedMain

檢查是否有未注釋的main方法。

l?????????UpperEll

檢查long型約束是否有大寫的“L”。

l?????????ArrayTypeStyle

檢查數(shù)組類型定義的樣式。

l?????????FinalParameters

檢查方法名、構(gòu)造函數(shù)、catch塊的參數(shù)是否是final的。

l?????????Indentation

檢查代碼中正確的縮進。

l?????????TrailingComment

確保是否要代碼行注釋。

l?????????RequiredRegexp

確保一個指定的正則表達式的規(guī)則已經(jīng)存在代碼中。

Checkstyle常見的錯誤提示

1.???????Type is missing a javadoc commentClass

缺少類型說明

2.???????“{” should be on the previous line

“{”?應(yīng)該位于前一行

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

“}”?應(yīng)該與下條語句位于同一行

10.????Unused @param tag for “unused”

沒有參數(shù)“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內(nèi)容

18.????Unused import-java.util.list

Import進來的java.util.list沒有被使用

19.????Duplicate import to line 13

重復(fù)Import同一個內(nèi)容

20.????Import from illegal package

從非法包中?Import內(nèi)容

21.????“while” construct must use “{}”

“while”?語句缺少“{}”

22.????Variable “sTest1” must be private and have accessor method

變量“sTest1”應(yīng)該是private的,并且有調(diào)用它的方法

23.????Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$”

變量“ABC”不符合命名規(guī)則“^[a-z][a-zA-Z0-9]*$”

24.????“(” is followed by whitespace

“(”?后面不能有空格

25.????“)” is proceeded by whitespace

“)”?前面不能有空格

轉(zhuǎn)載自--http://www.blogjava.net/askcuix/archive/2009/02/08/253775.html

總結(jié)

以上是生活随笔為你收集整理的java checkstyle 导入_Checkstyle的配置详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。