2010-11-09 46 views
4

我正在嘗試糾正我的項目的所有Checkstyle警告,但當我需要構造一個需要泛型參數的類時,我一直在磕磕絆絆,非常煩人。以下面這一行爲例:Checkstyle和Generics

labels = new HashSet <String>(); 

然後Checkstyle抱怨''>'沒有空白'。所以我寫的空白:

labels = new HashSet <String>(); 

而現在抱怨道:「‘(’由空格前面」

這是一個錯誤是有辦法繞過它不添加註釋@SupressWarnings? ?

+0

在這兩種情況下對我來說工作得非常好。你用的是哪個IDE?我的是月食。 – Emil 2010-11-09 06:47:01

+0

我使用Eclipse Helios,你根本沒有得到任何警告? – 2010-11-09 07:21:13

+0

我不明白downvotes。就像Oliver暗示的那樣,這個問題對於我當時使用的Checkstyle版本是有效的。 – 2011-05-06 11:43:11

回答

3

確保您正在運行至少5.0版的Checkstyle,因爲它修復了泛型的處理。請參閱發行說明http://checkstyle.sf.net/releasenotes.html

+0

Checkstyle 5.6仍標記用於定義泛型的導入。我們得等待修復。 – 2013-03-14 10:38:15

1

它可能認爲>比運營商更大的原因是之前有一個空格

空間仿製藥申報的常用方法是這樣的:

labels = new HashSet<String>(); 

除非您的checkstyle規則被調整,否則上面的代碼很可能會通過。

+1

奇怪的是,如果我這樣做,它告訴我它需要<>之間的空格。事實上,我從另一個位置獲得了該項目,因此我必須檢查是否存在某個規則覆蓋。我可能會這樣做後,我睡了一下= D – 2010-11-09 07:14:23

+0

絕對推薦睡覺:)同時,我發現這個線程在別人有同樣的問題。他們還列出了正確的checkstyle配置以實現此功能:http://forums.topcoder.com/?module=Thread&threadID=512536&mc=6 – oksayt 2010-11-09 09:25:35

0

我有Checkstyle版本6.17在使用中,我通過從WhitespaceAround規則的tokens字段中刪除GENERIC_STARTGENERIC_END來解決這個問題。