構造検索と置換
場合によっては、正規表現に一致する特定のシンボルやテキストの出現を検索するなどの標準的な検索方法では、目的の結果が得られない場合があります。 例: プロジェクトに固有のコードの匂いを見つけたり、リファクタリングする必要があるコードを見つける必要があるかもしれません。
ReSharper では、特定のパターンに一致するコードブロックを検索し、必要に応じて置換できます。 これらのブロックは、型や式、ステートメントなどが異なる場合がありますが、論理的には類似しています。 たとえば、一般的なパターンを作成して、何が繰り返されているかやループ内の内容に関係なく、すべての foreach ループに一致させることもできますし、このパターンの詳細を指定して特定の型を反復するループだけを検索することもできます。 パターンは必要に応じて複雑にでき、任意の詳細度を指定できます。
作成したすべてのパターンは パターンカタログに保存され、カスタム コードインスペクション (カスタムの重要度レベル)として機能します。 これにより、特定のパターンに一致するすべてのコードブロックが、ヒント、提案、警告、エラーとして エディターでハイライトされます。 また、 クイックフィックスや スコープ内修正もパターンに対して提供される場合があり、パターンの「置換」部分で定義された内容に基づき、一致したコードブロックを変換できます。
検索パターンのプレースホルダ
パターンは、通常
ターゲット言語で許可された識別子のみを含むテキスト部分。 テキスト部分では、正確に一致させるべきものを定義します。 空白、集計文字、改行は無視されることに注意してください。
プレースホルダーを使うことで、ターゲットコードブロックの変数部分に一致させることができます。 プレースホルダーのフォーマットは次のとおりです:
$placeholder_name$- ここで placeholder_nameは任意の識別子です。
各プレースホルダは一度定義しなければならず、パターン内で数回使用できます。 プレースホルダを定義するときは、その種類とオプションの制約を定義する必要があります。 プレースホルダには 5 種類あります。
引数プレースホルダ — メソッド呼び出しの 1 つ以上の引数。 必要に応じて、一致させる必要のある引数の最小数または最大数を指定できます。
式プレースホルダ — 演算子とオペランドのシーケンス。 オプションで、この式によって返されるタイプを指定できます。
識別子プレースホルダ — 任意のシンボル識別子。 さらに、シンボル名の照合に使用される正規表現を指定できます。
ステートメントプレースホルダ — セミコロンまたはステートメントのブロックで終わる 1 行のステートメント。 必要に応じて、一致するステートメントの最小数または最大数を指定できます。
タイププレースホルダ — 値型または参照型。 デフォルトでは、この種類のプレースホルダーはどのタイプにも一致しますが、特定のタイプを明示的に指定できます。
パターンの特定の部分に対して正しい種類のプレースホルダを選択することが非常に重要であることに注意してください。 パターンが一致するコードブロックと一致しない場合は、間違って選択されたプレースホルダーの種類が問題になることがよくあります。

