ReSharper 2021.1 ヘルプ

カスタムコードインスペクションとクイックフィックスを作成する

コードに問題または悪い習慣があるが、ReSharper がそれを検出しない場合は、カスタムコードインスペクションを作成することができます。さらに、問題のあるコードを置き換えるコード、つまりカスタムクイックフィックスを指定することができます。

カスタムインスペクションが正しく作成されていれば、コードベースのすべての同様の問題を見つけ出し、問題のあるコードをエディターでハイライトすることができます。

カスタムインスペクションを作成するには、構造検索と置換メカニズムを利用できます。

カスタムインスペクションの作成を説明するために、次のコードが気に入らないとしましょう:

string line; var tr = new MyReader(); try { line = tr.Read(); } finally { tr.Dispose(); }
.. そしてそれをむしろそれと置き換える:
string line; using(var tr = new MyReader()) { line = tr.Read(); }

クイックフィックスを使用してカスタムコードインスペクションを作成する

  1. エディターで、問題とみなすコードを選択します。

  2. 選択範囲を右クリックし、パターンで検索を選択します。

  3. ReSharper は、選択されたコードが検索パターンとして事前解析された状態でパターンで検索ダイアログを表示します。一部の識別子、引数、型などは、自動的にプレースホルダーに置き換えられます。

    ReSharper's custom code inspections. Raw inspection pattern

  4. インスペクションパターンをよりユニバーサルにするには、認識されているプレースホルダーを編集し、他のコード項目をより多くのプレースホルダーに置き換えます。たとえば、この例の try ブロック内の単一のステートメントを、任意の数のステートメントと一致するプレースホルダーに置き換えることができます。

  5. 問題のクイックフィックスを指定するには、ダイアログの右上隅にある置換をクリックします。
    パターンを置き換える領域で、問題のあるコードを置き換えるために使用するパターンを指定します。変数コード項目には同じプレースホルダーを使用してください。
    次に、洗練されたパターンとクイックフィックスがこの例をどのように探すかを示します。

    ReSharper's Custom inspections. Refined pattern and a quick-fix for custom inspection

  6. 保存をクリックし、終了したら閉じるをクリックします。カスタムインスペクションは、スマートセーブロジックを使用してパターンカタログに保存されます。
    問題のあるコードはまだエディターでハイライトされていないことに注意してください。それを機能させるには、さらにいくつかのことを行う必要があります。

  7. メインメニューで ReSharper | オプションを選択し、コードインスペクション | カスタムパターンページに移動します。

  8. パターンのリストで、作成したカスタムインスペクションに対応するパターンを見つけます。デフォルトでは、その重大度レベルは「表示しない」に設定されています。つまり、ReSharper はカスタムインスペクションに対応する問題を無視します。
    インスペクションを有効にするには、「推奨」など、他の重大度レベルを選択します。

  9. 最後に、カスタムインスペクションおよび対応するクイックフィックスに表示される説明を指定できます。

    これを行うには、パターンをダブルクリックし、開いたハイライトパターンの編集ダイアログで、対応するフィールドに説明を指定します。

    ReSharper's custom inspections. Descriptions for the inspection and the quick-fix
  10. パターンの変更を保存して閉じ、ReSharper オプションのカスタムパターンページで保存をもう一度クリックします。

問題はエディターで認識されハイライトされます。マウスの上にマウスを置くと、指定された説明が表示されます。

ReSharper's custom inspections. Descriptions for the inspection and the quick-fix
インスペクションパターンを洗練するにつれて、コンストラクター呼び出しでの引数の数やステートメントの数が異なる場合でも、同様の問題が発生します。
ReSharper's custom inspections. Descriptions for the inspection and the quick-fix

カスタムインスペクションのクイックフィックスは、内蔵クイックフィックスとまったく同じように見えます。

ReSharper's custom inspections. Descriptions for the inspection and the quick-fix

カスタムパターンで説明されている問題をより広い範囲で見つける必要がある場合は、いくつかのオプションがあります。

  • ReSharper オプションのコードインスペクション | カスタムパターンページでインスペクションパターンを選択し、ページツールバーの検索をクリックします。

  • 目的のスコープでコードインスペクションを実行するを実行し、検出されたコードの問題の残りの部分でカスタム問題を分析します。

  • エディターでハイライトされたコードで Alt+Enter を押すと、インスペクションオプションに表示される類似課題を見つけるアクションを使用します。

この機能は、次の言語とテクノロジーでサポートされています。

C# の機能の使用方法については、こちらの説明と例を参照してください。他言語の詳細については、言語による ReSharper の対応するトピックを参照してください。

関連ページ:

コードの問題のクイックフィックス | ReSharper

ReSharper を使用すると、設計時に検出されたほとんどのコード問題を即座に修復できます。ハイライトされたコードの問題でを押して、問題を解決したり最適以下のコードを改善したりするための適切な方法を選択するのと同じくらい簡単です。クイックフィックスを適用する:クイックフィックスは、ハイライトされたコードの問題の左側にアクションインジケーターとして視覚的に表示されます。これらのインジケーターは、コードの問題でキャレットを設定すると表示されます。次の指標は、迅速な修正を意味します。 — 重大度エ...

構造検索と置換 | ReSharper

場合によっては、正規表現に一致する特定のシンボルやテキストの出現を検索するなどの標準的な検索方法では、目的の結果が得られない場合があります。例: プロジェクトに固有のコードの匂いを見つけたり、リファクタリングする必要があるコードを見つける必要があるかもしれません。ReSharper を使用すると、特定のパターンに一致するコードブロックを検索し、必要に応じて置き換えることができます。これらのブロックはまったく異なる場合があります。異なるタイプ、式、ステートメントなどを含むことができますが、論理的に...

ハイライトパターンによる追加 / 編集 / 検索ダイアログ | ReSharper

このダイアログは、特定のパターンに一致するコードを検出するカスタムパターンを作成または編集し、必要に応じてこのコードを置き換えるのに役立ちます。このトピックでは、ダイアログ内のコントロールについて説明します。コードを検索してカスタムパターンで置き換える方法については、構造検索と置換およびカスタムコードインスペクションとクイックフィックスを作成するを参照してください。このダイアログは 2 つのモードで開くことができます。エディターのコンテキストメニューに複製されているコマンドを使用すると、ダイアロ...

ReSharper 設定の管理と共有 | ReSharper

ReSharper は、階層化された設定のメカニズムを使用して環境設定を保存するため、次の利点があります。さまざまなソリューションで異なる設定を行うことができます。環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。例: 記号のアイコンとチーム設定のコード形式を個人設定で保存し、これらの設定を自動的に組み合わせることができます。設定の特定のサブセットを VCS に保持することにより、チーム内の設定を同期できます。ReShar...

コードインスペクション設定の構成 | ReSharper

設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...

特定の範囲でコードの問題を見つける | ReSharper

設計時コードインスペクションは、エディターでコーディングしたり、特定のファイルを見直したりするときに役立ちます。ただし、ReSharper を使用すると、ソリューション全体または狭い範囲でスタティックコード分析を実行し、結果をフレンドリーな視点で調べることもできます。必要に応じてインスペクション結果を共有することもできます。開始コードインスペクション:ソリューション、プロジェクト、またはカスタムスコープのコードをインスペクションするソリューションワイドのインスペクションの結果(たとえば、未使用...