9

Refactor >> Rename私の目的は、Javaソースファイル内のメソッドに対してプログラムでEclipseコマンドを呼び出すことです。メソッドの名前をそのように変更すると、このメソッドが使用/参照されているすべてのインスタンスにも変更が適用されます。

JDTにはリファクタリングAPIがあると思いますが、同じドキュメントやチュートリアルを見つけることができません。

誰かが私を正しい方向に向けることができますか?

編集:実行時に変更は必要ありません。

4

1 に答える 1

4

あなたの最も有望なアプローチは、日食のソースコードに行くことだと思います。

  1. ソースコードを使用して、必要なリリースをダウンロードします。特に、「クラシック」リリースに含まれているJDTプラグインのソースが必要です。以下のすべては4.2.1に基づいています。
  2. 空のワークスペースで起動します。
  3. ファイル->インポート:プラグインとフラグメント
  4. 「アクティブなターゲットプラットフォーム」、「すべてから選択...」、「ソースフォルダのあるプロジェクト」からインポートします。
  5. 少なくともorg.eclipse.jdt.uiとorg.eclipse.ltk.core.refactoringを選択します。

に対応する開始点Refactor >> Renameはですorg.eclipse.jdt.ui.actions.RenameAction。これは全体的な名前変更のリファクタリングですが、メソッドからファイルまで何でも名前を変更できます。あなたにとってより適切なのはですRenameSupport.create(IMethod, String, int)

ここで、aまたはaのRenameRefactoringいずれかのプロセッサの周囲にクラスが作成され、の新しいインスタンスに送信されていることがわかります。 リファクタリングを構成するためにすべてのUIを処理しますが、プログラムで実行しているため、さまざまな方法を使用して構成されたとプロセッサーが必要です。RenameVirtualMethodProcessorRenameNonVirtualMethodProcessorRenameSupportRenameSupportRenameRefactoringprocessor.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())

そこには、元に戻す、プログレスバー、非同期実行、ワークスペースチェックポイントなどのサポートコードがたくさんあります。これらは、これを実行する方法に応じて必要になる場合と必要になる場合があります。しかし、それがリファクタリングを実行する方法の根幹です。

于 2012-10-24T17:29:59.080 に答える