禁用特定 Java 包的所有检查样式检查

2022-09-03 07:26:33

我有两个包,即

com/mydomain/abc/delegate/xyz/jaxws/managed

com/mydomain/abc/xyz/jaxws/managed

我要求仅对第二个包禁用checkstyle,因为这些包包含自动生成的代理类。

我使用抑制.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.manageddelegatedelegatejaxws.managed

例如:必须启用 checktyle 签入包,而必须禁用 in,并且需要注意的是,除了此模式之外,我不知道所有 pakages 名称。com.mycomany.delegate.service.jaxws.managedcom.mycompany.abc.service.jaxws.service

感谢和问候西比


答案 1

只需使用抑制:

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

答案 2

(?! 委托 \b)[\/][a-z]*[\/]jaxws[\/]managed[\/]