用 IntelliJ IDEA 的 Structural replace 替换注解参数之一

Replace one of annotation parameters with IntelliJ IDEA's Structural replace

我有很多 类 带有 Spring @ContextConfiguration 注释。注解有classes参数,可以是数组

现在我的大部分 类 看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)         
@ContextConfiguration(classes = {
        ThisShellBeTwoClassesInContextHierarchyConfig.class,
        SomeTest.SomeTestConfig.class,
        WhateverConfig.class
})
@Transactional
public class SomeTest { ...

一些神奇的批处理操作的预期输出如下:

@RunWith(SpringJUnit4ClassRunner.class)         
@ContextHierarchy(classes = {
        @ContextConfiguration(classes = { ConfigA.class }),
        @ContextConfiguration(classes = { ConfigB.class }),
        @ContextConfiguration(classes = {
            SomeTest.SomeTestConfig.class,
            WhateverConfig.class
        })
})
@Transactional
public class SomeTest { ...

到目前为止,我什至无法让 IntelliJ IDEA Structural 替换工具使用 classes 参数查找注释,更不用说替换它了。 甚至像这样简化的结构

@$Annotation$($param$ = { $ctx$ })

没有找到任何东西。 ctx 的出现次数设置为无限制。

我应该如何正确使用注释参数?

似乎因为 a bug 无法匹配注释名称-值对中的数组 (ElementValueArrayInitializer)。您可以使用如下查询匹配您想要的注释:

@$Annotation$($param$ = $value$)

但这可能不是很有帮助。