2014-10-19 57 views
0

一些檢查,我有這樣的封裝結構:只有啓用某些內包裝

my.package 
my.package.other 
my.package.api 
... 

一般情況下,我想使用一些檢查,但對於my.package.api包,我想使用一些其他的檢查,以及(檢查的JavaDoc)。我發現抑制文件:

<?xml version="1.0"?> 
<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" 
    "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> 

<suppressions> 
    <suppress files="my[\\/]package[\\/]api[\\/]" checks="AdditionalChecks"/> 
</suppressions> 

但是,這將禁用對特殊軟件包的額外檢查(並啓用其他軟件包上的檢查)。有沒有辦法做相反的事情?

回答

1

在這種情況下,您必須禁止所有包裝中的警告,但是api。在suppress元素的files屬性需要Java regexes,這樣你就可以像這樣(explanation of regex)進行配置:

<suppressions> 
    <suppress files="my[\\/]package[\\/](?!api)[^\\/]+[\\/]" 
     checks="AdditionalChecks"/> 
</suppressions> 
+0

謝謝。不幸的是,我在'my.package'中有一些類,這個正則表達式不會將它們過濾掉。我應該如何修改正則表達式?我不熟悉這種負面預測。 – WonderCsabo 2014-10-20 11:26:13

+0

那麼這只是獲得正確的正則表達式的問題。請在regex101中創建一個示例,並告訴我們哪些行應匹配,然後我可能會嘗試給您另一個正則表達式。 – 2014-10-20 14:00:35

+0

我認爲它不應該與'my.package'匹配,但是你的正則表達式確實是這樣。 Checkstyle仍然希望檢查該包中的類。爲了演示這個問題,我創建了一個[示例項目](https://github.com/WonderCsabo/checkstyle-suppress-package-example)。它也可能有助於理解應該檢查什麼,什麼不應該。 – WonderCsabo 2014-10-20 14:27:48