有没有办法关闭Grails控制器操作的Codenarc NoDef规则?该规则通常是一种良好的做法,但由于某些操作返回值而某些操作不返回,因此我们通常使用def来支持所有变体。我仔细看了一下,看看这个规则是否可以关闭控制器操作但是空了。有谁知道吗?
答案 0 :(得分:2)
您无法专门排除控制器操作,无法按类名排除(使用doNotApplyToClassNames
属性),因为规则已应用按文件级别而不是类。
我能得到的最接近的是将整个Controller排除在规则之外:
NoDef.doNotApplyToFilesMatching = /.*Controller.groovy/
我还建议从规则中排除Services
和grailsApplication
注入,因为它不会让我在那里有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/