2017-09-27 125 views
0

我將如何設置使用pmd和checkstyle結果作爲建議而僅在構建服務器上禁用它們?這樣做會不好做?Checkstyle和PMD僅作爲建議

pmd和checkstyle都提供valuable advice,我想繼續使用它們。

但是(這裏來了但是)我發現我的代碼收集了很多皮棉試圖解決一些警告。舉幾個例子:

  • 測試類包含許多的Mockito和JUnit靜態導入,總是我必須添加@SuppressWarnings(「PMD.TooManyStaticImports」)。

  • 被測試的類需要填充模擬對象的字段,這些字段在測試中的任何地方都沒有使用,但需要使用@Mock聲明和註釋,以便測試類正常工作。添加@SuppressWarnings(「PMD.UnusedPrivateField」)。

  • 在測試類中,我將有從一長串參數創建對象的方法,例如:createPerson(String firstname,String lastname,int shoesize,String favouritecolor ...)。這些對象通常是從數據庫或XML創建的。添加@SuppressWarnings(「PMD.ParameterNumberCheck」)。

  • 有時我的文檔會是:「這種方法確保X在以下3種情況下:\ n ...」。顯然這是不允許的,因爲第一句應該以句點結束。

  • 父類X具有其所有子項需要和使用的字段y,但檢查式won't allow it除非通過方法(getY())訪問此字段。這只是不自然的,IMO。

一種選擇是將支票永久關閉,但根據上下文的不同,支票可能是滋擾或非常有用的。 我認識到,在代碼中明確禁止警告也是一種僅在特定上下文中記錄該警告的方法,該檢查是無關緊要的且令人討厭。這是令我煩惱的抑制量,幾乎每個測試類都需要抑制,而其他一些類需要解決方法。

所以它會是一個解決方案來生成warings,但不允許checkstyle和pmd違規失敗te構建?

回答

2

測試類包含...
被測類...
在測試類...

在我看來,你應該壓抑自己的測試下,這些檢查代碼,因爲你不同意他們。

這是一種常見現象,就像在Checkstyle中我們不記錄我們的測試代碼,但我們的主代碼記錄了一切。 To get around this for PMD, we split our configuration between test and main.To get around this for Checkstyle utility, we suppress violations for the test directory.您還可以查看支票的選項,並查看是否有將其配置爲忽略您的個案。

有時我的文檔會是:「這種方法確保X在以下3種情況下:\ n ...」。

我不能肯定地說,因爲我不知道你的方法的內容,但第一句應該是一個簡單的解釋方法和目標。然後,您可以按照您提到的具體案例進行跟蹤。 Checkstyle只要求第一句以句號結束,而不是每句都結束。

父類X有一些字段y,它的所有孩子都需要和使用,但checkstyle將不允許它,除非通過方法(getY())訪問該字段。這只是不自然的,IMO。

既然你完全不喜歡這個,那麼只需要禁用檢查受保護的字段。 If you look at the documentation for VisibilityModifier,您可以將protectedAllowed更改爲true並讓它忽略這些特定情況。

我發現我的代碼收集了很多lint,試圖解決一些警告。

對我來說,你似乎並沒有根據你的喜好定製這些工具,只是試圖使用默認配置。

相關問題