エラーを抑制する
MPS で高品質のコードを維持するための非常に効果的な方法の 1 つは、エラー、警告、潜在的な問題をコード内で直接ハイライトする即時のコード分析です。他のコード品質報告ツールと同様に、ユーザーが誤検知をマークして繰り返し報告されないようにできることが不可欠です。MPS はエラーを抑制するために 2 つのメカニズムを提供し、それらがエディターおよびモデルチェッカーツールに表示されるのを防ぎます。
1 つ目は、言語開発者が利用できる一般的なものです。言語拡張を設計したり、既存の言語を新しい言語に埋め込んだりすると、既存の言語のチェッカーによってエラーと見なされる場所がいくつか表示されることがありますが、実際には言語の組み合わせに関しては有効です。このような場合、新しい言語のバインディングの概念によって ISuppressErrors インターフェースを実装することにより、誤ったエラーを抑制することができます。この機能も役立つもう 1 つの場所はジェネレーターです。これは、たとえば、テンプレートでタイプエラーが避けられない場合があるためです。デフォルトでは、一部の概念が ISuppressErrors インターフェースを実装している場合、このノードとそのすべての子孫のすべての言語の問題は非表示になります。例: BaseLanguage のコメントは ISupressErrors を実装します。さらに、ノードに ISuppressErrors を実装する概念の属性がある場合、そのようなノードの問題も抑制されます。問題を選択的に抑制することも可能であり、問題を抑制すべき特定の子孫とそのような問題の種類を定義します。カスタマイズは、ISupressErrors インターフェースのブールメソッド suppress(ReportItem) をオーバーライドすることで実装できます。
2 番目のメカニズムは、最初のメカニズムの特殊なケースとして実装されていますが、言語開発者ではなく、言語のユーザーを対象としています。一部のチェッカーが誤検知を発行することがわかっている場合、ユーザーはモデル内のこれらの場所にマークを付けることができます。言語開発者はそのような可能性を言語の一部にすることができますが、MPS には、SuppressErrorsAttribute と呼ばれる ISuppressErrors ノード属性の便利なデフォルト実装があります。ICanSuppressErrors のインスタンスであるノードにのみ適用できます。
SuppressErrorsAttribute 属性と対応するインテンションの使用例。
エディターには 3 つのエラーがあり、そのうちの 2 つは文字列リテラルに関するものです。
BaseLanguage ステートメントは ICanSuppressErrors を実装しているため、ユーザーはインテンションを適用して、ステートメント内の任意の場所でこの種のエラー(文字列リテラル)またはすべての型システムエラーを抑制することができます。
抑制されたエラーはハイライトされなくなりましたが、左ペインに新しく追加された十字アイコンがあります。
ある種類のエラーを抑制した後、他の種類のエラーも抑制できます。
抑制属性は、対応するインテンションを適用するか、×印を押すことで削除できます。
関連ページ:
実行構成
導入:実行構成により、ユーザーは自分の言語で書かれたプログラムの実行方法を定義できます。既存の実行構成は、メインツールバーにある実行構成ボックスから実行できます。メインメニューのファイル名を指定して実行メニュー項目または実行 / デバッグポップアップ(Alt + Shift + F10 /Alt + Shift + F9)を使用します。実行構成は、ノード、モデル、モジュール、プロジェクトに対して実行 / 作成することもできます。例: JUnit 実行構成では、選択したプロジェクト、モジュール、...
モジュールのクローニング
言語または解決策のコピーを作成する必要があるとき、状況に遭遇するかもしれません。モジュールのクローン作成を使用すると、モジュールのコピーを簡単に作成できます。モジュールを複製する場合は、プロジェクトツールウィンドウでモジュールを選択します。モジュールを右クリックし、コンテキストメニューでソリューション / 言語の複製アクションを選択します。表示されるダイアログで、新しいモジュールの名前と場所を選択します。OK を押すと、モジュールは複製されて使用可能になります。新しいモジュールには、古いモジュー...