Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails:关闭控制器操作的Codenarc NoDef规则_Grails_Codenarc - Fatal编程技术网

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

Grails:关闭控制器操作的Codenarc NoDef规则,grails,codenarc,Grails,Codenarc,有没有办法关闭Grails控制器操作的Codenarc NoDef规则?一般来说,该规则是一个很好的实践,但由于有些操作返回值,而有些操作不返回值,因此我们通常使用def来支持所有变量。我环顾了一下四周,看看是否可以为控制器操作关闭此规则,但结果是空的。有人知道吗?如果您正在使用codenarc插件,那么我相信您应该能够禁用codenarc规则集文件中的一些规则,如本博客所述 我读了这篇博文,尝试了doNotApplyToClassNames选项,但没有成功 从文件中: NoDef规则 自Cod

有没有办法关闭Grails控制器操作的Codenarc NoDef规则?一般来说,该规则是一个很好的实践,但由于有些操作返回值,而有些操作不返回值,因此我们通常使用def来支持所有变量。我环顾了一下四周,看看是否可以为控制器操作关闭此规则,但结果是空的。有人知道吗?

如果您正在使用codenarc插件,那么我相信您应该能够禁用codenarc规则集文件中的一些规则,如本博客所述


我读了这篇博文,尝试了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答案。