Поиск / замена атрибутов соответствующими геттерами / сеттерами - PullRequest
2 голосов
/ 24 марта 2019

Проблема:

Наличие большого количества классов, атрибуты которых определены с имена, где первый символ в верхнем регистре.

Пример:

class FirstClass {
  private Integer FirstValue;
  private Double SecondValue;
  private String ThirdValue;

  public Integer getFirstValue() {
    return FirstValue;
  }
  public Double getSecondValue() {
    return SecondValue;
  }
  public String getThirdValue() {
    return ThirdValue;
  }
  public void setFirstValue(Integer newVal) {
    FirstValue = newVal
  }
  ..
}

В настоящее время я настроил шаблон структурного поиска, который выглядит следующим образом:

class $class$ {
    private $FieldType$ $Field$;

    public $FieldType$ $MethodCallGet$() {
        return $Field$;
    }

    public void $MethodCallSet$($FieldType$ $parameter$) {
        $Field$ = $parameter$;
    }
}

Я настроил переменные следующим образом:

  • $class$: text=^(XYZ|ABC).*
  • $FieldType$: all fields of the class
  • $Field$: [A-ZÄÖÜ][a-zA-Z0-9_ÄÜÖäüÖ]+
  • $MethodCallGet$: text=^get.*
  • $MethodCallSet$: text=^set.*

Итак, сначала он найдет атрибуты с первым символом в верхнем регистре, но, к сожалению, он найдет только один атрибут в каждом классе, включая его метод получения / установки.

1. Вопрос:

Как я могу найти все атрибуты, включая метод получения / установки?

2. Вопрос:

Как я могу заменить атрибуты его аналогами изменений. Изменено первый символ только в нижнем регистре. Также внутри геттера / сеттера?

1 Ответ

1 голос
/ 27 марта 2019

Нет хорошего способа сделать это с помощью Структурного поиска. То, что вы можете сделать, - это проверка «Java | Соглашения об именах | Соглашение об именах полей», чтобы найти все поля экземпляров с именами, не соответствующими указанному соглашению об именах, а затем использовать быстрое исправление проверки, чтобы переименовать поля одно за другим.

Вы также можете проголосовать за https://youtrack.jetbrains.com/issue/IDEA-12246

...