ReSharper 2019.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オプションのコード編集 | C# | ファイルレイアウトページで行われます。編集が完了したら、保存で変更を適用し、ReSharperに変更を保存する場所を選択させるか、次へ保存ドロップダウンリストを使用して変更を特定の設定レイヤーに保存します。詳細については、「 resharper設定の管理と共有 」を参照してください。

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

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

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

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

    Composition view of a type pattern

  • 制約。このビューはパターンやマッチャーエントリの制約を視覚化します。どのモディファイアやアトリビュートとマッチするべきかどうかなど、どんな種類のコードアイテムか。パターンやマッチャーはそれらのすべての制約にマッチするアイテムにのみ適用されます。すべての制約は、これらの制約間の関係を識別する論理コンテナーによってグループ化されています。下の図では、マッチャーエントリの制約ビューを見ることができます。

    Constraints view of a matcher entry

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

  1. メインメニューでReSharper | オプションを選択し、左側のコード編集 | C# | ファイルレイアウトを選択します。

  2. 現在のセットのすべてのパターンを表示するには、ページの左上隅にあるパターンをクリックします。この要素のプロパティーでは、静的フィールド並べ替えポリシーセレクタを使用して、イニシャライザで静的フィールドの順序を変更するかどうか、およびその順序を変更する方法を定義できます。オプションは次のとおりです。
    • - プログラムの動作に影響を与える可能性がある場合、静的フィールドは並べ替えられません。例:初期化子が同じクラスの静的メンバーへの参照を持つ静的フィールドがある場合、そのクラスのすべての静的フィールドは並べ替えられません。

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

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

    選択した動作がすべてのパターンに適用されます。
    ReSharperは、初期化子を持つ並べ替えられていない静的フィールドに対して、相対順序を保持しながら、他の宣言とともに並べ替えます。
  3. 必要に応じて、デフォルトのパターンセットのいずれかをロードするには、ページの右上隅にあるロードをクリックし、パターンセットを選択します。

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

  5. コンポジションビューでは、次の方法でパターンを変更できます。
    • 項目の順序を変更するには、項目の中にドラッグアンドドロップします。

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

    • 新しい項目を追加するには、Toolbox領域からパターン内の目的の場所にドラッグします。領域またはグループをドラッグしてグループ化項目として使用するか、エントリーをドラッグしてターゲットコード内の項目と一致させます。また、依存関係プロパティーマッチャーを使用して、WPF依存関係プロパティーのすべての部分を照合して整列させることもできます。

    • パターンまたはその内部の項目のプロパティーを設定するには、その項目を選択し、右下の部分のプロパティーを変更します。
      • 表示名 - パターンとマッチャーエントリに利用可能なこのプロパティーはあなたの便宜のためにのみ使われ、それによってマッチされるものを記述するべきです。

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

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

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

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

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

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

  7. 制約ビューでは、選択された項目は条件のコンテナーとして表されます。これらの条件を設定するには、項目をToolbox領域から編集したパターンまたは項目にドラッグアンドドロップします。
    • 論理コンテナーの項目は、複数の条件を適用する方法を定義しているため、最初に追加する必要があります。これらのコンテナーの名前は、条件がこれらのコンテナー内でどのように関連しているかをかなり明確に説明しています。論理コンテナーなしで制約を追加すると、それらはそしてコンテナーによってグループ化されます。

    • 制約グループの項目を使用すると、一致する項目を指定する必要があるかどうかを定義できます(ないコンテナーにラップされている場合)。名前制約の値にregex式を使用することはできません。このグループの項目を論理コンテナーにドラッグし、右下にプロパティーを設定します。

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

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

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

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

デフォルトパターンのいずれかを読み込んで、この形式で使用されるタグを確認することをお勧めします。それらはむしろ自明です。たとえば、Entry タグはマッチャーエントリを定義し、Entry.Match はどのコードアイテムをマッチさせるべきかを指定します。 Entry.SortBy タグは、一致するアイテムのソート方法などを指定します。以下の例を考えてみましょう。

Code Cleanup Usage Scenarios Reordering Type Members 01

このXMLコードはコンストラクターと一致し、最初に静的コンストラクターになるようにソートします。

ファイルの並べ替えとメンバーのタイプ

ファイルを適用し、目的の範囲にレイアウト設定を入力するには、コードクリーンアップを使用します。デフォルトのプロファイルデフォルト: フルクリーンアップコードクリーンアップを実行するか、後述のように特定のタスクのみを対象とするカスタムプロファイルでクリーンアップを実行することができます。

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

  1. メインメニューでReSharper | オプションを選択します。

  2. コードクリーンアップの設定ページコード編集 | コードのクリーンアップに移動します。

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

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

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

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

  6. 以下のいずれか 1 つを実行します:
    • Ctrl+Alt+F を押すか、メインメニューからReSharper | 編集 | コードのクリーンアップを選択してください。

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

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

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

コードクリーンアップダイアログを開かずにファイルレイアウトを適用する場合は、作成したプロファイルをサイレントクリーンアップにバインドし、Ctrl+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 availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not availableFeature is not available
最終更新日: 2019年6月7日

関連事項

関連ページ:

ReSharper設定の管理と共有

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

コードのクリーンアップ

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

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

コードのクリーンアップダイアログを使用すると、利用可能なコードクリーンアッププロファイルを使用して、選択した範囲内のコードをクリーンアップし たり、カスタムクリーンアッププロファイルを作成および編集したりできます。このダイアログでクリーンアッププロファイルを作成または変更した場合、その変更はスマート...

ASP.NET MVC特有の機能

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

言語別ReSharper: MSビルド

MSBuildは、アプリケーションを構築するために広く使用されているプラットフォームです。特定のXMLタグを使用して、プロジェクトの構築方法や実行方法を定義できます。ReSharperを使用すると、より速く行うことができます。必要に応じて、ReSharperオプションの環境 | 製品&特徴ペ...

言語別ReSharper: Googleプロトコルバッファ (Protobuf)

ReSharperは、Googleプロトコルバッファ(Protobuf)バージョン2.xおよび3.0の.protoファイルでIDEサポートを提供します。必要に応じて、ReSharperオプションの環境 | 製品&特徴ページで対応するチェックボックスをオフにして、.protoファイルのReSh...