2010-10-26 22 views
13

我有兩個包分別禁用特定的Java包中所有的CheckStyle檢查

COM/MYDOMAIN/ABC /代表/ XYZ/JAXWS /管理

com/mydomain/abc/xyz/jaxws/managed

我需要checkstyle僅在第二個包中被禁用,因爲它們包含自動生成的代理類。

我使用suppression.xml如下圖所示

<?xml version="1.0"?> 

<!DOCTYPE suppressions PUBLIC 
    "-//Puppy Crawl//DTD Suppressions 1.1//EN" 
    "suppressions_1_1.dtd"> 

<suppressions> 
     <!-- Suppress JavadocPackage in the test packages --> 
     <suppress checks="JavadocPackage" files="[\\/]test[\\/]"/> 

    <!-- Suppress all checkstyle for autogenerated jaxws.managed package --> 
    <suppress checks="[a-zA-Z0-9]*" files="([^(delegate)])+([a-z]*[\\/]jaxws[\\/]managed[\\/])+"/> 
</suppressions> 

請注意,先抑禁用JavadocPackage檢查工作正常,但第二個沒有。我擔心選擇軟件包的正則表達式可能是錯誤的。任何幫助深表感謝。

要說出我的要求用一個例子:

的選擇標準是,包的名字應該在jaxws.managed結束,但不應包含在delegate包名。更超過delegate應在包名來jaxws.managed前:

例如:在包com.mycomany.delegate.service.jaxws.managed checktyle檢查必須啓用,而在com.mycompany.abc.service.jaxws.service必須被禁止,但應注意的是,我不知道這一切,除了前期的pakages名對於這種模式。

感謝和問候 思碧

回答

16

只需使用抑制:

<suppress checks="." files="com[\\/]mydomain[\\/]abc[\\/]xyz[\\/]jaxws[\\/]managed[\\/]"/> 

另外,我建議只透過你想檢查Checkstyle的文件。例如,如果您正在使用ANT,請使用a指定要處理的文件,並使用它指定要忽略的文件。

例如:

<fileset dir="src"> 
    <include name="**/*.java"/> 
    <exclude name="com/mycompany/abc/service/jaxws/service/*.java"/> 
</fileset> 
+0

嗨奧利弗,三江源爲答覆。您的解決方案在整個包名稱已知的情況下運行。在我的情況下,選擇的標準是包名稱應該以「jaxws.managed」結尾,但不應包含包名稱中的「委託」。更多的「委託」應該在包名稱中的「jaxws.managed」之前:例如:包中的checktyle檢查「com.mycomany.delegate.service.jaxws.managed」必須在com.mycompany.abc.service中啓用.jaxws.service「必須被禁用。謝謝oliver在我的問題中指出這個含糊不清的地方。 – 2010-10-26 11:43:55

-3

(?!委託\ B)[\ /] [AZ] * [\ /] JAXWS [\ /]管理[\ /]

相關問題