#java #maven #checkstyle
#java #maven #checkstyle
Вопрос:
У меня есть существующий проект, в который я пытаюсь добавить проверки checkstyle как часть сборки. Я вижу следующий вывод:
A.java:15:1: Line contains a tab character.
B.java:16: Line has trailing spaces.
Ошибка, о которой сообщается в A.java
, нарушает стандарты кодирования, которым придерживается моя организация. Следовательно, я хочу пропустить это правило только для всех файлов в проекте.
Может кто-нибудь подсказать, как я могу это сделать?
Ответ №1:
Чтобы определить пользовательскую конфигурацию проверки стилей внутри вашего pom.xml используйте параметр checkstyleRules.
Чтобы разрешить символ табуляции, используйте FileTabCharacter module
<module name="FileTabCharacter">
<property name="eachLine" value="false"/>
</module>
Комментарии:
1. Спасибо. Но это делает прямо противоположное тому, что я хочу. Он сообщает только об этой проблеме. Я хочу выполнить все правила, кроме этого одного правила.
2. Боюсь, что нет другого способа, кроме как настроить весь набор правил checkstyle вручную (В нашем проекте мне очень помог плагин checkstyle-cs — вы настраиваете все необходимые правила checkstyle в графическом интерфейсе, затем отправляете полученный xml в свой pom (plugin — configuration — configLocation) — viola!
Ответ №2:
Checkstyle не предлагает опцию, которая означает что-то вроде «Используйте эту конфигурацию, за исключением следующих правил». Вместо этого вы должны предоставить пользовательский набор правил, который включает только те правила, которые вы хотите использовать.
Вы можете указать конфигурацию правил, которую должен использовать плагин Checkstyle Maven, следующим образом:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.12.1</version>
<configuration>
<configLocation>checkstyle.xml</configLocation>
</configuration>
</plugin>
В указанном checkstyle.xml , вы можете просто удалить ненужное правило. В вашем случае удалите строку, в которой говорится:
<module name="FileTabCharacter"/>
Checkstyle выполняет только те правила, которые явно указаны в конфигурации. Вот как написать checkstyle.xml . По умолчанию используется этот файл правил.
Ответ №3:
В Checkstyle 3.2 добавлена поддержка SuppressionFilter-ов. В общедоступных репозиториях Maven указана дата выпуска 8 ноября 2005 года, но они также указывают ту же дату выпуска для нескольких других версий, так что, предположительно, это была дата какой-то миграции, но выпуск был доступен по крайней мере с тех пор. Версия Checkstyle по умолчанию в maven-checkstyle-plugin была 4.1, по крайней мере, с января 2006 года.
Вы можете настроить фильтр подавления с помощью Maven, независимо от checkstyle config XML, на который ссылались другие ответы.
Конфигурация подавления, подобная этой, должна помочь в сценарии, которым вы поделились в своем вопросе:
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionFilter Configuration 1.0//EN"
"https://checkstyle.org/dtds/suppressions_1_0.dtd">
<suppressions>
<suppress checks="FileTabCharacter" files=".*.java" />
</suppressions>
Ответ №4:
Ошибка Checkstyle не является серьезной. Вы можете отключить плагин checkstyle, поместить
<plugin>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
в pom.xml файл
Комментарии:
1. Я не хочу пропускать все нарушения. Просто правило символа табуляции.