IntelliJ IDEA: как создать новое поле класса во время структурной замены

У меня много вызовов метода статического класса

E.g.

LegacyLogger.println (ERROR_LEVEL, "Simple string parameter");

Я нашел все необходимые вхождения кода, используя шаблон:

LegacyLogger.println(ERROR_LEVEL, $params$)

Как я могу импортировать класс и создать новое поле

Logger logger = Logger.GetInstance(SomeClass.class);

внутри классов после замены этой строки поиска на:

logger.error("Simple string parameter");

person ngranin    schedule 08.06.2020    source источник


Ответы (1)


Вы можете попробовать обычный поиск в пути для чего-то вроде «логгер». и откройте результат в окне поиска. Это должно найти все исходные файлы, в которых вы используете новый регистратор.

Затем создайте шаблон структурного поиска и замены, чтобы вставить новое объявление регистратора в класс. Найдите классы без объявления регистратора и используйте область «Предыдущие результаты поиска». Это должно вставить новый регистратор во все классы без регистратора в файлы, найденные при предыдущем поиске.

<replaceConfiguration name="Unnamed" text="class $A$ {&#10;  Logger $logger$ = Logger.GetInstance(SomeClass.class);&#10;}" recursive="false" caseInsensitive="false" type="JAVA" pattern_context="default" reformatAccordingToStyle="false" shortenFQN="false" replacement="class $A$ {&#10;  Logger logger = Logger.GetInstance(SomeClass.class);&#10;}">
  <constraint name="__context__" within="" contains="" />
  <constraint name="A" within="" contains="" />
  <constraint name="logger" minCount="0" maxCount="0" within="" contains="" />
</replaceConfiguration>

(Используйте действие «Импорт шаблона из буфера обмена» под кнопкой инструментов в правом верхнем углу диалогового окна)

person Bas Leijdekkers    schedule 09.06.2020