ReSharper 2020.2ヘルプ

ファイルとタイプのレイアウトパターンを使用してメンバーを再配置する

ReSharperは、さまざまなパターンに従ってC#ファイルのタイプおよびタイプメンバーを並べ替えることができます。パターンは、ファイル内のアイテムを並べ替えたり、指定された領域でラップしたりするときに評価される多くの条件と制約を記述することができます。

レイアウトパターンの紹介

さまざまなコンテキストに適用されるように複数のレイアウトパターンを設定できます(たとえば、クラスとインターフェースにさまざまなパターンを設定できます)。パターンには2種類あります。

  • ファイル・パターン。すべてのC#ファイルに適用されます。名前空間、型、およびデリゲートを調整できます。領域にまとめるか、グループにまとめるか、領域を削除します。型の内容は、型パターンを使用してさらに配置できます。一度に適用できるファイルパターンは1つだけです。

  • タイプパターン。存在する場合、パターンの制約に一致する型にのみ適用されます。ファイルメンバーを配置したり、リージョンにまとめたり、グループにまとめたり、リージョンを削除したり、並べ替えなどを行うことができます。

パターン内では、照合項目がラップ/グループ化される領域/グループと同様に、希望の順序でマッチャ項目を指定することができます。

現在のパターンセットを適用するアルゴリズムは、次のように動作します。

  1. ファイルパターンが存在する場合、ReSharperはファイル内の領域を削除する必要があるかどうかをチェックし、パターン内の各マッチャーエントリがファイル内のコードアイテムと一致するかどうかをチェックします。

  2. 一致するエントリがある場合、ファイル内の対応する正規表現アイテムの位置に従って、ファイル内の位置が変更されます。

  3. 同じコード項目が複数のマッチャーエントリと一致する場合、より高い優先度またはより強い制約を持つマッチャーが適用されます。つまり、パブリック・タイプに一致するパターンAおよびパブリック・スタティック・タイプにマッチするパターンBが存在する場合、すべてのパブリック・スタティック・タイプはパターンBによって照合されます。これを変更するには、パターンAの優先順位を上げることができます。

  4. 同じ制約のセットを有するマッチャーエントリが存在する場合、マッチするアイテムは、そのようなマッチャーエントリの最初の位置に従って移動されます。

  5. リージョンまたはグループが指定されている場合、一致したアイテムはリージョンに応じてグループ化またはラップされます。
    グループまたはリージョンでは、優先度を指定できます。例:グループ/リージョンが外部の他のマッチャーよりも優先度が高い場合、ReSharperは最初にグループ/リージョン内のマッチャーを処理し、次に残りのマッチャーを処理します。リージョンのグループ間の唯一の違いは、リージョンが一致したアイテムを #region / #endregionにラップすることです。

  6. 一致していないものはすべて、一致したアイテムの後に移動されます。一致しないアイテムを別の場所に配置する必要がある場合は、制約なしでマッチャーを作成し、パターン内の目的の位置を設定できます。

  7. その後、もしあればタイプパターンが適用されます。ReSharperは、各型パターンがファイル内の任意の型と一致するかどうかを確認します。型に一致するパターンが複数ある場合は、手順3と4と同様に競合が解決されます。

  8. 型の一致が確立されると、ReSharperはその型の領域を削除する必要があるかどうかをチェックし、次にパターン内の各一致項目がファイル内のいずれかのメンバーと一致するかどうかをチェックします。

  9. 一致するメンバーがある場合、型の中の対応する正規表現の項目の位置に従って、型の位置が変更されます。

  10. 領域、グループ、および比類のないメンバーは、手順5および6と同様に処理されます。

ファイルとレイアウトの環境設定

提供時の状態で、ReSharperはいくつかのターゲット型パターン(たとえば、NUnitテストのフィクスチャ用)、および残りのC#型のデフォルトパターンを提供します。

デフォルトのメンバーレイアウトルールは多数のベストプラクティスに基づいており、ほとんどの場合に推奨できます。ただし、個人の好みや会社の標準がReSharperのデフォルトと異なる場合は、デフォルトのパターンに基づいてコードの並べ替えパターンを設定したり、特定のケース用の新しいパターンを作成したりできます。

レイアウトパターンに対するすべての変更は、ReSharperオプション(Alt+R O)のコード編集 | C# | ファイルレイアウトページで行われます。編集が完了したら、オプションダイアログの保存をクリックして変更を適用し、ReSharperに保存場所を選択させるか、次へ保存リストを使用して特定の設定レイヤーに変更を保存します。詳細については、ReSharper設定の管理と共有を参照してください。

