Java 如何用另一种注释类型全局替换一种注释类型?
我想在整个大型代码库中用另一种注释类型替换一种注释类型 这需要更新Java 如何用另一种注释类型全局替换一种注释类型?,java,eclipse,refactoring,findbugs,Java,Eclipse,Refactoring,Findbugs,我想在整个大型代码库中用另一种注释类型替换一种注释类型 这需要更新import语句和注释本身 在EclipseIDE中是否有一种机制可以做到这一点,而不是简单的文本搜索/替换 例如: import edu.umd.cs.findbugs.annotations.NonNull; ... public @NonNull Integer foo( @NonNull Integer arg0 ) { ... } 需要更新到: import javax.annotation.Nonnu
import
语句和注释本身
在EclipseIDE中是否有一种机制可以做到这一点,而不是简单的文本搜索/替换
例如:
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
,然后单击搜索按钮javax.annotation.Nonnull
,然后单击OK导入
s,然后您将再次执行这些步骤来替换@NotNull
使用的代码
如果您更喜欢使用重构工具,有一种方法可以做到这一点。但是它非常复杂,特别是如果您无法访问您希望离开的标识符的源代码
edu.umd.cs.findbugs.annotations.NonNull
。理想情况下,您可以访问源代码,但也可以删除注释。在任何情况下,您都应该从项目中删除第三方jar文件,并用项目中的源代码替换它,然后获得一个干净的构建Refactor->Rename…
将其重命名为目标名称,然后Refactor->Move…
将其移动到目标包中。您可能必须首先在项目中创建包在Eclipse中,您可以重构方法签名,但不幸的是,这似乎没有覆盖它们的注释。顺便说一句+1:-)此过程必须执行两次。在“搜索>文件…”对话框本身上还有一个“替换…”按钮。但每种注释类型仍然有两个基于文本的搜索/替换。我很好奇是否有一个类似重构的操作可以用一种类型替换另一种类型,并且保证不会影响其他类型。(也就是说,我认为示例和我们的代码库中出现误报的可能性非常低。)@Andythonas值得一提的是,我以前在Eclipse中使用更新的答案中概述的方法进行过此类重构。@gknicker-我已经想到了这一点,但不幸的是,有很多项目,每个项目都有自己的类路径。我怀疑Eclipse中没有专门用于此任务的机制。您已经介绍了两种合理的解决方法。我使用了第二种方法。我首先删除了fbjar,通过修复产生的问题来创建一个虚拟注释,移动并重命名它以匹配所描述的目标,最后删除了存根。工作得很好!