MPS 2019.2ヘルプ

リファクタリング

リファクタリングのサポートは、すべての成熟した言語のIDE機能の非常に重要な部分です。MPSは、リファクタリングアクションの開発を簡素化するためのいくつかの機能を提供します。

簡単なリファクタリングは、jetbrains.mps.lang.refactoring言語を使用して作成できます。この言語を使用してリファクタリングを記述した後、次の手順を使用して、ユーザーがリファクタリングを使用可能にし、起動できるようにする必要があります。

  1. リファクタリング用のUIアクションを作成します。これは、プラグイン言語を使用して記述された単純なアクションです。適切なリファクタリングアクション登録の例として、jetbrains.mps.ide.platform.actions.coreから名前変更アクションを確認できます。

  2. リファクタリング用にActionGroupDeclarationを作成し、デフォルトの位置でjetbrains.mps.ide.platform.actions.Nodeリファクタリングアクショングループを変更します。

  3. 新しく作成されたアクションをトリガーするリファクタリングキーストロークをKeymapChangesDeclaration。に追加する

  4. 作成されたアクションに isApplicable 句を追加します。通常、これは単なる is applicable refactoring< > () 呼び出しです。

  5. 作成されたアクションに execute 句を追加します。すべてのユーザーインタラクションはここで実行する必要があります。最後に、execute refactoring< > ()を呼び出して、準備されたパラメーターでリファクタリングを実行する必要があります。

リファクタリングは、実行された変更に関する情報をさらに記録し、リファクタリングされたプロジェクトに依存する他のプロジェクトの使用状況を更新する場合があります。そのような場合、リファクタリング参加者フレームワークを使用する必要があります。リファクタリングを作成するこの方法は、次の手順で構成されます。

  1. リファクタリング用のUIアクションを作成します。ここでは、ダイアログを表示し、ユーザーから必要なデータを取得し、アクションをアクショングループに登録し、オプションでキーマップを作成できます。

  2. アクションのexecute節でRefactoringProcessor.performRefactoringInProject()を呼び出し、提案されたすべての変更に関連するすべてのデータを渡します。

  3. 可能な用途の種類ごとに、その種類の用途を処理するリファクタリングのサブクラスを作成します: つまり、使用箇所を検索して更新する

  4. 拡張ポイントを作成し、その拡張ポイントのすべての参加者を登録します。

  5. 他の依存プロジェクトの使用状況の更新をサポートするには、参加者をPersistentRefactoringParticipantsEP拡張ポイントに追加登録する必要があります。リファクタリングログを作成するための特別な参加者が必要です(実装の詳細については、MoveNodeRefactoringLogParticipantを参照してください)。

最終更新日: 2019年8月30日