IntelliJ IDEA 2025.1 Help

教程:Kotlin 中的结构化搜索与替换

结构化搜索和替换是一种强大的工具,可以在代码中搜索特定模式并以自动化方式进行替换。

在本教程中,您将了解模板和过滤器,修改预定义模板,然后基于它创建代码检查。

本教程所涵盖的功能绝不是 结构化搜索和替换 的全部功能。 我们的目标是让您开始使用。 之后,您可以探索各种模板、过滤器和选项,并将它们结合起来创建您自己的特定搜索。

对于本教程,我们将使用以下代码:

class Point constructor(locationX: Int, locationY: Int) { var x: Int = locationX var y: Int = locationY } open class OpenClass { open var openProperty = 0 open fun display() { println("Some text") print("More text") print(0) } }

打开结构化搜索对话框

  • 在主菜单中,前往 编辑 | 查找 | 结构化搜索(T)…

使用现有模板(属性声明)

  1. 结构搜索 对话框中,从左侧列表中选择 Kotlin

  2. 展开 基于类的 节点并点击 类的所有var

  3. 确保 Kotlin 被选中为 语言(L)。 这样搜索仅适用于 Kotlin 文件。

    仅搜索 Kotlin 文件
  4. 点击 查找 以运行搜索。 因此,在 查找 工具窗口中,IntelliJ IDEA 显示 Kotlin 类中声明的所有属性。

    在项目文件中找到的匹配项

重新运行

  • 结构搜索 对话框中,展开 最近 节点以浏览最近搜索的历史记录,并快速重新运行其中的任何一个。

现在,让我们回到结构搜索对话框来稍微修改一下预定义模板。

更改预定义模板

  1. 结构搜索 对话框中,通过在 open 变量之前添加 $Field$ ,我们来更新我们的模板以仅搜索未关闭的属性。

    更改类查找模板
  2. 点击 查找 并在 查找 工具窗口中检查结果。

    所有开放字段的结果

    正如您所见,这次搜索使用了过滤器,现在只显示了打开的属性。

通过 结构搜索 ,我们可以运行一些有趣的搜索。 让我们选择另一个现有的模板 (方法调用) 作为我们的示例。 假设我们正在执行此搜索以将所有 print 语句替换为日志调用,并排除所有不以 String 作为参数的调用。

替换函数调用

  1. 在主菜单中,前往 编辑 | 查找 | 结构化替换

  2. Kotlin | 表达式 节点下,选择 方法调用

    Kotlin 方法调用模板
  3. 如果我们现在运行搜索,结果将包括代码中的所有函数调用。 因此,我们应该稍微修改我们的模板,并使用过滤器来更具体地说明我们在寻找什么。

    请将文本光标放置在 $MethodCall$ 处,然后在右侧窗格中点击 添加修饰符。 添加一个值为 文本print.* 筛选器。

    向搜索模板添加文本过滤器
  4. 请将文本光标放在 $Before$ ,并确保在右侧窗格中唯一的修饰符是 Count=[0,1]

  5. 请将文本光标放置在 $Parameter$ 处,然后在右侧窗格中点击 加号图标。 添加一个值为 类型String 筛选器。

    在搜索模板中添加类型过滤器
  6. 替换模板 区域,添加替换代码: java.util.logging.Logger.getLogger(this.javaClass.getName()).fine($Parameter$)

    添加替换代码
  7. 请在 查找 工具窗口中检查结果,并使用替换选项选择您要替换的结果。

    替换模板的结果

如果需要,我们可以保存此模板以供日后使用。

保存模板

  1. 结构替换 对话框中,点击 工具按钮

  2. 在打开的列表中,选择 保存当前模板

  3. 请指定模板的名称,然后点击 确定

    保存替换模板

模板已保存到 已保存的模板 节点下。

用户定义模板列表

我们还可以将模板用作检查,因此当我们遇到相同代码时,会看到一个警告,并可以快速替换代码。

创建自定义检查

  1. 查找 工具窗口中,您会获得替换模式的结果,点击 从模板创建检查

    从替换模板创建新的检验
  2. 在打开的对话框中,添加检查的名称。 (可选)添加工具提示(悬停在高亮的代码上,会提供更详细的问题描述)。 点击 确定

新建的检查会出现在 结构搜索 节点下的 设置 | 编辑器 | 检查

最后修改日期: 2025年 4月 24日