ファイルとタイプのレイアウトルールを視覚的に構成する

ReSharperでは、専用のビジュアルエディターを使用してレイアウトルールのすべてのパラメータを設定できます。エディターページの項目は、次のいずれかのビューで表示できます。

  • パターン。これは現在のパターンセットで利用可能なすべてのパターンを表示するルートビューです。このビューを開くには、ページの左上隅にあるパターンをクリックします。このビューから、ダブルクリックして任意のパターンに移動できます。新しいパターンをセットに追加するには、ファイルをドラッグアンドドロップするか、右側のツールボックスからパターン項目を入力します。ドラッグアンドドロップを使用してパターンを並べ替えることもできます。型パターンの順序は、いくつかのパターンが同じ型と同じ優先順位および制約に一致する場合に適用されるパターンを定義します。

  • 構成。このビューは、パターン、リージョン、またはグループ内のマッチャーエントリ、リージョン、およびグループの順序とグループ化を視覚化します。下の図では、型パターンの構成図を見ることができます。

    Composition view of a type pattern

  • 制約。このビューでは、パターンや照合項目の制約、たとえば、どの修飾子または属性にどの種類のコード項目を一致させるかどうかなどを視覚化できます。パターンとマッチャーは、それらのすべての制約に一致するアイテムにのみ適用されます。すべての制約は、これらの制約間の関係を識別する論理コンテナーによってグループ化されています。下の図では、マッチャーエントリの制約ビューを見ることができます。

    Constraints view of a matcher entry

