Использование структурной замены в IntelliJ для изменения уровня защиты поля
Я пытаюсь использовать Structural Replace, чтобы пометить все частные поля как предупреждения, а затем предложить заменить их защищенными полями. (Я знаю, что многие люди могут не согласиться с моим выбором уровней защиты, но это отдельная проблема)
У меня есть следующее:
class $Class$ {
@Modifier("private") $FieldType$ $FieldName$ = $Init$;
}
В "Редактировать переменные..." я проверил "FieldName" на "Эта переменная является целью поиска".
Это правильно подсвечивает переменные, помеченные как частные. Однако предложение о замене совершенно неверно:
Как изменить настройки "Заменить конструкцию", чтобы предложить защитить поле?
ОБНОВИТЬ
Я изменил мои строки поиска / замены, чтобы они выглядели следующим образом, что работает значительно лучше:
Это позволяет мне заменить определения полей, такие как private int foo=1
с protected int foo=1
, Тем не менее, он не работает с private static final int foo=1
, который он заменяет protected int foo=1
Какие-либо предложения?
2 ответа
Похоже, что удаляемые модификаторы - старая ошибка в Структурном поиске и замене. Я отправил отчет об ошибке.
Вы можете добиться большего успеха с заменами регулярных выражений с помощью группировки.
SSR привередлив - он работает только с реальными правильно сформированными сегментами кода... может быть, он не поддерживает 'static' в качестве замены подстановочного знака?