1. 程式人生 > >CheckStyle報錯的常見問題及解決方式

CheckStyle報錯的常見問題及解決方式

1   提示:Type is missing a javadoc commentClass

說明:缺少型別說明

解決方法:增加javadoc說明

2   提示:“{” should be on the previous line

說明:“{”應該位於前一行。

解決方法:把“{”放到上一行去

3   提示:Methos is missing a javadoc comment

說明:方法前面缺少javadoc註釋。

解決方法:新增javadoc註釋

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

說明:“}” 應該與下條語句位於同一行。

解決方法:把“}”放到下一行的前面

10 提示:Unused @param tag for “unused”

說明:沒有引數“unused”,不需註釋

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

11 提示: Variable “CA” missingjavadoc

說明:變數“CA”缺少javadoc註釋

解決方法:在“CA“變數前新增javadoc註釋:/** CA. */(注意:一定記得加上CA後面的“.”)

12 提示: Line longer than 80characters

說明:行長度超過80  。

解決方法:把它分成多行寫。必要時候,可以ctrl+shift+f

13 提示:Line contains a tab character

說明:行含有”tab” 字元。

14 提示:Redundant “Public” modifier

說明:冗餘的“public” modifier   。

解決方法:冗餘的“public”

15 提示:Final modifier out of order with the JSL suggestion 

說明:Final modifier的順序錯誤

16 提示: Avoid using the “.*” formof import

說明:Import格式避免使用“.*”

17 提示:Redundant import from the same package

說明:從同一個包中Import內容

18 提示: Unusedimport-java.util.list

說明:Import匯入進來的java.util.list沒有被使用。

解決方法:去掉匯入的多餘的類

19 提示:Duplicate import to line 13

說明:重複Import同一個內容   

解決方法:去掉匯入的多餘的類

20 提示: Import from illegalpackage

說明:從非法包中 Import內容

21 提示:“while” construct must use “{}” 

說明:“while” 語句缺少“{}”

22 提示: Variable “sTest1” must beprivate and have accessor method

說明:變數“sTest1”應該是private的,並且有呼叫它的方法

23 提示: Variable “ABC” must matchpattern “^[a-z][a-zA-Z0-9]*$

說明:變數“ABC”不符合命名規則“^[a-z][a-zA-Z0-9]*$”

解決方法:把這個命名改成符合規則的命名 “aBC”

24 提示:“(” is followed by whitespace       “)”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 onestatement. 

說明: 至少有一個宣告

解決方法:try{}catch(){}中的異常捕捉裡面不能為空,在異常裡面加一句話。如列印等

30 提示:'>' is not followed by whitespace.並且又有 '('is preceded with whitespace.

說明:定義集合和列舉的時候的時候,最後一個“>”後面要有空格,“(”前面不容許有空格。

解決方法:去掉泛型(通常是泛型的地方容易出這個問題)

31 提示:Got an exception - java.lang.RuntimeException: Unable to get classinformation 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中的Maximumline with改成了100, 然後format一下, 基本就沒有問題了

32 提示: File does not end with anewline.

解決方法:刪掉報錯的類,新建一個同名的類,把程式碼全部複製過去

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.

說明:全域性private int X;和區域性publicFoo(int X)的X變數名字重複。
解決方法:把方法裡面的引數名稱改變下就可以了public Foo(int newBar)

36 提示: Got an exception -Unexpected character 0xfffd in identifier

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

網上參考解決方法:

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

2、可以修改checkstyle配置檔案:

<modulename="Checker">

<propertyname="severity" value="warning"/>

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

<modulename="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