JetBrains Rider 2024.1 ヘルプ

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

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

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

異なるコンテキストに適用される複数のレイアウトパターンを構成できます(たとえば、クラスとインターフェースに異なるパターンを設定できます)。

パターン内で、マッチャーエントリとスニペットを目的の順序で指定できます。また、一致するアイテムがラップまたはグループ化される領域 / グループも指定できます。

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

  1. ファイルパターンが存在する場合、JetBrains Rider はファイル内の領域を削除する必要があるかどうかを確認し、パターン内のマッチャーエントリまたはスニペットのそれぞれがファイル内のコード項目と一致するかどうかを確認します。

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

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

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

  5. リージョンまたはグループが指定されている場合、一致したアイテムはそれに応じてリージョンでグループ化またはラップされます。

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

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

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

  8. タイプの一致が確立されると、JetBrains Rider はタイプ内の領域を削除する必要があるかどうかを確認します。次に、パターン内の各マッチャーエントリがファイル内のいずれかのメンバーと一致するかどうかをチェックします。

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

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

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

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

レイアウトパターンへのすべての変更は、JetBrains Rider 設定 Ctrl+Alt+Sエディター | コードスタイル | C# | ファイルレイアウトページで行われます。編集が完了したら、設定ダイアログで保存をクリックして変更を適用し、JetBrains Rider に変更を保存する場所を選択させるか、保存セレクターからこのレイヤーを選択して特定の設定レイヤーに変更を保存します。詳細については、「レイヤーベースの設定」を参照してください。

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

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

JetBrains Rider: Configuring file and type layout by editing the source XAML

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

シナリオ: 部分的な名前の一致によってリージョン内のアイテムをグループ化する

すべてのメソッドが test で始まり、一部のメソッドに 1 つの共通の部分文字列があり、他のメソッドには別の部分文字列があるクラスを考えてみます。

public void test_groupOne_nameOne(){ /*...*/} public void test_groupTwo_nameTwo(){ /*...*/} public void test_groupOne_nameTwo(){ /*...*/} public void test_groupTwo_nameOne(){ /*...*/}

タイプレイアウトを使用して、リージョン内のメソッドの各セットをラップし、リージョン名として共通の部分文字列を使用できます。

これを行うには、次のパターンを XAML に追加します。

<TypePattern> <Region Name="${Name}" Priority="100"> <Region.GroupBy> <Name Is="(test\w+?)_.*" /> </Region.GroupBy> <Entry> <Entry.Match> <Name Is="test\w+?_.*" /> </Entry.Match> </Entry> </Region> </TypePattern>

レイアウトをクラスに適用した後、メソッドはソートされ、対応する領域にラップされます。

#region test_groupOne public void test_groupOne_nameOne(){ /*...*/ } public void test_groupOne_nameTwo(){ /*...*/ } #endregion #region test_groupTwo public void test_groupTwo_nameOne(){ /*...*/ } public void test_groupTwo_nameTwo(){ /*...*/ } #endregion

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

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

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

  1. Ctrl+Alt+S を押すか、メニューからファイル | 設定(Windows および Linux)または JetBrains Rider | 環境設定 (macOS) を選択します。

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

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

  4. 設定ダイアログで保存をクリックして変更を適用し、JetBrains Rider が変更を保存する場所を選択できるようにするか、保存セレクターからこのレイヤーを選択して特定の設定レイヤーに変更を保存します。詳細については、「レイヤーベースの設定」を参照してください。

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

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

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

  6. Ctrl+R, C を押すか、メインメニューからコード | 再フォーマットとクリーンアップ…を選択します。

  7. 開いたコードの再フォーマットとクリーンアップダイアログで、新しく作成したプロファイルを選択し、必要に応じて別のスコープを選択します。

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

コードの再フォーマットとクリーンアップダイアログを開いてプロファイルを選択せずにファイルレイアウトを適用する場合は、作成したプロファイルをサイレントクリーンアップにバインドし、Ctrl+R, G を押して実行できます。ファイルレイアウトの適用と他のコードスタイルタスクを組み合わせたカスタムクリーンアッププロファイルを作成することもできます。

特定のタイプでのメンバーの並べ替えを無効にする

クリーンアップ中にメンバーの順序を変更したいが、特定の型では元のメンバーの順序を保持したい場合は、これらの型を JetBrains.Annotations[ 再オーダー不可 ] 属性でマークします。

関連ページ:

レイヤーベースの設定

Rider 設定ダイアログでは、ページアイコンを見て、特定のページに使用されている設定管理メカニズムを確認できます。任意のアイコンでマークされていないページは、ユーザープロファイルに保存されている IDE 設定をホストします。レイヤーベースの設定は ReSharper と互換性があるため、ReSharper を使用している場合、チームメンバーのいずれかがそれを使用している場合、Rider は ReSharper で構成した設定を読み取って適用できます。「ソリューションパーソナル」および「ソリュ...

コードのクリーンアップ

JetBrains Rider を使用すると、フォーマットやその他のコードスタイル設定を一括モードで適用して、1 つ以上のファイル、プロジェクト、ソリューション全体でコードスタイル違反を即座に排除できます。コードクリーンアッププロファイル:コードのクリーンアップには、ニーズに応じてさまざまな場合に適用できるさまざまな設定(プロファイル)があります。提供時の状態で使用可能な 3 つのデフォルトプロファイルがあります。コードのフォーマットのみを適用するビルトイン: コードの整形、コードのフォーマッ...

ファイルヘッダースタイル

コピーライト表示やその他の識別メッセージにファイルヘッダーを使用するのが一般的です。JetBrains Rider を使用すると、デフォルトのヘッダーテキストを構成し、それをソースファイルに自動的に挿入したり、それを使用して既存のファイルヘッダーを置き換えたりすることができます。JetBrains Rider 設定または .editorconfig ファイル内でファイルヘッダースタイルを構成し、それをファイルテンプレートで作成された新しいファイルに追加し、コードクリーンアップを使用して既存のファイ...