IntelliJ IDEA:如何在结构替换期间创建新的 class 字段

IntelliJ IDEA: How to create a new class field during Structural replace

我多次调用静态 class 方法

例如

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

我已经使用模板找到了所有需要的代码:

LegacyLogger.println(ERROR_LEVEL, $params$)

我怎样才能导入 class 并创建一个新字段

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

inside classes 将此搜索字符串替换为:

logger.error("Simple string parameter");

您可以尝试使用常规的“在路径中查找”搜索类似 "logger." 的内容,然后在“查找 window”中打开结果。这应该找到您使用新记录器的所有源文件。

然后创建结构搜索和替换模式以在 class 中插入新的记录器声明。搜索没有记录器声明的 classes 并使用范围 "Previous Search Results"。这应该在所有 classes 中插入新的记录器,而在之前搜索中找到的文件中没有记录器。

<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>

(使用对话框右上角工具按钮下的 "Import Template from Clipboard" 操作)