Grails的-CodeNarc和服务无国籍规则集

问题描述 投票:2回答:5

我试图在Grails项目使用codeNarc,安装并运行它后,我已经有一些规则集违规的消息,我想了解和解决。在关注“GrailsS​​tatelessService”,第二个“的equals()和toString()”方法的第一...

对于第一个“GrailsS​​tatelessService”我接收到的消息为:

***************************
Violation in class app.TheServiceName. The class is marked as stateless but contains the non-final field 'aVariableName'
***************************

我已经搜查了一点关于这一点,但没有找到很多关于花样。有人能请解释一下我这是什么规则集,我必须做什么真正意义上的解决这个问题/

关于第二类规则集的,我发现的地方,它通过覆盖在所有的领域类的方法来解决,但帽子的义务,需要,还是我只需要修改规则集文件,以避免这些类型与这些规则集的消息?

而且,介绍我的最后一个问题:在哪里可以找到这个规则集文件(默认的codenarc内)或一个我必须包括我自己?

grails grails-plugin grails-domain-class codenarc
5个回答
4
投票

我发现GrailsStatelessService规则有时确实赶上一个真正的侵犯,因此而不是禁用它,我修改它忽略我常用的字段名称。

BuildConfig.groovy:

codenarc.propertiesFile = 'grails-app/conf/codenarc.properties'

code narc.properties:

GrailsStatelessService.addToIgnoreFieldNames=grailsApplication,applicationContext,sessionFactory

3
投票

我能够如下配置此CodeNarc规则:

  1. 安装插件CodeNarc [Grails的安装,插件codenarc]
  2. 添加下面的BuildConfig.groovy行文件[详情配置]: codenarc.propertiesFile = 'grails-app/conf/codenarc.properties'
  3. 在codenarc.properties - 文件,我想补充以下规则忽略一些规则 codenarc.properties = { GrailsDomainHasEquals.enabled = false GrailsDomainHasToString.enabled = false EmptyMethod.enabled = false }
  4. 产生CodeNarc报告运行以下命令:grails codenarc

1
投票

documentation做了解释该规则的一个很好的工作:

检查上一个Grails服务类非final字段。 Grails的服务类在默认情况下单身,所以他们应该是折返。在大多数情况下,这意味着(或至少是鼓励),他们应该是无状态的。

这条规则忽略了最后的字段(实例或静态)。然而,这是静态的,非最终,菲尔兹做导致违反。


1
投票

有时condenarc混为一谈窗口。在服务的名称末尾添加服务删除此“问题”如果你不使用一类为无状态的,但codenarc认为如此。我有这个问题与本服务:

private CurrencyConverterFactory currencyConverterFactory

我固定的:

private CurrencyConverterFactory currencyConverterFactoryService

我希望这可以帮助别人。


0
投票

如果您使用的是Grails的CodeNarc插件,则可以看到该插件文档默认被包含在CodeNarc规则集的列表。还有的“配置CodeNarc规则集文件(S)”的部分 - 所以一切手段创建自己的自定义规则集。

http://www.grails.org/plugin/codenarc/

预计您定制一套适合您的团队/项目的规则。除“基本” rulset,另提供规则集都包含规则可能会或可能不适合你。

该GrailsDomainHasToString和GrailsDomainHasEquals规则是完美的例子 - 许多组织禁用这些规则。

请参阅有关关闭规则的详细信息,CodeNarc文档:

http://codenarc.sourceforge.net/codenarc-configuring-rules.html

© www.soinside.com 2019 - 2024. All rights reserved.