Refactor >> Rename
私の目的は、Javaソースファイル内のメソッドに対してプログラムでEclipseコマンドを呼び出すことです。メソッドの名前をそのように変更すると、このメソッドが使用/参照されているすべてのインスタンスにも変更が適用されます。
JDTにはリファクタリングAPIがあると思いますが、同じドキュメントやチュートリアルを見つけることができません。
誰かが私を正しい方向に向けることができますか?
編集:実行時に変更は必要ありません。
Refactor >> Rename
私の目的は、Javaソースファイル内のメソッドに対してプログラムでEclipseコマンドを呼び出すことです。メソッドの名前をそのように変更すると、このメソッドが使用/参照されているすべてのインスタンスにも変更が適用されます。
JDTにはリファクタリングAPIがあると思いますが、同じドキュメントやチュートリアルを見つけることができません。
誰かが私を正しい方向に向けることができますか?
編集:実行時に変更は必要ありません。
あなたの最も有望なアプローチは、日食のソースコードに行くことだと思います。
に対応する開始点Refactor >> Rename
はですorg.eclipse.jdt.ui.actions.RenameAction
。これは全体的な名前変更のリファクタリングですが、メソッドからファイルまで何でも名前を変更できます。あなたにとってより適切なのはですRenameSupport.create(IMethod, String, int)
。
ここで、aまたはaのRenameRefactoring
いずれかのプロセッサの周囲にクラスが作成され、の新しいインスタンスに送信されていることがわかります。 リファクタリングを構成するためにすべてのUIを処理しますが、プログラムで実行しているため、さまざまな方法を使用して構成されたとプロセッサーが必要です。RenameVirtualMethodProcessor
RenameNonVirtualMethodProcessor
RenameSupport
RenameSupport
RenameRefactoring
processor.set*()
これで、のインスタンスが構成されましたRenameRefactoring
。それで?Eclipseでの実際の操作は、2つのジョブ実装にわたって実行されます。RefactoringExecutionHelper.Operation
詳細については、をご覧くださいPerformChangeOperation
。
これはすべて何に要約されますか?例外処理、UNDOスタック、ワークスペースチェックポイントの詳細はさておき、次の手順を使用して「仮想」メソッドの名前を変更できます。
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())
そこには、元に戻す、プログレスバー、非同期実行、ワークスペースチェックポイントなどのサポートコードがたくさんあります。これらは、これを実行する方法に応じて必要になる場合と必要になる場合があります。しかし、それがリファクタリングを実行する方法の根幹です。