Grails: отключить правило Codenarc NoDef для действий контроллера
Есть ли способ отключить правило Codenarc NoDef для действий контроллера Grails? В целом, правило следует соблюдать, но некоторые действия возвращают значение, а некоторые нет, поэтому мы обычно используем def для поддержки всех вариантов. Я немного огляделся, чтобы посмотреть, можно ли отключить это правило для действий контроллера, но оно оказалось пустым. Кто-нибудь знает?
3 ответа
Если вы используете плагин codenarc, то я считаю, что вы сможете отключить некоторые правила в файле набора правил codenarc, как упомянуто в этом блоге.
http://www.tothenew.com/blog/grails-clean-code-configure-codenarc-plugin/
Вы не можете исключить конкретно действия контроллера и не можете исключить также по имени класса (используя doNotApplyToClassNames
свойство), поскольку правило применяется уровнем файла, а не классом.
Самое близкое, что я мог получить, это исключить весь Контроллер из правила следующим образом:
NoDef.doNotApplyToFilesMatching = /.*Controller.groovy/
Я также рекомендую исключить Services
а также grailsApplication
инъекция из правила, так как меня это не беспокоит. Например:
class SomeService {
def otherService
def grailsApplication
}
Конфигурация правила для этого должна быть:
NoDef.excludeRegex = /(.+Service|.+Controller|grailsApplication)/
Я прочитал сообщение в блоге и попробовал параметр doNotApplyToClassNames, но он не сработал.
Из документации:
Правило NoDef
С CodeNarc 0,22
ПРИМЕЧАНИЕ. Это правило применяется к текстовому содержимому файла, а не к определенному классу, поэтому оно не поддерживает свойства конфигурации applyToClassNames и doNotApplyToClassNames.
Таким образом, вы не можете использовать параметр doNotApplyToClassNames, но есть excludeRegex
свойство, которое вы можете использовать, но вам нужно будет придумать регулярное выражение, чтобы исключить действия вашего контроллера.
Регулярное выражение, описывающее имена атрибутов, параметров или методов, которым может предшествовать ключевое слово def.