问题标签 [structural-search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
600 浏览

java - 使用 Groovy 脚本约束进行结构搜索和替换

如何在结构搜索和替换中搜索给定的整数方法参数是否大于或等于给定值?或者这甚至可能吗?

例如:假设我有 100 次使用此方法

我想检查一个固定的(无变量数字)是否传递给 interfaceId 大于或等于给定的数字。

0 投票
1 回答
98 浏览

java - IDEA 结构搜索实现特定方法的类,没有其他方法

在我们的代码库中,我正在寻找给定类的匿名子类,它们实现了一种特定方法并且没有其他方法或字段。这些可以转换为 lambda 表达式并消除对匿名子类的需要。

我想出的搜索模板如下所示:

替换模板是这样的:

现在这个表达式找到了我想要重构的所有实例,但另外它还找到了也实现其他方法的子类(帮助方法或从超类覆盖)。

例如,我希望它在这段代码中找到子类:

这将转换为以下内容:

putAdditionalSubstitutions但是由于附加方法,我确实希望它在此代码中找不到子类:

有没有办法在搜索/替换对话框中表达“没有其他方法”?

目前,我只看到在“查找”视图中检查每个命中并删除不需要的命中并替换其余命中的方法。由于我们需要多次应用这种重构和类似重构(例如,处理并发编写的新代码),这变得相当费力。

0 投票
1 回答
383 浏览

java - 用 IntelliJ IDEA 的结构替换替换注释参数之一

我有很多带有 Spring@ContextConfiguration注释的类。注解有classes参数,可以是数组。

现在我的大部分课程都是这样的:

一些神奇的批处理操作的期望输出如下:

到目前为止,我什至无法让 IntelliJ IDEA 结构替换工具找到带有classes参数的注释,更不用说替换它了。甚至像这样的简化结构

什么也没找到。的出现次数ctx设置为无限制。

我应该如何正确使用注释参数?

0 投票
0 回答
375 浏览

java - 如何自动将注释从方法移动到字段?

我有大量使用 JPA 属性访问而不是字段访问的 Java 类,并且将它们转换为使用字段访问(将注释从 getter 移动到字段)非常耗时。从数据库表中重新生成它们也不是一种选择。

所以我正在考虑使用 IDEA 的结构搜索和替换来尝试自动移动注释。我想改变一个看起来像这样的类:

一个看起来像这样的:

从那里我将能够进行额外的重构,但我发现手动移动注释非常耗时。

我玩过结构搜索和替换,但它非常密集且缺乏文档,所以我很感激有关如何配置不同模板的任何提示。

我想它会是这样的:

找到所有以“get”开头的方法,这些方法至少带有一个javax.persistence.*注释,以及一个匹配的私有字段,并替换为相同的字段和方法,但将注释从一个方法移动到另一个字段。

我只是在努力将其放入结构搜索表达式中。

0 投票
1 回答
195 浏览

html - IntelliJ 结构搜索以查找自闭合 HTML 标记

现在,在 IntelliJ 上编程时,我不想在我的 html 文件中包含自闭合标签。

所以基本上,我会让 IntelliJ 发现以下代码片段作为警告:

我正在尝试使用 IntelliJ 上的结构搜索来确定我是否有任何自闭合标签。我尝试使用以下代码:

的文本约束在$tag$哪里[a-zA-Z]

但是,它几乎与我文件中的每个标签都匹配。有没有办法只强调我已经说明的两个例子?

0 投票
1 回答
702 浏览

java - 在 Intellij IDEA 中,找到实现一个接口但不扩展另一个类的类

在 Intellij IDEA 中使用结构搜索,如果我想找到所有实现接口但不扩展另一个类的类,搜索模板应该如何?模板分别是:

分别设置最小值和最大值 1,1 和 0,0。

我尝试了与这个问题类似的事情但没有成功:

IntelliJ 结构搜索以查找实现 A 但未实现 B 的类

0 投票
1 回答
371 浏览

jsf - IntelliJ 检查以查找没有“id”属性的标签

我需要在 IntelliJ 中设置检查,以查找没有 `id 属性的 xhtml/html/jsf 页面元素。

我尝试在“结构搜索”下的 intelliJ 中设置代码检查。但是,使用以下正则表达式我无法正确配置它。任何帮助,将不胜感激。

我知道正则表达式有效,因为当输入到查找框时,它会在我的文件中找到匹配项。

最后一件事,最后我将要扩展(?:h:inputText|h:outputText)以包含许多标签,因此如果在检查中使用变量或 intelliJ 中的其他内容,那么该解决方案将是最好的。我们希望确保所有开发人员都将id属性放在所有适用的页面元素上,以帮助简化测试。(JSF 标签很丑陋)

0 投票
1 回答
80 浏览

java - 改造迁移到 2.0

在迁移到 Retrofit 时,删除所有包含回调的服务调用是一场噩梦。我使用了结构搜索和替换,但由于方法调用的参数数量不同,我必须重复模板。我的模板如下,

搜索模板

替换模板

我使用数字 fo 参数来处理我们拥有的所有服务调用。想知道是否有任何方法可以编写一个搜索模板来查找所有具有“回调回调”作为参数的方法。

0 投票
1 回答
198 浏览

intellij-idea - 结构搜索以匹配方法调用与泛型参数

假设我有一个类class Foo : Base,我想使用签名执行某个方法调用

对于搜索模板,我只是以预先存在的模板为起点

是否可以匹配任何类型 Iterable的特定Base子类的参数(Foo在本例中)?

我已经尝试了几种组合但没有任何运气,甚至可以做到吗?

0 投票
1 回答
504 浏览

java - IntelliJ 结构搜索不会替换链/流式接口中的所有方法调用

考虑以下 Builder 样式类的完整示例。

使用 IntelliJ 的结构搜索,我想将表单的方法调用重构set("foo", value)setFoo(value)在某个类/接口上调用它的任何地方,对于所有字符串文字(不仅仅是“foo”)。

这仅在一定程度上适用于方法调用链(也称为“流利的”接口),其中相关set()方法返回this.

在上面的主要方法中,我标记为示例 1的内容得到了正确重构,但示例 2以这样的方式结束,这没有帮助:

我需要set("foo", 1)并且set("bar", 2)在这里也需要更新。


IntelliJ 可以处理这个用例吗?

以下是我传递给结构搜索和替换的选项的详细信息。我尝试过围绕“出现次数”调整选项,但遗憾的是没有提出任何可行的选项。这是模板的详细信息。

搜索模板: $Builder$.set($Key$, $Val$)

替换模板: $Builder$.set$Name$($Val$)

变量:

$Builder$ 表达式类型(正则表达式):com\.derp\.MyBuilder

$Key$ 表达式类型(正则表达式):java\.lang\.String

$Name$ 脚本文本:Key.getText().replace("\"", "").capitalize()