如何将@Deprecated添加到每个类和每个类的每个构造函数/方法?

17 java intellij-idea structural-search

我有一些遗留代码,我想标记所有这些和他们所有的方法,@Deprecated以便当我们去触摸它们时,我们可以删除这些注释,以便我们可以跟踪已经现代化的内容和仍然不好的内容.

我正在尝试使用,Structural Search/Replace似乎无法获得正确的模板.

搜索模板

class $Class$ { 
  $ReturnType$ $MethodName$($ParameterType$ $Parameter$) { $Stmt$; }
}
Run Code Online (Sandbox Code Playgroud)

替换模板

@Deprecated
class $Class$ {
  @Deprecated
  $ReturnType$ $MethodName$($ParameterType$ $Parameter$) { $Stmt$; }
}
Run Code Online (Sandbox Code Playgroud)

但这会删除课堂上的其他所有内容.

@Deprecated
class OldAndCrusty {
  @Deprecated
   ( );
}
Run Code Online (Sandbox Code Playgroud)

这将剥离其匹配的所有类的所有可见性修饰符和最终修饰符.

如何替换这些内容并单独留下其余代码?

Mic*_*Sim 1

不幸的是我无法测试这个,因为我没有合适的 IntelliJ 版本。但正如我在这里发现的,您可以使用变量来表示类内容。

搜索模板:

    class $Class$ {
       $MyClassContent$
    }
Run Code Online (Sandbox Code Playgroud)

更换模板:

    @Deprecated
    class $Class$ {
       $MyClassContent$
    }
Run Code Online (Sandbox Code Playgroud)

变量的最小和最大出现次数MyClassContent应分别设置为0Integer.MAX_VALUE。这应该会给你留下带注释的类。

现在,我想您也可以使用方法模板执行相同的操作。我不知道是否可以将方法模板应用于源中的所有方法。这样您应该能够执行两步搜索和替换:首先是类,接下来是方法。