Конфигурация Maven Checkstyle игнорируется? - программирование
Подтвердить что ты не робот

Конфигурация Maven Checkstyle игнорируется?

Попытка установить пользовательскую конфигурацию checkstyle в maven pom в соответствии с рекомендациями на сайте apache не работает в очень простой случай.

Я создал проект MyProject, используя макет каталога, рекомендованный Maven (т.е. src/main/java/, src/main/resources), один файл MyClass.java:

package com.myproject;

public class MyClass {

   public static void main(String[] args) {
      System.out.println("This line is longer than 80 characters which returns an error in sun_checks.xml, however my_checks.xml allows for much longer lines and will not return a long line error.");
   }
}

пустой файл checkstyle, my_checks.xml:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<module name="Checker">
    <property name="severity" value="warning"/>
    <module name="TreeWalker">
    </module>
</module>

и файл pom в соответствии со спецификациями в руководстве:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.myproject</groupId>
    <artifactId>A_Project</artifactId>
    <name>A Project</name>
    <version>1.0.0</version>

    <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.8</version>
        <configuration>
          <configLocation>my_checks.xml</configLocation>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
</project>

Запуск "mvn -X checkstyle: checkstyle" использует sun_checks.xml(по умолчанию) вместо использования конфигурации в файле my_checks.xml, что можно увидеть как в результате ошибок checkstyle, так и вывода отладки (например, '[DEBUG] request.getConfigLocation() config/sun_checks.xml').

Я знаю, что my_checks.xml действителен, потому что checkstyle.config.location можно изменить в свойствах, используя стратегию, описанную Carboni в предыдущем столбце, но это вызывает проблемы при переходе к многомодульным проектам и отличается от "официальных" инструкций checkstyle apache maven.

4b9b3361

Ответ 1

Это работает для меня, когда:

  • Я размещаю my_checks.xml на корневом уровне (параллельно с pom.xml) и
  • Оберните плагин в элементе <build> (в отличие от <reporting>)

С этими изменениями я вижу следующее:

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-checkstyle-plugin:2.8:checkstyle' with basic configurator -->
[DEBUG]   (f) cacheFile = /home/dave/tech/lang/java/web/struts/playground/so/s231_01/target/checkstyle-cachefile
[DEBUG]   (f) configLocation = my_checks.xml
... etc ...
[DEBUG] request.getConfigLocation() my_checks.xml
[DEBUG] The resource 'my_checks.xml' was not found with resourceLoader
... etc ...
[DEBUG] The resource 'my_checks.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.URLResourceLoader.
[DEBUG] The resource 'my_checks.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.JarResourceLoader.
[DEBUG] The resource 'my_checks.xml' was found as /home/dave/tech/lang/java/web/struts/playground/so/s231_01/my_checks.xml.

Обратитесь к документации по использованию в частности:

Чтобы специально настроить плагин Checkstyle, вам нужно добавить его в раздел <build> вашего pom.xml, как показано в примере ниже.

Использование <reporting> для mvn site.

Ответ 2

Да, я нашел рекомендации на сайте Apache устаревшими. Благодаря тралению Интернета и сбору битов вместе я справился с этим.

Переход к тегу <build> работал некоторое время, но при обновлении до последней контрольной таблицы его снова игнорировали. Я обнаружил, что мне нужно установить свойство:

<project ...>

 ....

  <properties>
    <checkstyle.config.location>properties/checkstyle-configuration.xml</checkstyle.config.location>
  </properties>

  <build>
    ...

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.9.1</version>
      </plugin>
    </plugins>
  </build>

  ...

</project>

Это часть моего примера того, как создать собственную собственную проверку чеков, найденную здесь:
http://blog.blundellapps.com/create-your-own-checkstyle-check/

и взяты из исходного кода здесь:
https://github.com/blundell/CreateYourOwnCheckStyleCheck