如何在IDEA中创建结构替换以向类添加缺少的注释

imp*_*nte 9 java annotations replace intellij-idea structural-search

我试图在IntelliJ IDEA(未来检查)中找出一个结构替换模板,用于在不删除任何其他现有注释的情况下向类/接口/枚举添加缺少的注释.

到目前为止,我尝试了几种以下的品种

搜索模板:

@$OtherPossibleAnnotation$ // min: 0, max: 0, text/regexp: AnnotationName, invert condition: true
@$MissingAnnotation$ // min: 0, max: 0, text/regexp: AnnotationName
class $C$ {
    $Content$ // min: 0, max: unlimited
}
Run Code Online (Sandbox Code Playgroud)

替换模板:

@$OtherPossibleAnnotation$
@AnnotationName
class $C$ {
    $Content$
}
Run Code Online (Sandbox Code Playgroud)

但我的尝试都没有奏效.我希望它能起作用

  • 使用任何现有的类注释,它还必须保持其潜在的价值,
  • 如果班上根本没有注释,
  • 在Idea 14以及Idea 15中,
  • 还应保持课堂内容不受影响.

所以例如以下

@ProductArea("Area A")
class A {
    public void method1() {
        System.out.println("Should remain");
    }
}
Run Code Online (Sandbox Code Playgroud)

应该换成

@ProductArea("Area A")
@AnnotationName
class A {
    public void method1() {
        System.out.println("Should remain");
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以建议吗?

Bas*_*ers 2

以下内容适用于我的 IntelliJ IDEA 2019.3 EAP。

搜索模板:
@$MissingAnnotation$ // count=[0,0], text=AnnotationName
class $C$ {
}
Run Code Online (Sandbox Code Playgroud) 替换模板
@AnnotationName
class $C$ {
}
Run Code Online (Sandbox Code Playgroud)

这将保留现有注释和类内容,但仅限于使用 IntelliJ IDEA 2019.3 EAP 时

要保存一些手动编辑,请将以下内容复制到剪贴板,然后使用“结构搜索”对话框中齿轮菜单下的“从剪贴板导入模板”:

<replaceConfiguration name="method calls" text="@$MissingAnnotation$ &#10;class $C$ {&#10;}" recursive="false" caseInsensitive="true" type="JAVA" pattern_context="default" reformatAccordingToStyle="false" shortenFQN="true" replacement="@AnnotationName&#10;class $C$ {&#10;}">
  <constraint name="__context__" within="" contains="" />
  <constraint name="MissingAnnotation" regexp="AnnotationName" minCount="0" maxCount="0" within="" contains="" />
  <constraint name="C" within="" contains="" />
</replaceConfiguration>
Run Code Online (Sandbox Code Playgroud)