标签: structural-search

如何使用结构搜索来查找给定类型的子类的构造函数调用?

我有一个名为"com.foo.BaseFoo"的抽象类

我想找到任何从BaseFoo扩展的东西上调用new()的人

我试过做一个搜索模板:

new $BaseFoo$()
Run Code Online (Sandbox Code Playgroud)

然后编辑变量,使其具有对象类型的表达式约束

com.foo.BaseFoo
Run Code Online (Sandbox Code Playgroud)

并单击"在类型层次结构中应用约束"但这不起作用.

intellij-idea structural-search

3
推荐指数
1
解决办法
702
查看次数

结构搜索和Groovy Script约束替换

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

例如:假设我有100个这种方法的用法

public void sendString(String msg, int interfaceId){ //doing stuff... }
Run Code Online (Sandbox Code Playgroud)

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

java search groovy intellij-idea structural-search

3
推荐指数
1
解决办法
405
查看次数

Intellij替换stringbuilder.toString()的所有出现

我想找到属于StringBuilder的toString方法的所有出现:

StringBuilder sb = new StringBuilder();
sb.append("sometext");
return sb.toString();
Run Code Online (Sandbox Code Playgroud)

并替换为:

StringBuilder sb = new StringBuilder();
sb.append("sometext");
return Optimizer.stat(sb.toString());
Run Code Online (Sandbox Code Playgroud)

当然var"sb"并不总是以相同的方式编写:-)

我尝试了IntelliJ Ultimate Structural Search和Replace.但我找不到只能获得StringBuilder类的String的方法.

非常感谢.

java intellij-idea structural-search

3
推荐指数
1
解决办法
170
查看次数

在IntelliJ中查找整个项目中的所有匿名类

IntelliJ是否可以在代码中找到定义匿名类的所有位置?

我只是在寻找而不是改变。我并不是在问要转换为lambda,这与lambda无关。

java intellij-idea anonymous-class structural-search

3
推荐指数
1
解决办法
125
查看次数

Intellij结构替换更改方法签名

我想用某个签名更改方法:

public OldReturnType get.*(Params) {
  //lots of code
}
Run Code Online (Sandbox Code Playgroud)

对此:

public NewReturnTyp get.*(Params) {
  //lots of code
}
Run Code Online (Sandbox Code Playgroud)

- >我想替换返回类型.我用SSR试过这个:

  • 复制现有模板"类的方法".这会产生模板:

    class $ Class $ {$ ReturnType $ $ MethodName $($ ParameterType $ $ Parameter $); }

我首先尝试分别替换$ ReturnType $ OldType和NewType:

搜索模板:

class $Class$ { 
  OldType $MethodName$($ParameterType$ $Parameter$);
}
Run Code Online (Sandbox Code Playgroud)

替换模板:

class $Class$ { 
  NewType $MethodName$($ParameterType$ $Parameter$);
}
Run Code Online (Sandbox Code Playgroud)

这给了我所有的方法,但如果我替换它,该方法将被删除.

然后我尝试通过以下方式更改模式:

搜索模板:

class $Class$ { 
  $OldType$ $MethodName$($ParameterType$ $Parameter$);
}
Run Code Online (Sandbox Code Playgroud)

并且指定$ OldType $应该是搜索的目标.我还为此变量指定了一个RegEx模式:OldType.

替换模板:

class $Class$ { 
  NewType $MethodName$($ParameterType$ $Parameter$);
}
Run Code Online (Sandbox Code Playgroud)

这也找到了所有方法,但是如果我替换它们就会被删除.我尝试了非常不同,总是有相同的结果:如果我替换匹配,该方法将被删除.如何指定搜索/替换模板以在签名中将OldType替换为NewType.

intellij-idea structural-search

2
推荐指数
1
解决办法
1081
查看次数

如何查找带有尾随注释的所有字段

我使用的是IntelliJ IDEA,它有一个叫做结构搜索的漂亮功能.我想用它来查找最后有注释的所有类中的所有字段,如下所示:

class Thing {
    double x; // arbitrary comment (any text goes here)
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试过的任何东西似乎都没有用.

java intellij-idea structural-search

2
推荐指数
1
解决办法
194
查看次数

Intellij 结构搜索非最终

使用Copy existing template...I 发现循环的结构搜索:

for ($Type$ $Variable$ : $Expression$) {
  $Statement$;
}
Run Code Online (Sandbox Code Playgroud)

我想增强它,以便它只找到变量不是 final 的 for 循环。

它应该找到:

for (String string : strings) {
    // Statements
}
Run Code Online (Sandbox Code Playgroud)

然而不是:

for (final String string : strings) {
    // Statements
}
Run Code Online (Sandbox Code Playgroud)

现在它显然可以找到两者,因为最终和非最终之间没有区别。我怎样才能添加这个额外的检查?

java intellij-idea structural-search

1
推荐指数
1
解决办法
445
查看次数

如何使用 Intellij 搜索和替换模式消除“新行大括号”?

我正在尝试使用以下搜索和替换模板查找大括号写在新行中的所有 if 语句:

搜索模板:

if ($Expr$)
{
    $ThenStatements$;
}
else
{
    $ElseStatements$;
}
Run Code Online (Sandbox Code Playgroud)

替换模板:

if ($Expr$) {
    $ThenStatements$;
}
else {
    $ElseStatements$;
}
Run Code Online (Sandbox Code Playgroud)

如果模板引擎不区分两个模板,我面临的问题。它让我可以用正确的模板替换搜索模板,但它也会将“正确”模板检测为错误模板。

有没有办法使用某种正则表达式来解决这个问题?

编辑:在 Android Studio 上工作。我正在尝试为我的公司代码样式约定生成一组 lint 规则,这些规则将显示为警告或错误

intellij-idea inspection code-inspection structural-search android-studio

1
推荐指数
1
解决办法
1035
查看次数

Intellij用ClassName.class替换getClass()

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

因此,例如替换:

class ClassName{
  public method(){
    Logger.logDebug(getClass(), "Some information")
  }
}
Run Code Online (Sandbox Code Playgroud)

class ClassName{
  public method(){
    Logger.logDebug(ClassName.class, "Some information")
  }
}
Run Code Online (Sandbox Code Playgroud)

java intellij-idea structural-search

0
推荐指数
1
解决办法
374
查看次数