我希望在整个大型代码库中将一个注释类型替换为另一个注释类型.
这需要更新import语句和注释本身.
有没有一种机制可以在Eclipse IDE中执行此操作而不是可能的天真文本搜索/替换?
例如:
import edu.umd.cs.findbugs.annotations.NonNull;
...
public @NonNull Integer
foo( @NonNull Integer arg0 ) { ... }
需要更新为:
import javax.annotation.Nonnull;
...
public @Nonnull Integer
foo( @Nonnull Integer arg0 ) { ... }
最佳答案 在Eclipse中很容易.
>从搜索菜单中选择文件…
> Set Containing text:to,例如,edu.umd.cs.findbugs.annotations.NonNull,然后单击Search按钮.
>在“搜索结果”视图中,根据需要使用上下文菜单“删除所选匹配”来删除不应替换的匹配项
>右键单击其中一个结果(上下文菜单),然后选择全部替换…
>在“替换文本匹配”对话框中,在“使用:”框中输入替换短语javax.annotation.Nonnull,然后单击“确定”.
以上将替换导入,然后您将再次执行这些步骤来替换@NotNull使用.
如果您更喜欢使用重构工具,那么有一种方法可以解决这个问题.但它非常复杂,特别是如果您无法访问要移除的标识符的源代码.
>如果引用的标识符不在您的控制之下,则通过任何必要的操作将其置于您的控制之下.例如,假设您正在使用jar文件中的第三方注释edu.umd.cs.findbugs.annotations.NonNull.理想情况下,您可以访问源代码,但您也可以删除注释.在任何情况下,您都要从项目中删除第三方jar文件,并将其替换为项目中的源代码,然后获得干净的构建.
>现在您可以控制有问题的来源,重构 – >重命名……将其重命名为目标名称,然后重构 – >将…移动到目标包.您可能必须先在项目中创建包.
>最后,如果适用的话,删除你刚刚创建的冒名顶替者,这样真实的冒名顶替者才能占据正确的位置.
>根据需要清除任何其他临时包.