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

Structural search of certain object initializations in IntelliJ

我正在尝试使用 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 });

带有以下 "Text to find" 的简单 "Find in path" 就可以正常工作:

new Object[] {

我一定是哪里做错了。有谁知道为什么我没有得到预期的结果?

此致, 本

P.S。作为感兴趣的旁注 reader:我这样做是因为我想升级我们项目中的 slf4j - 框架,并且我想使用对象数组:

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

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

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

看起来您在结构搜索中遇到了错误(参见 this bug report)。

然而,对于您的特定问题,您也可以使用 冗余数组创建 检查。此检查报告传递给可变参数方法的数组创建表达式,它有一个快速修复程序来解决问题。

另一个option/workaround是在结构搜索查询中包含方法调用:

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

$expr$:最小计数:0 最大计数:无限制

$log$: 表达式类型:Logger