2

我正在尝试使用 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[] {

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

最好的问候,本

PS 作为感兴趣的读者的旁注:我这样做是因为我想升级我们项目中的 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 );

4

1 回答 1

1

看起来您在结构搜索中遇到了错误(请参阅此错误报告)。

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

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

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

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

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

于 2015-03-19T17:06:09.017 回答