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

时间:2015-10-22 19:43:40

标签: grails codenarc

有没有办法关闭Grails控制器操作的Codenarc NoDef规则?该规则通常是一种良好的做法,但由于某些操作返回值而某些操作不返回,因此我们通常使用def来支持所有变体。我仔细看了一下,看看这个规则是否可以关闭控制器操作但是空了。有谁知道吗?

3 个答案:

答案 0 :(得分:2)

无法专门排除控制器操作,无法按类名排除(使用doNotApplyToClassNames属性),因为规则已应用按文件级别而不是类。

我能得到的最接近的是将整个Controller排除在规则之外:

NoDef.doNotApplyToFilesMatching = /.*Controller.groovy/

我还建议从规则中排除ServicesgrailsApplication注入,因为它不会让我在那里有defs。例如:

class SomeService {
    def otherService
    def grailsApplication
}

此规则配置应为:

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

答案 1 :(得分:1)

我阅读了博文并尝试了doNotApplyToClassNames选项,但它没有用。

来自文档:

  

NoDef规则

     

自CodeNarc 0.22起

     

注意:此规则适用于文件的文本内容而不是   特定的类,所以它不支持applyToClassNames和   doNotApplyToClassNames配置属性。

所以你实际上不能使用doNotApplyToClassNames参数,但是你可以使用user.save(function(err) { if (err) return next(err) // What's happening in passport's session? Check a specific field... console.log("Before relogin: "+req.session.passport.user.changedField) req.login(user, function(err) { if (err) return next(err) console.log("After relogin: "+req.session.passport.user.changedField) res.send(200) }) }) 属性,但你需要提出一个正则表达式来排除你的控制器动作。

  

描述属性,参数或名称的正则表达式   可以在def关键字之前的方法。

答案 2 :(得分:0)

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

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