问题标签 [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 回答
76 浏览

java - 使用 IDEA SSR 替换超类

我想搜索所有扩展的类Foo并让它们扩展Bar。IDEA 手册说这应该有效:

搜索模板

替换模板

where$Stuff$被配置为匹配零到无限次。

搜索部分工作正常,但替换总是有一个空的类主体。我尝试将$Stuff$' 的最小计数设置为 1 并且仍然匹配所有正确的类,但类主体仍然是空的。

0 投票
1 回答
116 浏览

intellij-idea - 如何编写一个健壮的结构搜索模板来报告在 IntelliJ IDEA 中通过验证的 Mockito times(1)/Times(1)?

在我的项目Mockito.times(1)中验证模拟时经常使用:

这是多余的,因为 Mockito 使用隐式times(1)for verify(Object),因此以下代码与上面的代码完全相同:

所以我要写一个结构搜索驱动检查来报告这种情况(比如说,命名为Mockito.times(1) 是多余的)。由于我不是 IntelliJ IDEA 结构搜索方面的专家,所以我的第一次尝试是:

显然,这不是一个好的搜索模板,因为它忽略了调用站点。比方说,我发现它对以下代码很有用,我不希望触发检查:

所以现在我想定义我希望触发检查的上下文。现在检查搜索模板变为:

伟大的!现在verify(mock, times(1)).call()报告的代码很好(如果times是从静态导入的org.mockito.Mockito)。但还有一件事。Mockito.times实际上来自对VerificationModeFactory此类验证模式进行分组的类,因此检查忽略了以下行:

我修复这个问题的另一种尝试是:

在哪里:

  • $mock$仍然是默认模板变量;
  • $times$是一个变量,其中Text/regexp设置为timesWhole words onlyValue is read设置为true,并且Expression type (regexp)设置为(Times|VerificationMode)- 至少这是我认为它应该工作的方式。

不能让它工作。为什么Times也包含在正则表达式中?这是 的真正实现*.times(int),因此,理想情况下,也应该报告以下行:

当然,我可以创建所有三个检查模板,但是是否可以使用单个搜索模板创建这样的模板?配置$times$变量时我缺少什么?

(我使用的是 IntelliJ IDEA 社区版 2016.1.1)

0 投票
0 回答
84 浏览

android-studio - Jetbrains 结构搜索 - 匹配常量

我正在使用 Android Studio,并且正在尝试为自己创建一个检查以匹配 a 的所有实例View.INVISIBLE- View 是一个类,而 INVISIBLE 是一个常量。如果我View.INVISIBLE在我的结构搜索查询中有它不会像我期望的那样找到它的实例。

这是下面的模板Inspections > Structural Search Inspection
,这里是它不适用

0 投票
2 回答
123 浏览

java - 通过 IDEA 结构化查找多次使用注释查找类

我想搜索至少有 3 个使用 @Inject 注释注释的字段的类,如下所示:

我已经设法创建了一个搜索模板,该模板可以找到扩展 UIComponent 的类,并且其中还有一个 @Inject 注释,但是,如果我将 Annotation 变量的“最小”出现次数设置为 3,Intellij 仍然返回只有一个的类@注入。

我想要进行上述搜索的原因是找到那些具有许多外部防御的 UI 组件,因此过于复杂并需要重构。如果您有更好的方法,也请分享。

0 投票
1 回答
465 浏览

android-studio - 在结构上替换参数名称以开头的方法

所以在我的代码中我有以下实例

我正在尝试仅对所有.setBackgroundResource(R.drawable.*方法进行结构替换。到目前为止,这是我正在尝试的:

搜索模板:

编辑变量:

由于某种原因,这拒绝匹配任何东西。如果我更改$Parameter$为空,或者.*它匹配所有setBackgroundResource方法。

有人会知道我在这里做错了什么吗?

0 投票
1 回答
596 浏览

regex - 结构搜索 - IntelliJ 中的完整匹配表达式

我发现IntelliJ IDE 中的结构搜索和替换功能非常强大。

在浏览现有模板并发现我的新超能力时,我遇到了名为“ logging without if”的模板。我的蜘蛛感觉敦促我检查“无”部分,因为它invert conditionComplete Match.

但是,我对 中使用的表达式感到困惑Complete Match。这里是:

if('_a) { 'st*; }

请帮助我了解如何使用此表达式。

2017 年 1 月 19 日更新:

正如@Faibbus 所指出的,文档说的_a_st变量。我的困惑是变量名。

名称_a_st仅出现在此处,而不会出现在模板中的其他位置。是什么让它们成为变量?结构搜索中的所有其他变量都被$dollar$符号包围。

下划线作为变量前缀的作用是什么?撇号在该表达式中的作用是什么?

我一点也不明白。我错过了什么?

0 投票
0 回答
43 浏览

search - PhpStorm 结构搜索,包含在约束语法中,如何搜索标签,被标签包围?

我想搜索一个footagwith 属性,用withfoo=bar括起来。bartagother=stuff

像一个

在 PhpStorm 结构搜索中,我找到了这个模板。我真的很想知道它是如何工作的,并发现它是由这种神奇的条件驱动的

这是什么语法?这个怎么运作?

0 投票
1 回答
629 浏览

java - Intellij 用 ClassName.class 替换 getClass()

在 IntellJ Idea 项目中是否有一种方法可以用当前类名 + .class 替换对 getClass() 的所有调用?

因此,例如替换:

0 投票
0 回答
149 浏览

php - Intellij IDEA 结构替换 PHP

我想在我的项目中到处替换表达式。所以我使用结构替换...但是当我指定替换模式时出现错误:

这是我的搜索模板:

这是我的替换模板:

谢谢您的帮助 ;)

0 投票
4 回答
529 浏览

java - 如何跨文件提取方法?

在我项目的所有 java 文件中,我想替换出现的情况:

接着就,随即:

IntelliJ IDEA 是否有任何行动或策略来做到这一点?

  • 我希望它特定getName我的类的方法,MyClass而不是替换代码,它指getName的是其他类调用的方法。
  • 我希望它找到尽可能的匹配项。它不应该关心额外的空格、换行符等。如果变量有另一个名称(如myObjor objX)它也应该工作。getObject().getName()也应该找到类似的调用。(搜索必须关心语义)。
  • 我希望它很快,而不是要求我一一经历数百场比赛。