java – 有没有我可以通过编程方式调用的Eclipse重构API?
我需要在很长一段时间内重构代码.我知道从
Eclipse IDE里面我可以重构我的类.但是我可以在java项目中使用任何API,以便我可以通过代码动态地重构项目吗?
我需要了解如何实现以下内容:一个程序调用所有Eclipse重构来重命名并在循环中移动以一次重构整个项目! 我不想通过扩展重构类来引入新的重构类型.我只是想以编程方式调用它们. 解决方法
像
this这样的东西?
编辑: 如果要在不使用UI的情况下以编程方式运行重构,可以使用RefactoringDescriptors(请参阅article)来填充参数并以编程方式执行重构.如果您创建一个依赖于org.eclipse.core.runtime的插件并添加org.eclipse.core.runtime.applications扩展,您将能够从eclipse运行一个类似于main(String [])类的IApplication类在纯Java应用程序中.可以在post上找到调用API的示例. ICompilationUnit cu = ... // an ICompilationUnit to rename RefactoringContribution contribution = RefactoringCore.getRefactoringContribution(IJavaRefactorings .RENAME_COMPILATION_UNIT); RenameJavaElementDescriptor descriptor = (RenameJavaElementDescriptor) contribution.createDescriptor(); descriptor.setProject(cu.getResource().getProject().getName( )); descriptor.setNewName("NewClass"); // new name for a Class descriptor.setJavaElement(cu); RefactoringStatus status = new RefactoringStatus(); try { Refactoring refactoring = descriptor.createRefactoring(status); IProgressMonitor monitor = new NullProgressMonitor(); refactoring.checkInitialConditions(monitor); refactoring.checkFinalConditions(monitor); Change change = refactoring.createChange(monitor); change.perform(monitor); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } 如果您有关于使用JDT API(AST,重构等)的更详细的问题,我建议您在JDT Forum上询问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |