Использование структурной замены в IntelliJ для изменения уровня защиты поля - PullRequest
4 голосов
/ 14 марта 2012

Я пытаюсь использовать Structural Replace, чтобы пометить все частные поля как предупреждения, а затем предложить заменить их защищенными полями.(Я знаю, что многие могут не согласиться с моим выбором уровней защиты, но это отдельная проблема)

У меня есть следующее:

class $Class$ { 
 @Modifier("private") $FieldType$ $FieldName$ = $Init$;
}

enter image description here

В«Изменить переменные ...» У меня проверено «FieldName» на «Эта переменная является целью поиска».

Это правильно подсвечивает переменные, помеченные как закрытые.Тем не менее, предложение о замене совершенно неверно:

enter image description here

Как изменить мои настройки замены конструкции, чтобы предложить сделать поле защищенным?

ОБНОВЛЕНИЕ

Я изменил мои строки поиска / замены на следующие, что работает значительно лучше:

enter image description here

Это позволяет мне заменять определения полей такимикак private int foo=1 с protected int foo=1.Тем не менее, он НЕ работает с private static final int foo=1, который он заменяет на protected int foo=1 Любые предложения?

Ответы [ 2 ]

1 голос
/ 27 апреля 2017

Похоже, что удаляемые модификаторы - старая ошибка в Структурном поиске и замене. Я отправил сообщение об ошибке .

0 голосов
/ 11 мая 2012

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

SSR является привередливым - он работает только с реальными правильно сформированными сегментами кода ... может быть, он не поддерживает 'static' в качестве замены подстановочного знака?

...