ReSharper 2019.2ヘルプ

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

コードに課題または悪い習慣があるが、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 を押すと、インスペクションオプションに表示される類似課題を見つけるアクションを使用します。

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

Language: C#Language: VB.NETLanguage: C++Language: HTMLLanguage: ASP.NETLanguage: RazorLanguage: JavaScriptLanguage: TypeScriptLanguage: CSSLanguage: XMLLanguage: XAMLLanguage: ResxLanguage: Build ScriptsLanguage: ProtobufLanguage: JSON
Feature is availableFeature is availableFeature is not availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not available

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

最終更新日: 2019年10月15日

関連ページ:

コードの課題のクイックフィックス

ReSharperを使用すると、設計時に検出されたほとんどのコード課題を即座に修復できます。強調表示されたコードの課題で を押して、課題を解決したり最適以下のコードを改善したりするための適切な方法を選択するのと同じくらい簡単です。クイックフィックスの適用:クイックフィックスは、強調表示されたコード...

構造検索と置換

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

強調表示パターンの追加/編集/検索ダイアログ

このダイアログは、特定のパターンに一致するコードを検出するカスタムパターンを作成または編集し、必要に応じてこのコードを置き換えるのに役立ちます。このトピックでは、ダイアログ内のコントロールについて説明します。コードを検索してカスタムパターンで置き換える方法については、構造検索と置換およびカスタムコー...

ReSharper設定の管理と共有

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

コード・インスペクション

ReSharperはサポートされているすべての言語で2500以上のインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルで設計時にコードの課題を検出して強調表示するため、および/または特定の範囲内ですべてのコードの課題を見つけるために使用されます。インスペクション Re...

コードインスペクションの設定

コード注釈を使用して、ReSharperがコードをインスペクションする方法をカスタマイズすることもできます。設計時コードインスペクションの設定:デフォルトでは、ReSharperはサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にするこ...