検索パターンを作成する
コードブロックの検索や置換、またはカスタム コードインスペクションを作成するには、検索パターンを作成する必要があります。 既存のコードブロックをパターンのベースとして使用することも、新しいものを最初から作成することもできます。
エディターで、パターンと一致するコードブロックを選択します。 このステップはオプションですが、パターンをすばやく作成できます。
メインメニューから を選択するか、選択項目があれば右クリックしてコンテキストメニューで パターンで検索 を選択します。 パターンで検索ダイアログが開きます。
最初のステップでコードブロックが選択されている場合、ReSharper はそのブロック内のすべてのシンボル名を検出し、 プレースホルダーに置き換えます。 必要に応じて、コードを編集し、プレースホルダを追加および削除して目的のパターンにすることができます。
ReSharper は、パターンで使用されているすべてのプレースホルダーがダイアログの右側に正しく定義されているか確認します。 定義のないプレースホルダがある場合は、赤でハイライトされます。
新しいプレースホルダーを追加するには、
$<placeholder_name>$を入力するだけで、その定義が自動的に追加されます。自動的に追加されるプレースホルダー定義の種類を常に確認してください。 種類を明確に定義できない場合があるため、手動で修正することをお勧めします。
プレースホルダの種類を変更したり、制約を指定するには、右のプレースホルダ定義を選択し、 編集 をクリックして、プレースホルダ定義を編集します。
パターン本体でプレースホルダの使用を削除すると、その定義は自動的に削除されます。
また、プレースホルダ定義を手動で追加および削除することもできます。 これを行うには、プレースホルダ定義のリストの上にある対応するボタンをクリックします。
同様のコードブロックを照合するかどうかに応じて、 類似の構造に一致する チェックボックスをオンまたはオフにします。
ReSharper は次の構成を類似しているものと見なします:
波括弧で囲まれた単一行ステートメントと single-line ステートメント。
バイナリ式は、パターンと逆の順序で指定されます。
式で指定された式と、オペランドの順序が異なる式。
オペランドが括弧で囲まれた式、およびオペランドが囲まれていない式。
接尾辞と接頭辞のインクリメント演算子。
異なるアクセス修飾子を持つメソッド
ReSharper は、パターン本体で基本的なコード解析を実行します。 エラーが見つからない場合は、 一致するコードブロックを検索するか、 一致するブロックを置き換える方法を定義するか 、または 保存 をクリックして パターンをパターンカタログに保存します。
置換パターンを指定する
検索パターンごとに置換パターンを追加すると、検索パターンに一致するコードブロックをすばやく置き換えることができます。
新しい検索パターンを作成するまたは パターンカタログからパターンを編集するために開きます。
パターンで検索ダイアログで、右上隅の 置換 をクリックします。
ダイアログの下部に表示される 置換パターン 領域で、パターンの置換部分を指定します。
パターンで定義された プレースホルダーを使用します。 一致したコードブロックが置換されると、プレースホルダーと一致した各コードが、置換パーツ内のこのプレースホルダーの位置に従ってコピーされます。
置換領域にあるチェックボックスを使用して、 フォーマットルールを適用するか、置換されるコードブロック内で完全修飾名を短縮名に置換するか、あるいはその両方を指定します。
ReSharper は、パターンの置換部分で基本的なコード解析を実行します。 エラーが見つからない場合は、 一致するコードブロックを置き換えるか、パターンを パターンカタログに保存できます。
パターンカタログを管理する
作成したパターンを保存すると、ReSharper はそれをパターンカタログに配置します。 カタログを見て既存のパターンを調べるには、ReSharper オプションの ページに移動するか、 パターンで検索ダイアログで パターンカタログ
をクリックします。
パターンカタログでは次のことができます。
パターンをプレビューするには、リストでパターンを選択します。 ページの下部には、その本文とプレースホルダの定義が表示されます。
パターンを削除するには、リスト内でパターンを選択し、ページツールバーの 除去する をクリックします。
新しいパターンを追加するには、ツールバーの パターンを追加 をクリックします。 ReSharper は パターンで検索ダイアログを開き、 パターンの詳細を指定できます。
すべてのパターンは ReSharper の コードインスペクションエンジンで使用されるため、一致したコードブロックが自動的に検出されます。
デフォルトでは、すべての新しいパターンは重要度レベルセレクターが「表示しない」になっているため、一致したコードブロックは エディターでハイライトもされず、 特定のスコープでインスペクションを実行しても検出されません。 検索パターンに一致するコードをコードインスペクションで検出したい場合は、パターンの重要度レベルを適切に設定してください。
既存のパターンを編集するには、それをダブルクリックするか、選択して、ウィンドウツールバーの 編集 をクリックします。
パターンが編集用に開かれている場合、その検索および部品の置換に関する説明を指定できます。 検索の説明は、カタログ内のパターンを表示するため、およびエディターでハイライトされる一致したブロックの説明として使用されます。 置換の説明は、ハイライトされたブロックに提案されるクイックフィックスの名前として表示されます。 詳細については、 カスタムコードインスペクションとクイックフィックスを作成する を参照してください。
パターンには「抑制キー」を指定できます。これは、 ReSharper インスペクションを抑制するためにコメントで使用できる識別子です。

コードを見つけてパターンで置き換える
コードを検索してパターンに置き換えるには、次の 3 つの方法があります。
パターンで検索 コマンドを呼び出して 新しいパターンを作成した直後に、コードを検索または置換できます。 この場合、 パターンで検索ダイアログの右下隅にある Find/置換 ボタンをクリックするだけです。
あなたの パターンカタログからパターンの 1 つを使うことができます。 これを行うには、ReSharper オプションの ページのツールバーで 検索 をクリックします。
パターンに一致するコードブロックは エディターでハイライトできます。 パターンに置換ロジックが指定されている場合、コードブロックを クイックフィックスに置き換えることができます。 必要なのは、パターンに対して「表示しない」以外の重大度レベルを指定することだけです。 ReSharper オプションの ページで各パターンの右側にある対応するセレクターを使用します。 詳細については、「カスタムコードインスペクションとクイックフィックスを作成する 」を参照してください。
最初のふたつの方法のいずれかで検索を実行すると、ソリューション内のすべての一致するコードブロックが 検索結果 ウィンドウに一覧表示されます。 結果に探しているものが含まれていない場合は、パターンをすばやく変更して検索プロセスを再度呼び出すことができます。 これを行うには、ウィンドウツールバーの 検索パターンの変更
をクリックします。
最初のふたつの方法のいずれかで置換を実行すると、ソリューション内のすべての置換候補が パターンで置き換える ダイアログに表示されます。 このダイアログでは候補を確認・グループ化でき、候補を文脈で確認したい場合はツールバーの プレビューの表示
をクリックします。 また、いずれかの候補を double-click すると、該当ファイルがエディターで開きます。
表示された候補が置き換えたいものである場合は、ダイアログの下部にある 置換 をクリックします。
パターンを共有する
検索と置換のパターンは 共有設定レイヤーに保存でき、すべてのチームが利用できるようになります。
ReSharper オプションの ページでパターンを作成した場合は、準備ができたら 保存先 をクリックし、共有設定レイヤーを選択します。
まだ共有されていない既存のパターンを共有するには、そのパターンを編集用に開き、 ハイライトパターンの編集ダイアログで 「コピーを保存」 をクリックします。 次に、 保存先 をクリックして、共有設定レイヤーを選択します。
この機能は、次の言語とテクノロジーで サポートされています。
ここで説明する手順と例では、C# の機能の使用について説明します。 他の言語の詳細については、 言語およびフレームワーク セクションの対応するトピックを参照してください。