grails-CodeNarc и Сервис без сохранения правил - PullRequest
2 голосов
/ 07 февраля 2012

Я пытаюсь использовать codeNarc в проекте grails, после его установки и запуска у меня появилось несколько сообщений о нарушениях правил, которые я хотел бы понять и устранить.Первый из них касается GrailsStatelessService, а второй - методы equals () и toString () ...

Для первого полученного GrailsStatelessService сообщения:

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

Я немного искал об этом, но не нашел много хитростей по этому поводу.Может кто-нибудь объяснить мне, каково истинное значение этого набора правил и что я должен сделать, чтобы решить эту проблему /

О втором типе набора правил, который я нашел где-то, что он решается путем переопределения этих методов во всех классах доменано является ли это обязательством, необходимостью или мне просто нужно изменить файл набора правил, чтобы избежать сообщений такого рода, связанных с этими наборами правил?

И это подводит мой последний вопрос: где найти этот файл набора правил (по умолчанию в codenarc) или тот, который я должен включить сам?

Ответы [ 5 ]

3 голосов
/ 11 декабря 2012

Я могу настроить следующие правила CodeNarc следующим образом:

  1. Установить плагин CodeNarc [ grails install-plugin 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

3 голосов
/ 08 февраля 2012

Я считаю, что правило GrailsStatelessService иногда обнаруживает реальное нарушение, поэтому вместо его отключения я изменяю его, игнорируя мои обычно используемые имена полей.

BuildConfig.groovy:

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

codenarc.properties:

GrailsStatelessService.addToIgnoreFieldNames=grailsApplication,applicationContext,sessionFactory
1 голос
/ 05 февраля 2019

Иногда сгущаются вещи.Добавление службы в конце имени службы устраняет эту «проблему», если вы не используете класс как не имеющий состояния, но кодер считает, что это так.У меня была эта проблема с этой службой:

private CurrencyConverterFactory currencyConverterFactory

И я исправил с помощью:

private CurrencyConverterFactory currencyConverterFactoryService

Надеюсь, это кому-нибудь поможет.

1 голос
/ 07 февраля 2012

Документация хорошо объясняет это правило:

Проверяет нефинальные поля в классе обслуживания Grails. Граальс сервис классы являются синглетонами по умолчанию, и поэтому они должны быть реентерабельными. В В большинстве случаев это подразумевает (или, по крайней мере, поощряет), что они должны быть без гражданства.

Это правило игнорирует конечные поля (экземпляры или статические). поля которые являются статическими и не являются окончательными, однако вызывают нарушение.

0 голосов
/ 07 февраля 2012

Если вы используете плагин Grails CodeNarc , то посмотрите в документации к плагину список CodeNarc наборов правил, которые включены по умолчанию. Также есть раздел «Настройка файла (ов) набора правил CodeNarc» - так что непременно создайте свой собственный набор правил.

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

Ожидается, что вы настроите набор правил, подходящий для вашей команды / проекта. За исключением «базового» набора правил, все остальные предоставленные наборы правил содержат правила, которые могут или не могут быть вам подходящими.

Правила GrailsDomainHasToString и GrailsDomainHasEquals являются прекрасными примерами - многие организации отключают эти правила.

См. Документацию CodeNarc для получения дополнительной информации об отключении правила:

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

...