Maven: в плагине Windows Checkstyle не применяется фильтр подавления - PullRequest
0 голосов
/ 04 октября 2019

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

1 Ответ

0 голосов
/ 08 октября 2019

Системы на основе Unix (Linux / MacOS), используйте косую черту "/" в качестве разделителя пути. Но для этой цели Windows использует обратную косую черту "\". Вот почему регулярное выражение не соответствует пути к файлам и не применяет никаких подавлений. Один из способов, с помощью которого Regex может работать как в Linux / MacOS, так и в Windows, состоит в замене косой черты на «[/ \\]» и принятии обоих штрихов в качестве разделителя пути. Пример:

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