Плагин Checkstyle не заботится о том, что находится во внешнем файле конфигурации - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь использовать плагин Maven Checkstyle с внешним файлом конфигурации. Плагин работает с указанием внешнего конфигурационного файла или без него, а предупреждения о контрольной сумме различаются в зависимости от того, установлен ли configLocation. Так что вроде бы все должно работать нормально, но это не так. Независимо от того, что я ввожу во внешний файл конфигурации, появляются одинаковые предупреждения. На самом деле, я могу полностью очистить файл и ничего не меняется.

В помпе:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <id>validate</id>
            <phase>validate</phase>
            <configuration>
                <configLocation>google_checks.xml</configLocation>
                <encoding>UTF-8</encoding>
                <consoleOutput>true</consoleOutput>
                <failsOnError>true</failsOnError>
            </configuration>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Попытка использовать этот файл:

https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml

Если я поменяю имя на «do_not_exist.xml», оно сообщит, что не может найти файл со следующим сообщением:

Невозможно найти файл конфигурации в расположении: does_not_exist.xml

Поскольку он не печатает это сообщение с правильным именем файла, он сообщает, что может найти файл с правильным именем (google_checks.xml).

В файле:

<module name="LineLength">
    <property name="max" value="100"/>
    <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
</module>

Если я изменю значение на 10, я все равно получу предупреждение:

Строка длиннее 100 символов ...

Я бегу:

mvn clean verify

Я пытался поместить файл google_checks.xml в корневой каталог проекта и в каталог src/main/resources. Те же результаты в любом месте.

В конечном итоге я хотел бы изменить правила для длины строки и отступа, но, поскольку мне все равно, что я ввожу в файл, я не уверен, как это сделать. Любые идеи о том, как заставить это почтить то, что находится во внешнем файле?

1 Ответ

0 голосов
/ 17 января 2019

Довольно копать, но: configLocation, который вы задали в своем вопросе XML, вставляется в CheckstyleViolationCheckMojo # configLocation maven-checkstyle-plugin, поскольку эта переменная является закрытой, она не отображается в их Javadoc, но она задокументирована в исходном коде.

Это описание гласит, что:

Этот параметр разрешается как ресурс, URL, а затем файл. Если После успешного разрешения содержимое конфигурации копируется в файл $ {project.build.directory} /checkstyle-configuration.xml до передается в Checkstyle в качестве конфигурации.

Есть 2 предопределенных набора правил.

  • sun_checks.xml: Sun Checks.
  • google_checks.xml: Google Checks.

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

Если вы хотите использовать собственный настраиваемый конфигуратор, вам следует назвать его как-то иначе, чем google_checks.xml и sun_checks.xml

...