我有两个包



com/mydomain/abc/xyz/jaxws/managed
我要求只对第二个软件包禁用checkstyle,因为它们包含自动生成的代理类。

我使用了一个pression.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中的checktyle,要注意的是,除了这种模式之外,我不知道所有的包装名称。

感谢致敬
西比

最佳答案

只需使用抑制:

<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>

10-08 13:05