Eclipse中的Move方法重构,以编程方式,使用MoveInstanceMethodProcessor无法找到目标

时间:2017-03-06 21:33:38

标签: refactoring eclipse-jdt automated-refactoring

我正在尝试自动化重构任务。虽然一些重构任务可以重用重构API(LTK和基于JDT),但Move方法却没有。我错过了这段代码:

MoveInstanceMethodProcessor processorMM = new MoveInstanceMethodProcessor(method,null);
processorMM.setTargetName(method.getDeclaringType().toString());
IVariableBinding[] candidateTargets = processorMM.getCandidateTargets();
IVariableBinding[] targets= processorMM.getPossibleTargets();

processorMM.setTarget(targets[1]);
MoveRefactoring refactoringMM = new MoveRefactoring(processorMM);
RefactoringStatus statusMM = refactoringMM.checkAllConditions(monitor);
Change changeMM = refactoringMM.createChange(monitor);
undoChange = changeMM.perform(monitor);

这些候选目标和目标始终为空,即使我遍历项目中的所有方法,也找不到可能的目标。某些方法可以手动移动,但我的代码找不到它们。

我错过了什么吗?获取Move Method重构的目标的正确方法是什么?

注意:我想尽可能地避免为我能感觉到的任何东西编写我自己的代码。

0 个答案:

没有答案