Подтвердить что ты не робот

Checkstyle: как разрешить ошибку "скрытого поля"

Я получаю эту ошибку checkstyle:

'serverURL' hides a field

в этом

 private static void setServerURL(final String serverURL) {
    Utility.serverURL = serverURL;
 }

В чем может быть причина и как его решить?

4b9b3361

Ответ 1

Существует уже определенная переменная serverURL, доступная этому методу (дополнительно к формальному параметру, который вы принимаете). Это называется "затенением".

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

Например, это вызовет ошибку:

public class Foo {
  private int bar = 0;

  public void someMethod(int bar) {
    // There are two bars!  All references in this method will use the parameter bar,
    // unless they are explicitly prefixed with 'this'.
    this.bar = bar;
  }
}

Ответ 2

Я думаю, что в конструкторах и сеттерах очень часто встречается, что имя заданного поля совпадает с именем параметра setter. Вот почему я рекомендую эту конфигурацию:

<module name="HiddenField" >
    <property name="ignoreSetter" value="true" />
    <property name="ignoreConstructorParameter" value="true" />
</module>

Таким образом, все остальные случаи скрытого поля по-прежнему запрещены.

Ответ 3

Параметр и статическое поле имеют одно и то же имя. Просто переименуйте один из них. Некоторые люди следуют соглашению об именах, которое префикрует все параметры с помощью p. Тогда у вас будет serverURL в качестве имени поля и pServerURL в качестве имени параметра. Или вы можете просто отключить проверку.

Ответ 4

Я разрешил его, отключив его в eclipse. Я искал, как это сделать, когда я приземлился на этой странице. Я не нашел ответ в 10 самых популярных запросов Google, поэтому мне пришлось разобраться с этим. Для тех, кто ищет это, вот как я это сделал:

Открыть

Затмение > Настройки > Checkstyle

Найдите конфигурацию checkstyle, которую вы используете (возможно, вы установили ее или используете по умолчанию, и в этом случае лучше создать собственную копию, а затем отредактировать ее). Выберите это, а затем нажмите кнопку "Настройка" справа. Найдите в списке следующую конфигурацию:

Проблемы с кодированием > Скрытое поле

Откройте конфигурацию (в пользовательском интерфейсе есть кнопка "открыть" ).

Снимите флажок "Декларация параметров". Нажмите "ОК" , затем "ОК" , а затем "ОК" .

Ответ 5

Просто измените имя параметра ur в методе ур

private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}

to

private static void setServerURL(final String serverURLXYZ) {
Utility.serverURL = serverURLXYZ;
}

Enjoy...

Джигар Патель

Ответ 6

Какая-то глупая ошибка, но вот простое исправление, которое я вставил в мои сеттеры:

было:

public void setName(String name) {
  this.name = name;
}

обновлено:

public void setName(String val) {
  this.name = val;
}