Java开发工具IntelliJ IDEA使用源代码系列教程(八):结构搜索和替换

常规的搜索过程没有考虑源代码的语法和语义。即使您使用正则表达式,IntelliJ IDEA仍会将您的代码视为正则文本。该结构的搜索和替换(SSR)操作,您可以搜索你的代码考虑您的代码结构中的特定代码模式或语法结构。

IntelliJ IDEA是Java语言开发的集成环境,IntelliJ在业界被公认为优秀的Java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。IntelliJ IDEA 现已加入在线订购,点击此处了解价格详情>>

IntelliJ IDEA最新试用版

结构搜索和替换

常规的搜索过程没有考虑源代码的语法和语义。即使您使用正则表达式,IntelliJ IDEA仍会将您的代码视为正则文本。该结构的搜索和替换(SSR)操作,您可以搜索你的代码考虑您的代码结构中的特定代码模式或语法结构。

IntelliJ IDEA根据您创建的搜索模板和 您应用的条件来查找并替换源代码的片段 。

从结构上搜索目标

在“ 结构搜索”对话框中,可以快速切换到“ 结构替换”对话框。单击 

设置按钮并选择 切换到替换。

2、在“ 结构搜索”对话框中,执行下列操作之一:

  • 从头开始创建自己的模板。
设置按钮,然后选择 保存模板以将其保存以备将来使用。

IntelliJ IDEA将创建的模板添加到“ 现有模板”对话框中的现有模板列表(“ 用户定义”节点)中 。

  • 使用现有模板之一作为原型。

单击“开始” 

设置按钮,选择“ 现有模板”以打开预定义模板的列表,然后选择适当的模板。

例如,您的代码中包含以下字段:

public class MainActivity {    public static final String this_is_wrong = "Hello";    public static final String THIS_IS_CORRECT = "world";}

让我们在类中找到一个特定的字段。

在现有模板列表中,单击Java并打开基于类的 节点(因为我们需要类中的字段),所以类 模板的字段将成为我们的目标。

Java开发工具IntelliJ IDEA使用源代码系列教程(八):结构搜索和替换

单击“ 确定”返回到“ 结构搜索”对话框,以使用所选模板。

Java开发工具IntelliJ IDEA使用源代码系列教程(八):结构搜索和替换

4、在过滤器区域中,单击

添加按钮以添加新条件。例如,如果需要添加正则表达式,请选择Text。您还可以 根据变量添加其他条件。

5、在打开的字段中,输入条件。

例如,让我们键入以下正则表达式:

在这种情况下,当您在“ 结构搜索”对话框中选择“ 区分大小写”复选框时 ,IntelliJ IDEA将仅搜索具有大写字符的字段。

另请注意,默认情况下,“ 递归”复选框处于选中状态。这意味着IntelliJ IDEA将执行递归搜索,并且所有嵌套项都将包含在结果中。例如,当您搜索方法调用时,如果启用了“ 递归”选项,则IntelliJ IDEA将在中找到嵌套的方法调用foo(foo(foo()))。随着 递归选项被禁用,只有外部方法调用会被发现。

6、指定以下选项以进一步缩小搜索范围:

文件类型 -使用列表进行选择,哪些文件类型应成为搜索的一部分。在我们的例子中是Java。

范围 -指定搜索位置:在项目,模块,目录或自定义范围内。

搜索目标 -您可以选择完全匹配以匹配确切的模板或其他可用的代码元素(在我们的示例中为 Field )。

Java开发工具IntelliJ IDEA使用源代码系列教程(八):结构搜索和替换

7、点击查找。

IntelliJ IDEA在“ 查找工具”窗口中显示结果。

Java开发工具IntelliJ IDEA使用源代码系列教程(八):结构搜索和替换

您可以将新创建的搜索模板作为自定义模板添加到 结构搜索检查中,并在以后使用它检查代码。

在某些情况下,您可以使用检查代替结构搜索和替换。例如,通过结构搜索用接口替换类不会修改用法,您将需要执行搜索并替换多次。在这种情况下,您可以使用抽象类进行接口 检查,这还将修改抽象类的用法。

从结构上替换目标

2、在“ 替换结构”对话框中,将新模板现有模板添加到搜索和替换模板区域。您可以使用与搜索模板相同的方式保存替换模板。

3、如果您需要为替换模板中的变量添加过滤器,请在所需的变量处插入插入符 ,然后使用过滤器区域来管理过滤器。

4、在过滤器区域中,根据您选择的 过滤器,指定条件。

例如,让我们获取一个$Field$要搜索的变量, 并添加条件以用小写字符替换找到的模式。

让我们调用变量$Field2$ 并添加以下过滤器脚本,该脚本基本上是Groovy脚本:Field.name.toLowerCase()。

5、要缩小替换结果的范围,请选择以下选项:

  • 缩短全限定名 -用短名称和导入替换全限定类名。
  • 重新格式化 -自动格式化替换的代码。
  • 使用静态导入 -尽可能使用静态导入进行替换。例如,如果选择此选项,则对静态方法的方法调用将Math.abs(i)变为 abs(i)。

指定必要的选项后,点击查找。IntelliJ IDEA在“ 查找工具”窗口中显示结果。

6、在“ 查找”工具窗口中,您可以进一步处理结果,一次一地替换找到的项,一次全部替换,或者预览可能的更改。

您还可以将替换模板添加到 结构搜索检查中, 并将其用作代码的快速修复。

Java开发工具IntelliJ IDEA使用源代码系列教程(八):结构搜索和替换

作为我们替换的结果,大写字符已切换为小写。

Java开发工具IntelliJ IDEA使用源代码系列教程(八):结构搜索和替换

共享搜索模板

您可以通过导出或导入与他人共享搜索模板。

2、要导出模板,请单击,然后

设置按钮选择 将模板导出到剪贴板。IntelliJ IDEA将模板的XML表示形式添加到剪贴板(按Ctrl+Shift+V查看剪贴板的内容)。您可以在聊天,电子邮件或论坛中与其他开发人员共享此表示。

要导入模板,请Ctrl+C从任何地方(电子邮件,聊天或论坛)复制()共享XML代码,然后在“ 结构搜索”对话框中,单击,然后

设置按钮选择 从剪贴板导入模板。IntelliJ IDEA将XML代码表示形式转换为包含变量和范围(如果存在)的模板。

====================================================

想要了解或购买IntelliJ IDEA正版授权的朋友,欢迎咨询官方客服

JetBrain技术交流群现已开通,QQ搜索“786598704或者扫描下方二维码即可加入

Java开发工具IntelliJ IDEA使用源代码系列教程(八):结构搜索和替换

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月1日
下一篇 2020年5月1日

相关推荐

发表回复

登录后才能评论