Могу ли я связать файл контроля импорта для checkstyle для использования во всех проектах, использующих наш checkstyle? - PullRequest
1 голос
/ 28 июня 2019

Я пытаюсь добавить контроль импорта в наш контрольный стиль таким образом, чтобы файл контроля импорта существовал в проекте, создающем файл checstyle.xml, а не в проектах, которые мы создадим позже.

У нас есть определенный gradle-проект, в котором мы определяем все наши правила, и именно в этом проекте наш import-control.xml.Моя проблема в том, что когда я пытаюсь запустить mvn clean install в другом проекте, который использует этот стиль проверки, он пытается найти import-control.xml в этом проекте.

Я сделал следующую конфигурацию в файле checkstyle.xml:

        <module name="ImportControl">
            <property name="file" value="import-control.xml"/>
        </module>

и import-control.xml находится рядом с checkstyle.xml.

Может кто-нибудь сказать мне, что мне нужно сделать, чтобы я мог сказать maven, что этот файл существует в нашемпроект checkstyle, а не в корневом проекте, который создается?

Я получил следующие ошибки: Невозможно инициализировать модуль TreeWalker - невозможно инициализировать модуль ImportControl - недопустимое значение 'import-control.xml'для свойства 'file' Невозможно найти: import-control.xml

In v 2.17

Невозможно загрузить import-control.xml: невозможно найти файл: /C: //import-control.xml: \ import-control.xml

Что я пробовал: Обновление версии контрольного стиля до 3.1.0 (раньше у нас было 2.17) Используйте import-control.xml, но не работаетПытался прочитать документацию и код, но без помощи.

Спасибо за любую помощь

Пишу вам позже / Mårten

Конфигурация MVN:

      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.1.0</version>
          <executions>
            <execution>
              <id>do checkstyle</id>
              <phase>process-sources</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <includes>projectA/**/*</includes>
            <configLocation>checkstyle.xml</configLocation>
            <consoleOutput>true</consoleOutput>
            <failOnViolation>false</failOnViolation>
            <failsOnError>true</failsOnError>
            <includeTestSourceDirectory>true</includeTestSourceDirectory>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>company.checkstyle</groupId>
              <artifactId>company-checkstyle</artifactId>
              <version>0.2-SNAPSHOT</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>```

1 Ответ

1 голос
/ 03 июля 2019

Еще раз спасибо barfuin, похоже, что ответом был $ {config_loc}, но нам потребовалась еще одна вещь, чтобы он полностью работал.

Итак, для добавления ресурсов из проекта checkstyle, как в этом файле,import_control.xml Я сделал следующее в моем файле checkstyle.xml:

    <module name="ImportControl">
        <property name="file" value="${config_loc}/config/import_control.xml"/>
    </module>

Мне также нужно было добавить:

<propertyExpansion>config_loc=</propertyExpansion>

в моей конфигурации pom.xml, это решенопроблема с config_loc не определена и для checkstyle найти файл как ресурс и дал мне следующую конфигурацию pom.xml:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <executions>
        <execution>
          <id>do checkstyle</id>
          <phase>process-sources</phase>
          <goals>
            <goal>check</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <includes>projectA/**/*</includes>
        <configLocation>checkstyle.xml</configLocation>
        <consoleOutput>true</consoleOutput>
        <failOnViolation>false</failOnViolation>
        <failsOnError>true</failsOnError>
        <includeTestSourceDirectory>true</includeTestSourceDirectory>
        <propertyExpansion>config_loc=</propertyExpansion>
      </configuration>
      <dependencies>
        <dependency>
          <groupId>company.checkstyle</groupId>
          <artifactId>company-checkstyle</artifactId>
          <version>0.2-SNAPSHOT</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
...