Maven: 关于 Windows Checkstyle 插件不应用抑制过滤器
Maven: On Windows Checkstyle plug-in does not apply suppression filter
在 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>
基于 Unix 的系统 (Linux/MacOS),使用正斜杠“/”作为路径分隔符。但是 Windows 为此目的使用反斜杠“\”。这就是正则表达式与文件路径不匹配并且不应用任何抑制子的原因。
路径正则表达式使其适用于 Linux/MacOS 和 Windows 的一种方法是将斜杠替换为“[/\\]”并接受两个斜杠作为路径分隔符。
示例:
<suppress checks="AbbreviationAsWordInName" files="[/\]foo[/\]bar[/\].*IT.java"/>
在 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>
基于 Unix 的系统 (Linux/MacOS),使用正斜杠“/”作为路径分隔符。但是 Windows 为此目的使用反斜杠“\”。这就是正则表达式与文件路径不匹配并且不应用任何抑制子的原因。 路径正则表达式使其适用于 Linux/MacOS 和 Windows 的一种方法是将斜杠替换为“[/\\]”并接受两个斜杠作为路径分隔符。 示例:
<suppress checks="AbbreviationAsWordInName" files="[/\]foo[/\]bar[/\].*IT.java"/>