如何将一种注解类型全局替换为另一种注解类型?
How to globally replace one annotation type with another?
我想在整个大型代码库中用另一种注释类型替换一种注释类型。
这需要更新 import
语句和注释本身。
在 Eclipse IDE 中是否有一种机制可以做到这一点,而不是可能天真的文本 search/replace?
例如:
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 中很容易。
- 从搜索菜单中选择文件...
- 将包含文本:设置为
edu.umd.cs.findbugs.annotations.NonNull
,然后单击搜索按钮。
- 在“搜索结果”视图中,根据需要使用上下文菜单删除选定的匹配项删除不应替换的匹配项
- 右键单击其中一个结果(上下文菜单)并选择全部替换...
- 在替换文本匹配项对话框中,在With:框中输入替换短语
javax.annotation.Nonnull
,然后单击好的
以上将替换 import
s,然后您将再次执行这些步骤以替换 @NotNull
用途。
如果您更喜欢使用重构工具,有一种方法可以解决这个问题。但这非常复杂,特别是如果您无法访问要移除的标识符的源代码。
- 如果引用的标识符不在您的控制之下,则通过任何必要的操作将其置于您的控制之下。例如,假设您正在使用 jar 文件中的第三方注释
edu.umd.cs.findbugs.annotations.NonNull
。理想情况下,您可以访问源代码,但您也可以删除注释。在任何情况下,您都需要从项目中删除第三方 jar 文件并将其替换为项目中的源代码,然后获得干净的构建。
- 有了问题的源现在在你的控制之下,
Refactor->Rename...
它到目标名称然后 Refactor->Move...
它到目标包。您可能必须先在项目中创建包。
- 最后,如果适用,请删除您刚刚创建的冒名顶替者,以便真正的冒名顶替者占据其应有的位置。
- 任何其他必要的临时包清理。
我想在整个大型代码库中用另一种注释类型替换一种注释类型。
这需要更新 import
语句和注释本身。
在 Eclipse IDE 中是否有一种机制可以做到这一点,而不是可能天真的文本 search/replace?
例如:
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 中很容易。
- 从搜索菜单中选择文件...
- 将包含文本:设置为
edu.umd.cs.findbugs.annotations.NonNull
,然后单击搜索按钮。 - 在“搜索结果”视图中,根据需要使用上下文菜单删除选定的匹配项删除不应替换的匹配项
- 右键单击其中一个结果(上下文菜单)并选择全部替换...
- 在替换文本匹配项对话框中,在With:框中输入替换短语
javax.annotation.Nonnull
,然后单击好的
以上将替换 import
s,然后您将再次执行这些步骤以替换 @NotNull
用途。
如果您更喜欢使用重构工具,有一种方法可以解决这个问题。但这非常复杂,特别是如果您无法访问要移除的标识符的源代码。
- 如果引用的标识符不在您的控制之下,则通过任何必要的操作将其置于您的控制之下。例如,假设您正在使用 jar 文件中的第三方注释
edu.umd.cs.findbugs.annotations.NonNull
。理想情况下,您可以访问源代码,但您也可以删除注释。在任何情况下,您都需要从项目中删除第三方 jar 文件并将其替换为项目中的源代码,然后获得干净的构建。 - 有了问题的源现在在你的控制之下,
Refactor->Rename...
它到目标名称然后Refactor->Move...
它到目标包。您可能必须先在项目中创建包。 - 最后,如果适用,请删除您刚刚创建的冒名顶替者,以便真正的冒名顶替者占据其应有的位置。
- 任何其他必要的临时包清理。