既存のレイアウトパターンを編集する

  1. メインメニューからReSharper | オプションを選択するか、Alt+R Oを押してから、左側のコード編集 | C# | ファイルレイアウトを選択します。

  2. 現在のセットのすべてのパターンを表示するには、ページの左上隅にあるパターンをクリックします。この要素のプロパティでは、静的フィールド並べ替えポリシーセレクタを使用して、イニシャライザで静的フィールドの順序を変更するかどうか、およびその順序を変更する方法を定義できます。オプションは次のとおりです。

    • —プログラムの動作に影響を与える可能性がある場合、静的フィールドは並べ替えられません。例:同じクラスの静的メンバーへの参照を持つ初期化子を持つ静的フィールドがある場合、クラスのすべての静的フィールドは並べ替えられません。

    • リラックス - 初期化子に他の静的フィールドを明示的に使用している静的フィールド、およびそれらが参照している静的フィールドを並べ替えることは禁止されています。

    • 無制限 - 並べ替えは常に許可されています(お勧めしません)。

    選択した動作がすべてのパターンに適用されます。
    イニシャライザを使用して再順序付けされていない静的フィールドの場合、ReSharperは他の宣言と一緒に再順序付けしながら、それらの相対順序を保持します。

  3. 必要に応じて、デフォルトのパターンセットのいずれかをロードするには、ページの右上隅にあるロードをクリックし、パターンセットを選択します。

  4. 目的のパターンをダブルクリックし、コンストレインビューにある場合はコンポジションビューに切り替えます(ビューを切り替えるには、パターンヘッダーの右側にあるアイコンをクリックします)。ファイルパターンは常にコンポジションビューに表示されます。つまり、ファイルパターンに制約を指定することはできません。

  5. コンポジションビューでは、次の方法でパターンを変更できます。

    • 項目の順序を変更するには、パターンの内側にドラッグします。

    • 特定のアイテムを削除するには、そのアイテムを選択し、Deleteを押します。リージョンまたはグループを削除する場合は、その中のすべてのアイテムも削除されます。削除する前にリージョン/グループからアイテムをドラッグすることができます。

    • 新しいアイテムを追加するには、Toolboxエリアからパターンの目的の場所にアイテムをドラッグします。領域またはグループをドラッグしてグループ化項目として使用するか、エントリーをドラッグしてターゲットコード内の何かと一致させます。

      また、依存関係プロパティマッチャーを使用してWPF依存関係プロパティのすべての部分を照合および配置し、バッキングフィールドを持つプロパティマッチャーを使用して、対応するプロパティの宣言の直前または直後にプロパティのバッキングフィールドを配置することもできます。

    • パターンまたはその内部の項目のプロパティを設定するには、その項目を選択し、右下の部分のプロパティを変更します。

      • 表示名 - パターンとマッチャーエントリに利用可能なこのプロパティはあなたの便宜のためにのみ使われ、それによってマッチされるものを記述するべきです。

      • 名前 - リージョンのこのプロパティは、リージョンの作成時にリージョンに名前を付ける方法を指定します。
        グループオプションに従って領域が生成された場合、名前に ${0} パラメータを使用して領域のシーケンス番号を挿入できます。
        名前付きパラメーターを使用して、グループ化オプションをリージョン名に挿入することもできます。例: ${Access} パラメーターを使用できます。これは、対応するリージョンの名前で「private」、「public」などに置き換えられます。明らかに、このパラメーターは、領域の「グループ」プロパティに同じ値を使用する場合に意味があります。このパラメーターの有効な値は、スペースを含まない「グループ」プロパティの値と同じです。つまり、実装インターフェースの名前を領域名に挿入するには、${ImplementsInterface} パラメータを使用します。

      • リージョンを削除 - ファイルとタイプのパターンのこのプロパティは、一致したコード内の既存の領域をどう処理するかを指定します。生成されたものを除き値を使用すると、デフォルトのパターンでこの機能を適用することによって以前に作成された領域のみを削除できます。

      • 優先度 - このプロパティはマッチャーエントリの相対的な優先順位を設定します。つまり、あるコードが複数の一致エントリと一致した場合、最も優先度の高いエントリの位置に従って移動されます。

      • ソート順 - エントリのこのプロパティは、複数の一致するコード項目がある場合のソート設定を指定します。なし以外のソート設定を選択するとすぐに、に句が表示され、ソート順をさらに細かく指定できます。

      • グループ - 領域またはグループのこのプロパティは、指定されたグループ化に従って領域/グループを生成するかどうかを指定します。例:種類が値として選択されている場合、フィールド、プロパティ、および他の種類のメンバーがあれば、それに対して複数の領域/グループが作成されます。なし以外のグループ化設定を選択するとすぐに、一致したコード項目をさらに分離できるに句が表示されます。

  6. 特定のタイプパターンまたは正規表現エントリがコードアイテムとどのように一致するかを定義する制約を設定するには、制約ビューに切り替えます。タイプパターンのこのビューを開くには、ヘッダの対応するアイコンをクリックします。マッチャエントリのこのビューを開くには、ダブルクリックします。

  7. 制約ビューでは、選択した項目は条件のコンテナーとして表されます。これらの条件を設定するには、Toolboxエリアから編集したパターンまたはエントリにアイテムをドラッグします。

    • 論理コンテナーの項目は、複数の条件を適用する方法を定義しているため、最初に追加する必要があります。これらのコンテナーの名前は、条件がこれらのコンテナー内でどのように関連しているかをかなり明確に説明しています。論理コンテナーなしで制約を追加すると、それらはそしてコンテナーによってグループ化されます。

    • 制約グループ内のアイテムを使用すると、一致するアイテムを指定する必要があります(ないコンテナーにラップされている場合)。名前制約の値で正規表現を使用できることに注意してください。このグループから論理コンテナーにアイテムをドラッグし、右下の部分でそれらのプロパティを構成します。

    • 項目を修飾子グループからドラッグして、ターゲット項目に含めるべきかどうかを指定します。

    例:非プライベートな静的フィールドとプロパティに一致するエントリは、次のようになります。

    Editing file layout: matcher entry example

ソースXAMLを編集してファイルとタイプレイアウトを構成する

必要に応じて、ファイルとタイプのパターンのセットを記述するソースXAMLを編集できます。これを行うには、ファイルレイアウトページの上部にあるXAMLをクリックします。このビューは、パターンセットをコピーして貼り付ける場合にも役立ちます。

デフォルトパターンの1つをロードして、このフォーマットで使用されているタグを確認することをお勧めします。たとえば、Entry タグは照合項目を定義し、Entry.Match はどのコード項目を一致させるべきかを指定します。 Entry.SortBy タグは、一致したアイテムをどのようにソートするかを指定します。以下の例を参照してください。

ReSharper: Configuring file and type layout by editing the source XAML

このXAMLコードはコンストラクターと一致し、最初に静的コンストラクターに移動するようにコンストラクターを並べ替えます。

ファイルの並べ替えとメンバーの入力

ファイルとタイプのレイアウト設定を目的の範囲に適用するには、デフォルトのデフォルト: フルクリーンアッププロファイルでコードクリーンアップを実行するか、または以下に説明するように特定のタスク専用のカスタムプロファイルを作成して実行します。

