переименовать рефактор в затмении - PullRequest
1 голос
/ 16 ноября 2010

При разработке плагина Eclispe я могу программно переименовать поле класса, используя следующий код.

RenameSupport renameSupport = RenameSupport.create(field, newName, RenameSupport.UPDATE_REFERENCES);
renameSupport.perform(workbench.getShell(), workbench);

Но он применяет изменения к фактическим исходным файлам. Есть ли что-нибудь, что можно предотвратить? Мне просто нужен переименованный код внутри (для выполнения некоторых других вычислений), не должен изменять фактический источник.

Пожалуйста, предложите.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2010

Сначала создайте экземпляр RefactoringDescriptor.Затем вызовите createRefactoring, чтобы создать экземпляр Refactoring.Вы можете получить объект изменения, вызвав createChange для объекта Refactoring.Объект Change расскажет вам, как рефакторинг изменит код.Наконец, вы можете вызвать метод perform для объекта Change, чтобы применить его к базовым файлам.

Плагин org.eclipse.jdt.ui.tests.refactoring содержит автоматические модульные тесты для рефакторинга Java в Eclipse.Конкретный пример того, как программно вызывать рефакторинг, см. org.eclipse.jdt.ui.tests.refactoring.RefactoringTest .

0 голосов
/ 16 ноября 2010

Вы можете скопировать его во временный файл с помощью File.createTempFile() и затем переименовать код во временном файле, если RenameSupport позволяет вам это сделать.Если этого не произойдет, вы можете скопировать оригинал во временный файл и скопировать его обратно после завершения других вычислений.

...