Grails:关闭控制器操作的Codenarc NoDef规则
有没有办法关闭Grails控制器操作的Codenarc NoDef规则?一般来说,该规则是一个很好的实践,但由于有些操作返回值,而有些操作不返回值,因此我们通常使用def来支持所有变量。我环顾了一下四周,看看是否可以为控制器操作关闭此规则,但结果是空的。有人知道吗?如果您正在使用codenarc插件,那么我相信您应该能够禁用codenarc规则集文件中的一些规则,如本博客所述Grails:关闭控制器操作的Codenarc NoDef规则,grails,codenarc,Grails,Codenarc,有没有办法关闭Grails控制器操作的Codenarc NoDef规则?一般来说,该规则是一个很好的实践,但由于有些操作返回值,而有些操作不返回值,因此我们通常使用def来支持所有变量。我环顾了一下四周,看看是否可以为控制器操作关闭此规则,但结果是空的。有人知道吗?如果您正在使用codenarc插件,那么我相信您应该能够禁用codenarc规则集文件中的一些规则,如本博客所述 我读了这篇博文,尝试了doNotApplyToClassNames选项,但没有成功 从文件中: NoDef规则 自Cod
我读了这篇博文,尝试了doNotApplyToClassNames选项,但没有成功 从文件中: NoDef规则 自CodeNarc 0.22以来 注意:此规则适用于文件的文本内容,而不是 特定类,因此它不支持ApplyToClassName和 doNotApplyToClassNames配置属性 因此,您不能实际使用doNotApplyToClassNames参数,但可以使用
excludeRegex
属性,但需要使用正则表达式来排除控制器操作
描述属性、参数或参数名称的正则表达式
可以在def关键字前面的方法
不能排除特定的控制器操作,也不能按类名排除(使用
donotaplytoclassnames
属性),因为规则是按文件级别而不是类应用的
我能得到的最接近的方法是将整个控制器从规则中排除,如下所示:
NoDef.doNotApplyToFilesMatching = /.*Controller.groovy/
我还建议将服务
和grailsApplication
注入排除在规则之外,因为在规则中有def并不麻烦我。例如:
class SomeService {
def otherService
def grailsApplication
}
此操作的规则配置应为:
NoDef.excludeRegex = /(.+Service|.+Controller|grailsApplication)/
“我们通常使用def支持所有变体”-请注意,如果方法返回类型为
void
,则不会将其配置为控制器操作。我知道这不是你要问的,但我想指出一点,以防这可能会有帮助。你不能通过文件名配置这个特定的Codenarc规则。检查@j4y答案。