IntelliJ中某些对象初始化的结构搜索

时间:2015-03-19 12:51:44

标签: intellij-idea slf4j structural-search

我试图在IntelliJ中使用结构搜索来查找具有任意数组元素的所有对象数组初始化的出现,但我似乎无法做到正确:

我使用的非常简单的搜索模板是:

new Object[] { $DONT_CARE$ }

它没有找到我正在寻找的事件。事实上,它主要发现完全出乎意料的事件,如下所示:

private final static int[] SOME_VARIABLE = { 0, 10 };

我期望找到的是类似于以下的行(有趣的是新的Object [] - 部分):

log.debug("Some log statement param1[{}], param2[{}], param3[{}]", new Object[] { param1, param2, param3 });

一个简单的"在路径中找到"用以下"文字找到"工作得很好:

new Object[] {

我必须在这里做错事。有谁知道为什么我没有得到预期的结果?

祝你好运, 本

P.S。作为感兴趣的读者的旁注:我这样做是因为我想在我们的项目中升级slf4j - 框架,并且我希望使用以下内容替换所有出现的多个日志参数的先前所需语法对象阵列:

e.g。 log.debug("Some log statement param1[{}], param2[{}], param3[{}]", new Object[] { param1, param2, param3 });

使用以下代码使用变量参数列表:

log.debug("Some log statement param1[{}], param2[{}], param3[{}]", param1, param2, param3 );

1 个答案:

答案 0 :(得分:1)

您似乎遇到了结构搜索中的错误(请参阅this bug report)。

但是对于您的特定问题,您还可以使用冗余阵列创建检查。此检查报告传递给变量参数方法的数组创建表达式,并且它具有修复问题的快速修复。

另一个选项/解决方法是在结构搜索查询中包含方法调用:

$log$.$debug$($string$, new Object[] { $expr$ });

$ expr $:最小数量:0最大数量:无限

$ log $:表达式类型:记录器