ファイルとタイプのレイアウトパターンでメンバーを再配置する
JetBrains Rider は、さまざまなパターンに従って C# ファイル内の型および型メンバーを並べ替えることができます。 パターンは、ファイル内のアイテムを並べ替えたり、指定された領域でラップしたりするときに評価される多くの条件と制約を記述することができます。
レイアウトパターンの紹介
異なるコンテキストに適用される複数のレイアウトパターンを構成できます(たとえば、クラスとインターフェースに異なるパターンを設定できます)。
パターン内では、希望する順序でマッチャーエントリやスニペット、また一致した項目をラップ・グループ化するための領域やグループも指定できます。
現在のパターンセットを適用するアルゴリズムは、次のように動作します。
ファイルパターンが存在する場合、JetBrains Rider はファイル内の領域を削除する必要があるかどうかを確認し、次にパターン内の各マッチャーエントリまたはスニペットがファイル内のコード項目と一致するかどうかを確認します。
一致するエントリがある場合、ファイル内の対応する正規表現アイテムの位置に従って、ファイル内の位置が変更されます。
同じコード項目が複数のマッチャーエントリと一致する場合、より高い優先度またはより強い制約を持つマッチャーが適用されます。 つまり、パブリックタイプに一致するパターン A およびパブリックスタティックタイプにマッチするパターン B が存在する場合、すべてのパブリックスタティックタイプはパターン B によって照合されます。 これを変更するには、パターン A の優先順位を上げることができます。
同じ制約のセットを有するマッチャーエントリが存在する場合、マッチするアイテムは、そのようなマッチャーエントリの最初の位置に従って移動されます。
リージョンまたはグループが指定されている場合、一致したアイテムはそれに応じてリージョンでグループ化またはラップされます。
グループまたはリージョンでは、優先度を指定できます。 例えば、グループ/リージョンがその外部の他のマッチャーより優先度が高い場合、JetBrains Rider はまずグループ/リージョン内のマッチャーを処理し、その後残りのマッチャーを処理します。 リージョンのグループ化の唯一の違いは、リージョンが一致したアイテムを
#region/#endregionにラップすることです。一致していないものはすべて、一致したアイテムの後に移動されます。 一致しないアイテムを別の場所に配置する必要がある場合は、制約なしでマッチャーを作成し、パターン内の目的の位置を設定できます。
その後、もしあればタイプパターンが適用されます。 JetBrains Rider は、各型パターンがファイル内の型と一致するかどうかを確認します。 型に一致するパターンが複数ある場合は、手順 3 と 4 と同様に競合が解決されます。
型が一致すると、JetBrains Rider はその型内の領域を削除する必要があるかを確認し、次にパターン内の各マッチャーエントリがファイル内のいずれかのメンバーに一致するかを確認します。
一致するメンバーがある場合、型の中の対応する正規表現の項目の位置に従って、型の位置が変更されます。
地域、グループ、比類のないメンバーは、手順 5 および 6 と同様に処理されます。
ファイルとレイアウトの環境設定
デフォルトのメンバーレイアウトルールは、多数のベストプラクティスに基づいており、ほとんどの場合に推奨できます。 ただし、個人の環境設定や会社の基準が JetBrains Rider の既定値と異なる場合は、既定のパターンに基づいてコードの並べ替えパターンを設定したり、特定のケース用に新しいパターンを作成したりできます。
レイアウトパターンへのすべての変更は、JetBrains Rider 設定 Ctrl+Alt+S の ページで行います。 編集が完了したら、設定 ダイアログで 保存 をクリックして変更を適用し、JetBrains Rider に変更の保存先を選択させるか、 保存 セレクターからこのレイヤーを選択して特定の設定レイヤーに変更を保存します。 詳細については、 レイヤーベースの設定 を参照してください。
ソース XAML を編集してファイルとタイプレイアウトを構成する
デフォルトパターンの 1 つをロードして、このフォーマットで使用されているタグを確認することをお勧めします。 たとえば、 Entry タグは照合項目を定義し、 Entry.Match はどのコード項目を一致させるべきかを指定します。 Entry.SortBy タグは、一致したアイテムをどのようにソートするかを指定します。 以下の例を考えてみましょう。

この XAML コードはコンストラクターと一致し、最初に静的コンストラクターに移動するようにコンストラクターを並べ替えます。
シナリオ: 部分的な名前の一致によってリージョン内のアイテムをグループ化する
すべてのメソッドが test で始まり、一部のメソッドに 1 つの共通の部分文字列があり、他のメソッドには別の部分文字列があるクラスを考えてみます。
タイプレイアウトを使用して、リージョン内のメソッドの各セットをラップし、リージョン名として共通の部分文字列を使用できます。
これを行うには、次のパターンを XAML に追加します。
レイアウトをクラスに適用した後、メソッドはソートされ、対応する領域にラップされます。
ファイルの並べ替えとメンバーの入力
ファイルおよび型のレイアウト設定を希望するスコープで適用するには、 Built-in: Full Cleanupプロファイルで コードのクリーンアップを実行するか、下記のように特定のタスクのみをターゲットにした カスタムプロファイルを作成して実行します。
カスタムコードクリーンアッププロファイルでファイルとタイプレイアウトを適用する
Ctrl+Alt+S を押すか、メニューから (Windows および Linux) または (macOS) を選択します。
クリーンアッププロファイル設定ページに移動します: 。
新しいカスタムクリーンアッププロファイルを作成する セクションの説明に従って、新しいプロファイルを作成します。 右側のプロファイル設定で、 チェックボックスが選択されていることを確認してください。 必要に応じて、このプロファイルで他のコードクリーンアップタスクを有効にすることもできます。
設定 ダイアログで 保存 をクリックして変更を適用し、JetBrains Rider が保存先を選択できるようにするか、 保存 セレクターからレイヤーを選んで特定の設定レイヤーに変更を保存します。 詳細については、「レイヤーベースの設定 」を参照してください。
ファイルレイアウトを適用する範囲を選択します。
ファイル内の任意の場所にキャレットを配置して、ファイルレイアウトをファイルに適用します。
ソリューションエクスプローラー の 1 つまたは複数の項目を選択して、これらのノードおよびその子項目のファイルにファイルレイアウトを適用します。
Ctrl+R, C を押すか、メインメニューから を選択してください。
表示された 整形とクリーンアップ ダイアログで、新しく作成したプロファイルを選択し、必要なら別のスコープを選択してください。 。
OK をクリックします。 JetBrains Rider は、選択したスコープでファイルレイアウトを適用します。
整形とクリーンアップ ダイアログを開いてプロファイルを選択せずにファイルレイアウトを適用したい場合は、作成したプロファイルを サイレントクリーンアップにバインドし、 Ctrl+R, G を押して実行できます。 ファイルレイアウトの適用と他のコードスタイルタスクを組み合わせた カスタムクリーンアッププロファイルを作成することもできます。
特定のタイプでのメンバーの並べ替えを無効にする
クリーンアップ中にメンバーの順序を変更したいが、特定の型では元のメンバーの順序を保持したい場合は、これらの型を JetBrains.Annotations の [NoReorder] 属性でマークします。