Grails:关闭控制器操作的Codenarc NoDef规则

Grails: Turn off Codenarc NoDef rule for controller actions

有没有办法关闭 Grails 控制器操作的 Codarc NoDef 规则?该规则通常是一个很好的做法,但由于某些操作 return 一个值而有些则没有,我们通常使用 def 来支持所有变体。我环顾四周,看看是否可以为控制器操作关闭此规则,但结果是空的。有人知道吗?

如果您使用的是 codenarc 插件,那么我相信您应该能够禁用此博客中提到的 codenarc 规则集文件中的某些规则

http://www.tothenew.com/blog/grails-clean-code-configure-codenarc-plugin/

我阅读了博客 post 并尝试了 doNotApplyToClassNames 选项,但没有成功。

来自文档:

NoDef Rule

Since CodeNarc 0.22

NOTE: This rule applies to the text contents of a file rather than a specific class, so it does not support the applyToClassNames and doNotApplyToClassNames configuration properties.

所以您实际上不能使用 doNotApplyToClassNames 参数,但是有一个 excludeRegex 属性 可以使用,但是您需要想出一个正则表达式来排除您的控制器操作。

Regular expression describing names of attributes, parameters or methods that could be precede by the def keyword.

不能 专门排除控制器操作并且您 不能 通过 class 名称排除(使用doNotApplyToClassNames 属性) 因为规则是按文件级别应用的,而不是 class.

我能得到的最接近的结果是像这样从规则中排除整个控制器:

NoDef.doNotApplyToFilesMatching = /.*Controller.groovy/

我还建议从规则中排除 ServicesgrailsApplication 注入,因为在那里设置 defs 并不困扰我。例如:

class SomeService {
    def otherService
    def grailsApplication
}

这个规则配置应该是:

NoDef.excludeRegex = /(.+Service|.+Controller|grailsApplication)/