我试图在Grails项目使用codeNarc
,安装并运行它后,我已经有一些规则集违规的消息,我想了解和解决。在关注“GrailsStatelessService”,第二个“的equals()和toString()”方法的第一...
对于第一个“GrailsStatelessService”我接收到的消息为:
***************************
Violation in class app.TheServiceName. The class is marked as stateless but contains the non-final field 'aVariableName'
***************************
我已经搜查了一点关于这一点,但没有找到很多关于花样。有人能请解释一下我这是什么规则集,我必须做什么真正意义上的解决这个问题/
关于第二类规则集的,我发现的地方,它通过覆盖在所有的领域类的方法来解决,但帽子的义务,需要,还是我只需要修改规则集文件,以避免这些类型与这些规则集的消息?
而且,介绍我的最后一个问题:在哪里可以找到这个规则集文件(默认的codenarc内)或一个我必须包括我自己?
我发现GrailsStatelessService
规则有时确实赶上一个真正的侵犯,因此而不是禁用它,我修改它忽略我常用的字段名称。
BuildConfig.groovy:
codenarc.propertiesFile = 'grails-app/conf/codenarc.properties'
code narc.properties:
GrailsStatelessService.addToIgnoreFieldNames=grailsApplication,applicationContext,sessionFactory
我能够如下配置此CodeNarc规则:
codenarc.propertiesFile = 'grails-app/conf/codenarc.properties'
codenarc.properties = {
GrailsDomainHasEquals.enabled = false
GrailsDomainHasToString.enabled = false
EmptyMethod.enabled = false
}
grails codenarc
该documentation做了解释该规则的一个很好的工作:
检查上一个Grails服务类非final字段。 Grails的服务类在默认情况下单身,所以他们应该是折返。在大多数情况下,这意味着(或至少是鼓励),他们应该是无状态的。
这条规则忽略了最后的字段(实例或静态)。然而,这是静态的,非最终,菲尔兹做导致违反。
有时condenarc混为一谈窗口。在服务的名称末尾添加服务删除此“问题”如果你不使用一类为无状态的,但codenarc认为如此。我有这个问题与本服务:
private CurrencyConverterFactory currencyConverterFactory
我固定的:
private CurrencyConverterFactory currencyConverterFactoryService
我希望这可以帮助别人。
如果您使用的是Grails的CodeNarc插件,则可以看到该插件文档默认被包含在CodeNarc规则集的列表。还有的“配置CodeNarc规则集文件(S)”的部分 - 所以一切手段创建自己的自定义规则集。
http://www.grails.org/plugin/codenarc/
预计您定制一套适合您的团队/项目的规则。除“基本” rulset,另提供规则集都包含规则可能会或可能不适合你。
该GrailsDomainHasToString和GrailsDomainHasEquals规则是完美的例子 - 许多组织禁用这些规则。
请参阅有关关闭规则的详细信息,CodeNarc文档:
http://codenarc.sourceforge.net/codenarc-configuring-rules.html