Unn*_*ris 7 java refactoring abstract-syntax-tree eclipse-jdt
我的目标是以编程方式调用Refactor >> RenameEclipse命令以获取Java源文件中的方法.重命名方法也应该将更改应用于使用/引用此方法的所有实例.
我相信JDT有一个Refactoring API,但是无法找到相同的文档或教程.
有人能指出我正确的方向.
编辑:运行时不需要更改.
我认为你最有前途的方法是去 eclipse 源代码。
对应的起点Refactor >> Rename是org.eclipse.jdt.ui.actions.RenameAction。不过,这是整体重命名重构,它可以重命名从方法到文件的任何内容。与您更相关的是RenameSupport.create(IMethod, String, int).
您可以在那里看到一个RenameRefactoring类是围绕处理器创建的,无论是 aRenameVirtualMethodProcessor还是 a RenameNonVirtualMethodProcessor,然后发送到 的新实例RenameSupport。 RenameSupport处理所有 UI 以配置重构,但由于您以编程方式进行操作,因此您只需要RenameRefactoring使用各种processor.set*()方法配置的和处理器。
现在您有一个已配置的RenameRefactoring. 怎么办?Eclipse 中的实际操作是跨两个 Job 实现执行的。看看RefactoringExecutionHelper.Operation和PerformChangeOperation了解详情。
这一切归结为什么?抛开异常处理、撤消堆栈和工作区检查点的所有细节,您可以使用以下步骤重命名“虚拟”方法:
IMethod methodToRename = <....>
RenameMethodProcessor processor = new RenameVirtualMethodProcessor(methodToRename)
processor.setUpdateReferences(true);
processor.setNewElementName("newMethodName");
RenameRefactoring fRefactoring = new RenameRefactoring(processor);
fChange= fRefactoring.createChange(new NullProgressMonitor());
fChange.initializeValidationData(new NullProgressMonitor());
fChange.perform(new NullProgressMonitor())
Run Code Online (Sandbox Code Playgroud)
那里有很多用于撤消、进度条、异步执行、工作区检查点等的支持代码,您可能需要或可能需要这些代码,具体取决于您希望如何运行。但这就是如何运行重构的胆量。
| 归档时间: |
|
| 查看次数: |
1593 次 |
| 最近记录: |