Плагин Maven Checkstyle с google_checks и 4 пробелами indentSize

Я изучаю способы настроить google_checks для использования 4 spacesв плагине maven Checkstyle. Я установил indentSizeпараметр конфигурации на 4, но он не работает. Есть ли параметры конфигурации, чтобы установить это? Я не хочу иметь свою версию google_checks.xml просто чтобы иметь отступ в 4 пробела.

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.1.1</version>
        <dependencies>
          <dependency>
            <artifactId>checkstyle</artifactId>
            <groupId>com.puppycrawl.tools</groupId>
            <version>8.36.1</version>
          </dependency>
        </dependencies>
        <configuration>
          <configLocation>google_checks.xml</configLocation>
          <indentSize>4</indentSize>
          <failsOnError>true</failsOnError>
          <consoleOutput>true</consoleOutput>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
        </configuration>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

Обновление: похоже, что нет единого формата, совместимого с maven-checkstyle-plugin, Checkstyle with google_checks и Intellij with google_java_format. Кто-нибудь смог этого добиться?

1 ответ

Обзор

В настоящее время Checkstyle не поддерживает такую ​​композицию конфигурации.

Вот некоторые из связанных проблем с GitHub:

  1. Как расширить / переопределить существующую конфигурацию (sun, google) · Проблема №4484 · checkstyle / checkstyle.

  2. .

    • Обратите внимание, что это активная проблема.

Обходной путь

Существует довольно простой обходной путь для отмены некоторых проверок файла конфигурации: разделите выполнение одного плагина Checkstyle Maven на два выполнения:

  1. Создайте первое выполнение, которое использует весь файл конфигурации и подавляет проверки, которые должны быть отменены.
  2. Создайте второе выполнение, которое использует настроенный файл конфигурации только с «переопределенными» проверками.

Этот обходной путь также объясняется здесь: создать концепцию наследования / переопределения и композиции / расширения конфигураций · Проблема № 2873 · checkstyle / checkstyleсоздание концепции наследования / переопределения и составления / расширения конфигураций · Проблема № 2873 · checkstyle / checkstyle : комментарий.

Пример, связанный с отступом (черновик)

Проект: pom.xml

В /build/pluginManagement/plugins определение плагина:

      <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>3.1.2</version>
    <dependencies>
        <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>8.43</version>
        </dependency>
    </dependencies>
</plugin>

В /build/plugins определение плагина:

      <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <executions>
        <execution>
            <id>check-google-checks</id>
            <phase>validate</phase>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <configLocation>google_checks.xml</configLocation>
                <suppressionsLocation>maven-checkstyle-suppressions-google_checks.xml</suppressionsLocation>
                <suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
            </configuration>
        </execution>
        <execution>
            <id>check-custom-checks</id>
            <phase>validate</phase>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <configLocation>maven-checkstyle-custom_checks.xml</configLocation>
            </configuration>
        </execution>
    </executions>
    <configuration>
        <failsOnError>true</failsOnError>
        <violationSeverity>warning</violationSeverity>
        <includeTestSourceDirectory>true</includeTestSourceDirectory>
    </configuration>
</plugin>

Файл конфигурации Checkstyle: maven-checkstyle-suppressions-google_checks.xml

      <?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
        "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
        "https://checkstyle.org/dtds/suppressions_1_2.dtd">
<suppressions>
    <suppress checks="Indentation" files="." />
</suppressions>

Файл конфигурации Checkstyle: maven-checkstyle-custom_checks.xml

      <?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
    "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
    <module name="TreeWalker">
        <module name="Indentation">
            <property name="basicOffset" value="4" />
            <property name="braceAdjustment" value="4" />
            <property name="caseIndent" value="4" />
            <property name="throwsIndent" value="4" />
            <property name="lineWrappingIndentation" value="4" />
            <property name="arrayInitIndent" value="4" />
        </module>
    </module>
</module>
Другие вопросы по тегам