Java开发工具IntelliJ IDEA使用源代码系列教程(九):搜索模板,过滤器和脚本约束

当您为结构化搜索构建模式时,您基本上是在编写脚本。为了简化脚本编写过程,IntelliJ IDEA提供了一系列预定义的 搜索模板,您可以将它们用作搜索模式的原型。

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

IntelliJ IDEA最新试用版

搜索模板,过滤器和脚本约束

当您为结构化搜索构建模式时,您基本上是在编写脚本。为了简化脚本编写过程,IntelliJ IDEA提供了一系列预定义的 搜索模板,您可以将它们用作搜索模式的原型。

Java开发工具IntelliJ IDEA使用源代码系列教程(九):搜索模板,过滤器和脚本约束

每个搜索或替换模板均包含变量$variable_name$,您可以在这些变量中添加条件(过滤器)以缩小搜索结果的范围。过滤器取决于搜索模板中的变量。

Java开发工具IntelliJ IDEA使用源代码系列教程(九):搜索模板,过滤器和脚本约束

计数过滤器

所述计数过滤器指定了出现次数。

例如,在new java.lang.RuntimeException($x$)搜索模式中,对于$x$ 变量,请在计数过滤器字段中指定最小和最大数字。要设置无限的最大计数,请在过滤器字段中提供一个空值。

Java开发工具IntelliJ IDEA使用源代码系列教程(九):搜索模板,过滤器和脚本约束

IntelliJ IDEA将添加[0,∞]到变量并搜索指定的数字范围。

参考过滤器

通过引用过滤器,您可以引用变量中的其他一些搜索模板。

引用将始终包含预配置或保存的模式的名称,您可以使用自动完成功能来填写此字段。

例如,对于$MethodCalls$变量,在“ 引用 过滤器”字段中键入带注释的方法。

Java开发工具IntelliJ IDEA使用源代码系列教程(九):搜索模板,过滤器和脚本约束

IntelliJ IDEA搜索带有注释的方法的方法调用。

类型过滤器

“ 类型”过滤器添加了对指定变量期望的值或表达式的类型。

例如,对于$expression$变量,int在类型 过滤器字段中 键入。

Java开发工具IntelliJ IDEA使用源代码系列教程(九):搜索模板,过滤器和脚本约束

IntelliJ IDEA搜索对整数进行装箱的位置。

文字过滤器

在文字过滤器检查对正则表达式或纯文本的变量。

例如,您可以搜索实现特定接口的类。在这种情况下,请在“ 文本”过滤器中添加接口的标准名称。另外,选择“ 在类型层次结构内”选项,这样间接实现的类 Cloneable也将包括在搜索中。如果未选择此选项,则仅Cloneable包含直接实现的类。

Java开发工具IntelliJ IDEA使用源代码系列教程(九):搜索模板,过滤器和脚本约束

脚本约束

该脚本过滤器添加Groovy脚本约束的搜索模式。 当您搜索某些语言结构时,将使用脚本约束。

例如,具有指定数量的参数的构造函数,或具有指定的可见性修饰符的成员。

可以从脚本约束中访问模式中使用的所有变量 。当向变量添加脚本约束时,IntelliJ IDEA将其与PSI树进行匹配,实际上,此变量是PSI树中的一个节点

假设您有一个与方法,toString()方法相匹配的变量。那么这个变量实际上是一个PsiMethod节点。检索variable.parent将产生一个 PsiClass 节点,依此类推。variable.text然后将为您提供方法的整个文本。如果只需要方法的名称,则可以使用variable.name。

在另一种情况下,结构搜索和替换变量可以匹配某些表达式,例如,对变量a的引用 PsiReferenceExpression。表达式当然没有名称,但是检索表达式的整个文本将为您提供它所引用的变量的名称。

您可以检查以下现有模板中使用的脚本约束的语法:

  • 具有常量参数的样本方法调用
  • 具有无参数构造函数的类
  • 不是最终的静态字段
  • 未实现或扩展的接口
  • 读取的字段/变量
  • 具有给定名称模式的字段/变量已更新

Java开发工具IntelliJ IDEA使用源代码系列教程(九):搜索模板,过滤器和脚本约束

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

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

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

Java开发工具IntelliJ IDEA使用源代码系列教程(九):搜索模板,过滤器和脚本约束
标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

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

相关推荐

发表回复

登录后才能评论