Maven:在Windows上Checkstyle插件不应用抑制过滤器

rdlzhqv9  于 2023-06-24  发布在  Windows
关注(0)|答案(1)|浏览(109)

在Linux/MacOS上,Checkstyle插件按预期应用抑制过滤器,但在Windows上,似乎没有应用过滤器,构建失败,并在suppressions.xml文件中显示预期抑制的确切警告。
会有什么问题呢?
来自pom.xml的片段:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <phase>process-sources</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
            <configLocation>google_checks.xml</configLocation>
             <suppressionsLocation>foo/bar/checkstyle/suppressions.xml</suppressionsLocation>
             <consoleOutput>true</consoleOutput>
            <failsOnError>true</failsOnError>
            <failOnViolation>true</failOnViolation>
            <violationSeverity>warning</violationSeverity>
            <includeTestSourceDirectory>true</includeTestSourceDirectory>
        </configuration>
      </plugin>

下面是整个suppressions.xml:

<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN"
    "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
    <suppress checks="NonEmptyAtclauseDescription" files=".*"/>
    <suppress checks="AbbreviationAsWordInName" files="/foo/bar/.*IT.java"/>
    <suppress checks="JavadocMethod" files="/foo/bar/.*"/>
</suppressions>
u5i3ibmn

u5i3ibmn1#

基于Unix的系统(Linux/MacOS),使用正斜杠“/”作为路径分隔符。但Windows为此使用了反斜杠“\”。这就是为什么正则表达式不匹配文件的路径,也不应用任何禁止。路径Regex使其在Linux/MacOS和Windows上工作的一种方法是用“[/\]”替换斜线,并接受两个斜线作为路径分隔符。示例:

<suppress checks="AbbreviationAsWordInName" files="[/\\]foo[/\\]bar[/\\].*IT.java"/>

相关问题