ReSharper 2021.1 ヘルプ

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

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」などに置き換えられます。明らかに、このパラメーターは、リージョンの「グループ化」プロパティに同じ値を使用する場合に意味があります。このパラメーターの有効な値は、スペースを含まない「GroupBy」プロパティの値と同じです。つまり、実装インターフェースの名前をリージョン名に挿入するには、${ImplementsInterface} パラメーターを使用します。

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

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

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

      • グループ化 - リージョンまたはグループのこのプロパティは、指定されたグループに従ってリージョン / グループを生成するかどうかを指定します。例: 種類が値として選択されている場合、フィールド、プロパティ、その他の種類のメンバー(存在する場合)に対していくつかのリージョン / グループが作成されます。None 以外のグループ化設定を選択するとすぐに、一致したコード項目をさらに分離できるに句が表示されます。

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

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

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

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

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

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

    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 を押して実行できます。ファイルレイアウトの適用と他のコードスタイルのタスクを組み合わせたカスタムクリーンアッププロファイルを作成することもできます。

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

関連ページ:

ReSharper 設定の管理と共有 | ReSharper

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

コードのクリーンアップ | ReSharper

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

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

コードのクリーンアップダイアログでは、利用可能なコードクリーンアッププロファイルを使用して、選択したスコープ内のコードをクリーンアップしたり、カスタムクリーンアッププロファイルを作成および編集したりできます。このダイアログでクリーンアッププロファイルを作成または変更する場合、変更はスマート保存ロジックを使用して保存されることに注意してください。変更を共有設定レイヤーに保存する必要がある場合は、ReSharper オプションのページで変更を行い、次へ保存をクリックしてから、目的の設定レイヤーを選択...

ASP.NET MVC 特有の機能 | ReSharper

ReSharper には、一般的な ASP.NET 機能に加えて、ASP.NET MVC での作業をより簡単にサポートする特殊機能があります。構文のハイライト:ASP.NET MVC メソッド呼び出しとパラメーターの特別な構文のハイライト: コード補完:文字列リテラルでアクションとコントローラーを参照するための専用コード補完: ナビゲーションと検索:さまざまなナビゲーション機能がアクションとコントローラーでも機能します。コード生成:使用箇所から新しいコントローラーとアクションを作成する: 最終...

言語による ReSharper: MS ビルド | ReSharper

MSBuild は、アプリケーションを構築するために広く使用されているプラットフォームです。特定の XML タグを使用して、プロジェクトの構築方法や実行方法を定義できます。ReSharper を使用すると、より速く行うことができます。コード検査:あらかじめ定義された要素またはその属性の名前を誤って入力した場合、ReSharper はそのような不一致についてハイライト表示します。まだ定義されていないプロパティを参照しようとすると、ReSharper はそのようなケースも検出します。MSBuild...

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

ReSharper は、Google プロトコルバッファ(Protobuf)バージョン 2.x および 3.0 の .proto ファイルで IDE サポートを提供します。ReSharper は、.proto ファイルの言語構文をハイライトし、エラーを検出してハイライトします。基本コード補完と他のタイピング支援機能はエディターで利用可能です。型と値の宣言に行き、それらの用法を検索し、他のナビゲーション機能を楽しむことができます。Protobuf コードを再フォーマットしてシンボルの名前を変更することも...