问题标签 [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.
java - 使用 IDEA SSR 替换超类
我想搜索所有扩展的类Foo
并让它们扩展Bar
。IDEA 手册说这应该有效:
搜索模板
替换模板
where$Stuff$
被配置为匹配零到无限次。
搜索部分工作正常,但替换总是有一个空的类主体。我尝试将$Stuff$
' 的最小计数设置为 1 并且仍然匹配所有正确的类,但类主体仍然是空的。
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设置为times
,Whole words only和Value is read设置为true
,并且Expression type (regexp)
设置为(Times|VerificationMode)
- 至少这是我认为它应该工作的方式。
不能让它工作。为什么Times
也包含在正则表达式中?这是 的真正实现*.times(int)
,因此,理想情况下,也应该报告以下行:
当然,我可以创建所有三个检查模板,但是是否可以使用单个搜索模板创建这样的模板?配置$times$
变量时我缺少什么?
(我使用的是 IntelliJ IDEA 社区版 2016.1.1)
android-studio - Jetbrains 结构搜索 - 匹配常量
我正在使用 Android Studio,并且正在尝试为自己创建一个检查以匹配 a 的所有实例View.INVISIBLE
- View 是一个类,而 INVISIBLE 是一个常量。如果我View.INVISIBLE
在我的结构搜索查询中有它不会像我期望的那样找到它的实例。
java - 通过 IDEA 结构化查找多次使用注释查找类
我想搜索至少有 3 个使用 @Inject 注释注释的字段的类,如下所示:
我已经设法创建了一个搜索模板,该模板可以找到扩展 UIComponent 的类,并且其中还有一个 @Inject 注释,但是,如果我将 Annotation 变量的“最小”出现次数设置为 3,Intellij 仍然返回只有一个的类@注入。
我想要进行上述搜索的原因是找到那些具有许多外部防御的 UI 组件,因此过于复杂并需要重构。如果您有更好的方法,也请分享。
android-studio - 在结构上替换参数名称以开头的方法
所以在我的代码中我有以下实例
我正在尝试仅对所有.setBackgroundResource(R.drawable.*
方法进行结构替换。到目前为止,这是我正在尝试的:
搜索模板:
编辑变量:
由于某种原因,这拒绝匹配任何东西。如果我更改$Parameter$
为空,或者.*
它匹配所有setBackgroundResource
方法。
有人会知道我在这里做错了什么吗?
regex - 结构搜索 - IntelliJ 中的完整匹配表达式
我发现IntelliJ IDE 中的结构搜索和替换功能非常强大。
在浏览现有模板并发现我的新超能力时,我遇到了名为“ logging without if
”的模板。我的蜘蛛感觉敦促我检查“无”部分,因为它invert condition
在Complete Match
.
但是,我对 中使用的表达式感到困惑Complete Match
。这里是:
if('_a) { 'st*; }
请帮助我了解如何使用此表达式。
2017 年 1 月 19 日更新:
正如@Faibbus 所指出的,文档说的_a
是_st
变量。我的困惑是变量名。
名称_a
和_st
仅出现在此处,而不会出现在模板中的其他位置。是什么让它们成为变量?结构搜索中的所有其他变量都被$dollar$
符号包围。
下划线作为变量前缀的作用是什么?撇号在该表达式中的作用是什么?
我一点也不明白。我错过了什么?
java - Intellij 用 ClassName.class 替换 getClass()
在 IntellJ Idea 项目中是否有一种方法可以用当前类名 + .class 替换对 getClass() 的所有调用?
因此,例如替换:
和
php - Intellij IDEA 结构替换 PHP
我想在我的项目中到处替换表达式。所以我使用结构替换...但是当我指定替换模式时出现错误:
这是我的搜索模板:
这是我的替换模板:
谢谢您的帮助 ;)
java - 如何跨文件提取方法?
在我项目的所有 java 文件中,我想替换出现的情况:
接着就,随即:
IntelliJ IDEA 是否有任何行动或策略来做到这一点?
- 我希望它特定于
getName
我的类的方法,MyClass
而不是替换代码,它指getName
的是其他类调用的方法。 - 我希望它找到尽可能多的匹配项。它不应该关心额外的空格、换行符等。如果变量有另一个名称(如
myObj
orobjX
)它也应该工作。getObject().getName()
也应该找到类似的调用。(搜索必须关心语义)。 - 我希望它很快,而不是要求我一一经历数百场比赛。