Проверьте использование supressionCommentFilter по адресу http://checkstyle.sourceforge.net/config_filters.html#SuppressionCommentFilter . Вам нужно будет добавить модуль в ваш checkstyle.xml
<module name="SuppressionCommentFilter"/>
и это настраивается. Таким образом, вы можете добавить комментарии к своему коду, чтобы отключить контрольный стиль (на разных уровнях), а затем снова включить его, используя комментарии в вашем коде. Например
//CHECKSTYLE:OFF
public void someMethod(String arg1, String arg2, String arg3, String arg4) {
//CHECKSTYLE:ON
Или даже лучше, используйте эту более тонкую версию:
<module name="SuppressionCommentFilter">
<property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
<property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
<property name="checkFormat" value="$1"/>
</module>
который позволяет отключить определенные проверки для определенных строк кода:
//CHECKSTYLE.OFF: IllegalCatch - Much more readable than catching 7 exceptions
catch (Exception e)
//CHECKSTYLE.ON: IllegalCatch
* Примечание: вам также нужно добавить FileContentsHolder
:
<module name="FileContentsHolder"/>
Смотрите также
<module name="SuppressionFilter">
<property name="file" value="docs/suppressions.xml"/>
</module>
под SuppressionFilter
разделе на той же странице, который позволяет отключить отдельные проверки для ресурсов, соответствующих шаблону.
Итак, если у вас есть в вашем checkstyle.xml:
<module name="ParameterNumber">
<property name="id" value="maxParameterNumber"/>
<property name="max" value="3"/>
<property name="tokens" value="METHOD_DEF"/>
</module>
Вы можете отключить его в вашем XML-файле подавления с помощью:
<suppress id="maxParameterNumber" files="YourCode.java"/>
Другой метод, теперь доступный в Checkstyle 5.7, состоит в подавлении нарушений с помощью @SuppressWarnings
java-аннотации. Для этого вам необходимо добавить два новых модуля ( SuppressWarningsFilter
и SuppressWarningsHolder
) в ваш файл конфигурации:
<module name="Checker">
...
<module name="SuppressWarningsFilter" />
<module name="TreeWalker">
...
<module name="SuppressWarningsHolder" />
</module>
</module>
Затем в своем коде вы можете сделать следующее:
@SuppressWarnings("checkstyle:methodlength")
public void someLongMethod() throws Exception {
или для многократных подавлений:
@SuppressWarnings({"checkstyle:executablestatementcount", "checkstyle:methodlength"})
public void someLongMethod() throws Exception {
Примечание:checkstyle:
префикс " " является необязательным (но рекомендуется). Согласно документам имя параметра должно быть написано строчными буквами, но практика показывает, что любой случай работает.
//CHECKSTYLE.OFF:
а затем забудете включить его снова, останется ли флажок только в файле, содержащем файл,//CHECKSTYLE.OFF:
или во всех последующих обработанных файлах?@SuppressWarnings("checkstyle:VariableDeclarationUsageDistance")
работал так же хорошо для меня, как строчные эквиваленты.TreeWalker
, иFileContentHolder
не надо (есть) больше.Если вы предпочитаете использовать аннотации для выборочного молчания правил, теперь это возможно с помощью
@SuppressWarnings
аннотации, начиная с Checkstyle 5.7 (и поддерживается плагином Checkstyle Maven 2.12+).Сначала
checkstyle.xml
добавьтеSuppressWarningsHolder
модуль вTreeWalker
:Далее, включите
SuppressWarningsFilter
там (как братTreeWalker
):Теперь вы можете аннотировать, например, метод, который вы хотите исключить из определенного правила Checkstyle:
checkstyle:
Префикс в аргументе не@SuppressWarnings
является обязательным, но я , как это , как напоминание , где это предупреждение пришло. Имя правила должно быть в нижнем регистре.Наконец, если вы используете Eclipse, он будет жаловаться на то, что аргумент ему неизвестен:
Вы можете отключить это предупреждение Eclipse в настройках, если вам нравится:
источник
Также хорошо работает SuppressWithNearbyCommentFilter, который использует отдельные комментарии для подавления событий аудита.
Например
Чтобы настроить фильтр таким образом, чтобы проверка CHECKSTYLE IGNORE FOR NEXT var LINES позволяла избежать запуска любых проверок для данной проверки для текущей строки и следующих строк var (всего для строк var + 1):
http://checkstyle.sourceforge.net/config.html
источник
CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES?
сделать команду игнорирования более читабельной. (Вы сможете использовать «Проверка CHECKSTYLE IGNORE ДЛЯ СЛЕДУЮЩЕЙ 1 ЛИНИИ» и «Проверка CHECKSTYLE IGNORE ДЛЯ СЛЕДУЮЩИХ 3 ЛИНИЙ»).CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINE
у меня тоже работает (совпадает и сline
иlines
).В каждом ответе на SuppressWarningsFilter отсутствует важная деталь. Вы можете использовать только строчный идентификатор, если он определен как таковой в вашем файле checkstyle-config.xml. Если нет, вы должны использовать оригинальное имя модуля.
Например, если в моем checkstyle-config.xml у меня есть:
Я не могу использовать:
Я должен, однако, использовать:
Для того, чтобы первый синтаксис работал, checkstyle-config.xml должен иметь:
Это то, что у меня сработало, по крайней мере, в версии CheckStyle 6.17.
источник
У меня были трудности с ответами выше, возможно потому, что я установил предупреждения checkStyle как ошибки. Что сработало, так это SuppressionFilter: http://checkstyle.sourceforge.net/config_filters.html#SuppressionFilter
Недостатком этого является то, что диапазон строк хранится в отдельном файле suppresssions.xml, поэтому незнакомый разработчик может не сразу установить соединение.
источник
Чтобы настроить фильтр для подавления событий аудита между комментарием, содержащим строку BEGIN GENERATED CODE, и комментарием, содержащим строку END GENERATED CODE:
Узнать больше
источник
Вы можете попробовать https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathFilter
Вы можете настроить его как:
Сгенерируйте подавления Xpath, используя CLI с опцией -g, и укажите выходные данные, используя ключ -o.
https://checkstyle.sourceforge.io/cmdline.html#Command_line_usage
Вот фрагмент кода муравья, который поможет вам настроить автогенерацию подавления Checkstyle:
Suppressions-xpath.xml указывается в качестве источника подавлений Xpath в конфигурации правил Checkstyle. В приведенном выше фрагменте я загружаю путь класса Checkstyle из файла cs.cp в свойство. Вы можете указать путь к классу напрямую.
Или вы можете использовать groovy в Maven (или Ant), чтобы сделать то же самое:
Единственный недостаток использования подавлений Xpath - помимо проверок, которые он не поддерживает - это если у вас есть код, подобный следующему:
Подавление Xpath, сгенерированное в этом случае, не принимается Checkstyle, и проверка завершается с ошибкой с исключением:
Генерация подавлений Xpath рекомендуется, когда вы исправили все другие нарушения и хотите подавить все остальные. Это не позволит вам выбрать конкретные экземпляры в коде для подавления. Вы можете, однако, выбрать и выбрать подавления из сгенерированного файла, чтобы сделать именно это.
SuppressionXpathSingleFilter лучше подходит для идентификации и подавления определенного правила, файла или сообщения об ошибке. Вы можете настроить несколько фильтров, идентифицирующих каждый по атрибуту id.
https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathSingleFilter
источник