Это сложнее, чем кажется на первый взгляд. Конечно, проверка MethodName - это проверка, но проблема заключается в том, чтобы ограничить проверку на методы, определенные в интерфейсах.
Проверка MethodName должен быть настроен следующим образом:
<module name="MethodName">
<property name="id" value="methodNameInInterface"/>
<property name="format" value="^run(?=.{0,22}$)[A-Z][a-zA-Z0-9]*$"/>
</module>
Обратите внимание на id
свойство, которое используется для идентификации данного правила в подавлении фильтра конфигурации, как вы будете иметь другие MethodName проверки. Это легкая часть.
Для подавления генерируемого предупреждения для всех методов, но определенных в интерфейсах, вы можете использовать suppression filter. Но это будет работать, только если у вас есть соглашение об именах для интерфейсов (например, общий постфикс IF
). Если у вас нет такой именовании, то вам придется либо:
- реализовать custom filter, который может фильтровать сообщения, основанные на типе файла, или
- реализовать custom check, возможно, в качестве подкласса от Имя метода, в котором добавлена опция ограничения предупреждений для определенных типов файлов.
Если у вас есть соглашение об именовании интерфейсов, вы можете настроить фильтр подавления так:
<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
<suppress id="methodNameInInterface" files="(?!IF)..\.java$"/>
</suppressions>
Большое спасибо за ваш ответ Томас. У меня есть какое-то соглашение об именах, потому что имя интерфейса будет иметь четыре буквы, за которыми следует «U» и заканчивается 3 символами/цифрами. С другой стороны, реализация будет иметь одинаковую структуру, но с импломентом в конце. Поэтому я думаю, что этого может быть достаточно с фильтром следующим образом: files = "\ D {4} U \ w {3} .java $" Я прав? Кроме того, необходимо указать имя пакета? Еще раз спасибо за помощь – user3149877
Да, это должно быть хорошо. Обратите внимание, что '\ w' содержит символы подчеркивания. Имя пакета * может * использоваться, но оно не требуется. –
Я только что заметил ошибку в регулярном выражении подавления. Исправлено выше. В вашем случае вам понадобится '(?! \ D {4} U \ w {3}). {8} .java $'. Извините за путаницу. –