17

我有一些遗留代码,我想标记所有它们和它们的所有方法@Deprecated,这样当我们去触摸它们时,我们可以删除这些注释,这样我们就可以跟踪哪些已经现代化,哪些仍然是坏的

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

搜索模板

class $Class$ { 
  $ReturnType$ $MethodName$($ParameterType$ $Parameter$) { $Stmt$; }
}

替换模板

@Deprecated
class $Class$ {
  @Deprecated
  $ReturnType$ $MethodName$($ParameterType$ $Parameter$) { $Stmt$; }
}

但这会删除课程中的所有其他内容。

@Deprecated
class OldAndCrusty {
  @Deprecated
   ( );
}

这会剥离所有匹配的类的可见性修饰符和最终修饰符。

我如何替换这些东西并保留其余代码?

4

1 回答 1

1

不幸的是,我无法对此进行测试,因为我没有正确的 IntelliJ 版本。但正如我在这里发现的,您可以为课程内容使用一个变量。

搜索模板:

    class $Class$ {
       $MyClassContent$
    }

替换模板:

    @Deprecated
    class $Class$ {
       $MyClassContent$
    }

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

现在,我想你也可以对方法模板做同样的事情。我不知道的是您是否可以将方法模板应用于源中的所有方法。这样,您应该能够进行两步搜索和替换:首先是类,其次是方法。

于 2014-05-22T15:59:41.407 回答