MPS 2026.1 ヘルプ

エラーを抑制する

MPS でコードの品質を高く維持する最も効果的な方法の 1 つは、コード内のエラー、警告、潜在的な問題を直接ハイライト表示する、即時のオンザフライコード分析です。他のコード品質レポートツールと同様に、誤検出が繰り返し報告されないように、ユーザーが誤検出をマークできることが重要です。MPS は、エラーを抑制し、エディターとモデルチェッカーツールに表示されないようにする 2 つのメカニズムを提供します。

まず、言語開発者が利用できる一般的な機能があります。言語拡張を設計したり、既存の言語を新しい言語に組み込んだりする場合、既存の言語のチェッカーではエラーとみなされるものの、実際には言語の組み合わせの観点からは有効な箇所がいくつか発生する可能性があります。このような場合、新しい言語のバインディング概念で ISuppressErrors インターフェースを実装することで、誤ったエラーを抑制できます。この機能が役立つもう 1 つの箇所はジェネレーターです。たとえば、テンプレートでは型エラーが避けられない場合があるためです。デフォルトでは、何らかの概念が ISuppressErrors インターフェースを実装している場合、そのノードとそのすべての子孫にあるすべての言語の問題が非表示になります。例: BaseLanguage のコメントは ISupressErrors を実装します。さらに、ノードが ISuppressErrors を実装する概念の属性を持っている場合、そのノードの問題も抑制されます。問題を抑制する特定の子孫と問題の種類を定義することで、問題を選択的に抑制することも可能です。カスタマイズは、ISupressErrors インターフェースのブール型メソッド suppress(ReportItem) をオーバーライドすることで実装できます。

2 番目のメカニズムは、最初のメカニズムの特殊なケースとして実装されていますが、言語開発者向けではなく、言語のユーザー向けです。チェッカーが誤検出を出すことがわかっている場合、ユーザーはモデル内でこれらの箇所をマークしたいと思うかもしれません。言語開発者はこのような可能性を言語の一部として組み込むことができますが、MPS には、SuppressErrorsAttribute と呼ばれる ISuppressErrors ノード属性の便利なデフォルト実装があります。これは、ICanSuppressErrors のインスタンスであるノードにのみ適用できます。

SuppressErrorsAttribute 属性と対応するインテンションの使用例。

エディターには 3 つのエラーがあり、そのうちの 2 つは文字列リテラルに関するものです。

suppress1.png

BaseLanguage ステートメントは ICanSuppressErrors を実装しているため、ユーザーはインテンションを適用して、ステートメント内の任意の場所でこの種のエラー(文字列リテラル)またはすべての型システムエラーを抑制することができます。

suppress2.png

抑制されたエラーはハイライトされなくなりましたが、左ペインに新しく追加された十字アイコンがあります。

suppress3.png

ある種類のエラーを抑制した後、他の種類のエラーも抑制できます。

抑制属性は、対応するインテンションを適用するか、×印を押すことで削除できます。

suppress4.png
2026 年 5 月 06 日