カスタムコードクリーンアッププロファイルでファイルとタイプレイアウトを適用する

  1. メインメニューからReSharper | オプションを選択するか、Alt+R Oを押します。

  2. クリーンアッププロファイル設定ページに移動します:コード編集 | コードのクリーンアップ | プロファイル

  3. 新しいカスタムクリーンアッププロファイルを作成するセクションの説明に従って、新しいプロファイルを作成します。新しいプロファイルの選択したプロファイル設定セクションで、ファイルレイアウトを適用するチェックボックスをオンにします。必要に応じて、このプロファイルで他のコードクリーンアップタスクを有効にすることができます。

  4. オプションダイアログで保存をクリックして変更を適用し、ReSharperに保存場所を選択させるか、次へ保存リストを使用して変更を特定の設定レイヤーに保存します。詳細については、ReSharper設定の管理と共有を参照してください。

  5. ファイルレイアウトを適用する範囲を選択します。

    • キャレットをファイルの任意の場所に設定して、ファイルレイアウトをファイルに適用します。

    • ソリューション・エクスプローラーの1つまたは複数の項目を選択して、これらのノードおよびその子項目のファイルにファイルレイアウトを適用します。

  6. 以下のいずれか 1 つを実行します:

    • Control+Alt+F を押すか、メインメニューからReSharper | 編集 | コードのクリーンアップ...を選択します。

    • テキストエディターの任意の場所を右クリックするか、選択項目を右クリックし、コンテキストメニューでコードのクリーンアップを選択します。

  7. 開いているコードクリーンアップダイアログで、新しく作成したプロファイルを選択します。

  8. 実行をクリックします。ReSharperは、選択したスコープでファイルレイアウトを適用します。

コードクリーンアップダイアログを開かずにファイルレイアウトを適用する場合は、作成したプロファイルをサイレントクリーンアップにバインドし、Control+Shift+Alt+Fを押して実行できます。ファイルレイアウトの適用と他のコードスタイルのタスクを組み合わせたカスタムクリーンアッププロファイルを作成することもできます。

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

Language: C#Language: VB.NETLanguage: C++Language: HTMLLanguage: ASP.NETLanguage: RazorLanguage: JavaScriptLanguage: TypeScriptLanguage: CSSLanguage: XMLLanguage: XAMLLanguage: ResxLanguage: Build ScriptsLanguage: ProtobufLanguage: JSON
Feature is available in C#Feature is not available in Visual Basic .NETFeature is not available in C++Feature is not available in HTMLFeature is not available in ASP.NETFeature is not available in RazorFeature is not available in JavaScriptFeature is not available in TypeScriptFeature is not available in CSSFeature is not available in XMLFeature is not available in XAMLFeature is not available in Resource filesFeature is not available in build script filesFeature is not available in ProtobufFeature is not available in JSON
最終更新日:

関連ページ:

ReSharper設定の管理と共有

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

コードのクリーンアップ

ReSharper | 編集 | コードのクリーンアップ...コマンドラインユーティリティを使用してコードのクリーンアップを実行することもできます。ReSharperを使用すると、フォーマットやその他のコードスタイル設定を一括モードで適用して、1つ以上のファイル、プロジェクト、またはソリューション全...

コードクリーンアップダイアログ

ReSharper | 編集 | コードのクリーンアップ...コードのクリーンアップダイアログでは、利用可能なコードクリーンアッププロファイルを使用して、選択したスコープ内のコードをクリーンアップしたり、カスタムクリーンアッププロファイルを作成および編集したりできます。このダイアログでクリーンアップ...

ASP.NET MVC特有の機能

ReSharperには、一般的なASP.NET機能に加えて、ASP.NET MVCでの作業をより簡単にサポートする特殊機能があります。構文の強調表示:ASP.NET MVCメソッド呼び出しとパラメーターの特別な構文の強調表示:コード補完:文字列リテラルでアクションとコントローラーを参照するための専用...

言語によるReSharper: MSビルド

MSBuildは、アプリケーションを構築するために広く使用されているプラットフォームです。特定のXMLタグを使用して、プロジェクトの構築方法や実行方法を定義できます。ReSharperを使用すると、より速く行うことができます。ビルドスクリプトファイルでReSharper機能を無効にするには、ReSh...

言語によるReSharper: Googleプロトコルバッファ (プロトブフ)

ReSharperは、Googleプロトコルバッファ(Protobuf)バージョン2.xおよび3.0の.protoファイルでIDEサポートを提供します。.protoファイルのReSharper機能を無効にするには、ReSharperオプション(Alt+R O)の環境 | 製品と機能ページでプロトブフ...