我正在尝试自动化重构任务。虽然一些重构任务可以重用重构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重构的目标的正确方法是什么?
注意:我想尽可能地避免为我能感觉到的任何东西编写我自己的代码。