ReSharper 2024.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 | オプションを選択するか、Alt+R O を押してから、左側のコードインスペクション | カスタムパターンを選択します。

  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 を使用すると、特定のパターンに一致するコードブロックを検索し、必要に応じて置き換えることができます。これらのブロックはまったく異なる場合があります。異なるタイプ、式、ステートメントなどを含むことができますが、論理的に...

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

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

ReSharper 設定の管理と共有

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

コードインスペクション設定を構成する

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

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

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