2015-03-19 67 views
2
特定对象初始化的

我想使用的IntelliJ结构搜索,找到与任意的数组元素的对象数组初始化的所有出现,但我似乎无法得到它的权利:结构搜索中的IntelliJ

的我正在使用的相当简单的搜索模板是:

new Object[] { $DONT_CARE$ } 

它没有找到我正在寻找的事件。事实上,大多认为完全出乎意料OCCURENCES像下面这样:

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

我希望找到的是类似于以下线(有趣的一点是新的对象[] - 部分):

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

一个简单的“查找路径”与下面的“文本发现”工作得很好:

new Object[] { 

我必须错在这里做一些事情。有没有人有一个想法,为什么我没有得到预期的结果?

最好的问候, 本

附:作为感兴趣的读者的一个注意事项:我这样做是因为我想升级项目中的slf4j - 框架,并且我想用Object-array替换以前所需的多个日志参数的语法:

eg 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

看起来你已经打在结构搜索中的错误(见this bug report)。

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

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

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

$ EXPR $:最小计数:0最大计数:无限

$日志$:表达式类型: Logger

+0

_Redundant数组创建检测_很好地工作,正是我所期待的。您调整结构搜索查询的建议不仅可以很好地工作,还可以教会我一些关于IntelliJ的新知识。这里是我对同胞程序员的这个问题的建议:请记住,**还有其他设置可用于结构搜索变量**(提示:编辑变量...),可能需要根据您的需要进行调整。 – jimonthebarn 2015-03-25 15:52:02

+0

我继续前进,并接受了我自己的建议,现在即使是最初的搜索查询,也找到了发生的事情。公正地说:它也仍然发现不希望的事件。 :) – jimonthebarn 2015-03-25 15:53:08