ReSharper 2024.1 ヘルプ

フォーマットルールを適用する

編集および貼り付けられたコードの自動フォーマット

エディターでコードを入力すると、セミコロンを入力するとすぐに ReSharper によって式が再フォーマットされ、閉じ括弧を入力するとすぐに ; コードブロックが再フォーマットされます } 必要に応じて、ReSharper オプション Alt+R, O環境 | エディター | 振る舞いページでこれらの種類の自動フォーマットを無効にすることができます。

ReSharper では、コードを貼り付けるときにフォーマットルールを自動的に適用することもできます。デフォルトでは、貼り付けられたコードは完全に再フォーマットされず、インデント設定のみが適用されます。貼り付けられたコードを完全にフォーマットする場合、または貼り付け時にフォーマットを無効にする場合は、ReSharper オプション Alt+R, O環境 | エディター | 振る舞いページで貼り付けで自動フォーマットセレクターを使用します。

既定では、Visual Studio は編集済みおよび貼り付け済みのコードに独自のフォーマット規則を適用します。ReSharper の自動フォーマット機能を使用している場合は、Visual Studio の自動フォーマットを無効にすることをお勧めします。Visual Studio のオプション(ツール | オプション)で行うことができます。たとえば、C# の場合、テキストエディター | C# | コードスタイル | フォーマット | 一般オプションページの対応するチェックボックスをクリアします。

既存のコードを再フォーマットする

ReSharper は、既存のコードを再フォーマットするいくつかの方法を提供します。一言で言えば、いつも Control+Alt+L を使うことができますが、以下に述べるいくつかの詳細や選択肢があります。

スコープ内の既存のコードを再フォーマットする

  1. コードを再フォーマットする範囲を選択します。

    • エディターで選択して、選択範囲のコードを再フォーマットします。

    • ファイル内のコードを再フォーマットするには、ファイル内の任意の場所にキャレットを置きます。

    • ソリューションエクスプローラーの 1 つまたは複数の項目を選択して、これらの項目およびその子項目にあるファイルのコードを再フォーマットします。

  2. Control+Alt+L を押すか、メインメニューから ReSharper | 編集 | コードの整形を選択します。または、Control+Shift+A を押して、ポップアップにコマンド名を入力し、そこで選択することもできます。

Alt+Enter リストから現在選択されているコードを再フォーマットできます。

現在の選択を再フォーマットする

  1. エディターで、再フォーマットするコードブロックを選択します。

  2. Alt+Enter を押して、再フォーマットとクリーンアップ | 選択範囲の再フォーマットを選択します。

    Reformatting currently selected code

または、コードのクリーンアップを使用して、任意のスコープでコードを再フォーマットできます。コードの再フォーマットを他のコードスタイルの適用と組み合わせる場合は、コードのクリーンアップが役立つことがあります。

コードクリーンアップでコードを再フォーマットする

  1. コードを再フォーマットする範囲を選択します。

    • エディターで選択して、選択範囲のコードを再フォーマットします。

    • ファイル内のコードを再フォーマットするには、ファイル内の任意の場所にキャレットを置きます。

    • ソリューションエクスプローラーの 1 つまたは複数の項目を選択して、これらの項目およびその子項目にあるファイルのコードを再フォーマットします。

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

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

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

  3. 開いたコードのクリーンアップダイアログで、ビルトイン: コードの整形プロファイルを選択します。

  4. 実行をクリックします。ReSharper は、書式の設定に応じて、選択した範囲のコードを再フォーマットします。

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

変更をファイルに保存するたびにフォーマットを適用して、編集内容が常にコードスタイルに準拠していることを確認できます。

変更の保存時にフォーマット設定を自動的に適用する

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

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

  3. ビルトイン: コードの整形プロファイルを選択し、デフォルトに設定をクリックします(デフォルトのプロファイルはサイレントクリーンアップにも使用されます)。

  4. コード編集 | コードのクリーンアップ | 一般オプションページに移動し、ファイルの保存時にクリーンアップを自動的に実行するを選択します。

    オプションで、ファイルマスクによって特定のファイルへの自動クリーンアップを制限できます。ファイルの変更された部分のみを選択して、変更によって影響を受けるコードにクリーンアップが適用され、ファイル内の残りのコードが変更されないようにすることもできます。

  5. ダイアログで保存をクリックして変更を適用し、ReSharper に変更を保存する場所を選択させるか、保存先セレクターからこのレイヤーを選択して特定の設定レイヤーに変更を保存します。詳細については、「resharper 設定の管理と共有」を参照してください。

  6. 次回編集を終了してファイル (Ctrl+S) またはすべてのファイル (Ctrl+Shift+S) を保存すると、ReSharper は選択したプロファイルを使用して影響を受けるファイルをクリーンアップします。デフォルトのクリーンアッププロファイルが選択されていない場合、ReSharper はプロファイルの 1 つを選択するよう求めます。

コードインスペクションを使用して、C# および C++ のフォーマット規則を維持する

C# および C++ では、コードインスペクション機能を使用して、コードのフォーマットスタイルを維持することもできます。ReSharper は、数十のフォーマットインスペクションを提供します。これらはすべてデフォルトで無効になっています。

ソリューションによっては、メソッド間でのインデントサイズの違い、switch ステートメント内の case ラベルのインデントの違い、改行の欠落など、コードベースに何百ものマイナーなフォーマット違反がある可能性があります。これらすべての違反に対してコードインスペクションを有効にすると、うるさすぎることがあります。

一方、コードの可読性を低下させたり、コードの理解に影響を及ぼす可能性のあるフォーマットの問題があります。例:

  • 1 つの同じ行に複数の型メンバーがあり

  • 1 行に複数のステートメント

  • 子ステートメントの前後に間違ったインデントがあり

  • 宣言波括弧のインデントが間違っています。

このようなフォーマットの問題については、コードインスペクションを有効にすることをお勧めします。

ReSharper: Code inspections and quick-fixes for violations of the code formatting style

既存のフォーマットを保持

いくつかのフォーマットルールを「ソフトに」適用できます。つまり、ReSharper がコード補完とコード生成機能を使用して新しいコードを生成し、コードテンプレートを適用してリファクタリングを実行すると、このようなルールが適用されますが、既存のコードを再フォーマットするとこれらのルールは無視されます(たとえば、Control+Alt+L を使用)。

フォーマットルールを緩くするには、特定のコンテキストに対して既存の維持 ...最大空白行を維持するシンプルラップ設定を使用します。これらの設定の構成は、ReSharper オプション Alt+R, O で確認または変更できます。

ReSharper: keep existing formatting for selected rules

さまざまな改行スタイルでコードを再フォーマットする

ReSharper では、フォーマットルールではなく明示的なアクションを使用して、同様のコードをさまざまな方法で再フォーマットすることもできます。これらのアクションは、関連するルールの既存のフォーマットを保持することを選択した場合に最も役立ちます。ただし、より厳密な設定を使用している場合、対応する明示的なフォーマットアクションは機能しません。このような構成では、影響を受けるコンテキストでフォーマットルールを常に適用する必要があるためです。例: 既存の維持 ... 環境設定が無効になっている場合、以下で説明する wrap/chop/spacious/compact コマンドは同じ結果をレンダリングします。一部のラッピングルールがチョップ ... に設定されている場合、ラップ / コンパクトコマンドを呼び出しても、対応するコンテキストのコードは常に切り刻まれます。

長い行をラップしてチョップする

長い行を折り返すおよび長い行を切り詰めるアクションは、キャレットが行の許容最大長よりも長い行にある場合に使用可能になります。これは、ReSharper オプション Alt+R, Oコード編集 | C# | スタイルのフォーマット | 改行および折り返しページの右余白 (カラム) 設定で構成できます。

Alt+Enter を押して、必要な改行を追加するアクションの 1 つを選択できます。

ReSharper: Wrap and chop long lines

長い行を折り返すは、設定された行の長さを超えないように、十分な改行を追加します。

var reportHtml = CreateReport("359CD313-7C7E-49B2-A2AB-E12FDFD1319D", DateTimeOffset.UtcNow.AddMonths(-1), DateTimeOffset.UtcNow, useRichText: true);
var reportHtml = CreateReport("359CD313-7C7E-49B2-A2AB-E12FDFD1319D", DateTimeOffset.UtcNow.AddMonths(-1), DateTimeOffset.UtcNow, useRichText: true);

長い行を切り詰めるは、ライン上の各エンティティに改行を追加します:

var reportHtml = CreateReport("359CD313-7C7E-49B2-A2AB-E12FDFD1319D", DateTimeOffset.UtcNow.AddMonths(-1), DateTimeOffset.UtcNow, useRichText: true);
var reportHtml = CreateReport("359CD313-7C7E-49B2-A2AB-E12FDFD1319D", DateTimeOffset.UtcNow.AddMonths(-1), DateTimeOffset.UtcNow, useRichText: true);

コードブロックのコンパクトで広々とした厳密なフォーマット

選択したコードを明示的に再フォーマットするための別の一連のアクションは、よりコンパクトな(改行が少ない)またはより広い(改行が多い)スタイルを適用できます。

これらのアクションを呼び出すには、コードのブロックを選択し(Control+W を複数回押して論理ブロックを選択できます)、Alt+Enter を押して再フォーマットとクリーンアップ | 選択範囲の再フォーマットを選択します。

ReSharper: Compact, spacious, and strict format for code blocks

改行が多すぎてコードの読み取りに役立たない場合は、改行を削除することをお勧めします。以下の例では、空の getter と setter は有用な情報をもたらさず、1 行に安全に配置できます。これは、コンパクトフォーマット (より少ない改行) アクションで実行できます。

public string Name { get; set; } public int Age { get; set; }
public string Name { get; set; } public int Age { get; set; }

広々としたフォーマット (チョップ) を使用すると、複数行のコードブロックを読みやすくすることができます。例: 複雑な if 文や重い XElement コンストラクター呼び出しで改行を追加したい場合があります:

summaryTable.Add(new XElement("tr", new XElement("td", XmlHelpers.CreateHyperlink(inspection.Text, CodeInspectionHelpers.TryGetStaticHref(inspection.Id), null, true), new XComment(compoundName)), new XElement("td", GetSeverityLink(inspection.Severity))));
summaryTable.Add(new XElement("tr", new XElement("td", XmlHelpers.CreateHyperlink(inspection.Text, CodeInspectionHelpers.TryGetStaticHref(inspection.Id), null, true), new XComment(compoundName)), new XElement("td", GetSeverityLink(inspection.Severity))));

厳密な形式アクションは、既存の維持 ... 環境設定の構成方法に関係なく、既存の改行を無視して選択を再フォーマットします。再インデントのみアクションは、他のフォーマット設定を適用せずにインデントを修正します。

関連ページ:

フォーマットルールを構成する

フォーマットルールは非常に高いレベルの詳細に設定できます。例: 特定の演算子の周囲に空白を配置するか、入れ子になった文をインデントするかを定義できます。オプションでコードフォーマットルールを構成するメインメニューからを選択するか、Alt+R O を押します。ページを使用して、すべての言語で適用されるオプションを確認し、設定します。ページを使用して、言語固有のフォーマットを構成します。これらのページでは、下部にあるプレビュー領域を使用して、ReSharper がコードに特定の設定を適用する方法を表示...

仮想フォーマッターを使用する

適切にフォーマットされたコードは操作が簡単ですが、コードのフォーマットが好みに合わないシナリオがいくつかありますが、コードを再フォーマットすることはできません。異常な形式のサードパーティソースを読んでいます。個人的なフォーマットは、取り組んでいるチーム共有プロジェクトのフォーマット規則と矛盾しています。変更ごとにレビューが必要になるため、ソースコードへの不必要な変更は避けたいと考えています。このようなシナリオでは、Virtual Formatter が便利です。実際にフォーマットを変更することな...

コードのクリーンアップ

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

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...

XML ドキュメントコメントを再フォーマットする

ReSharper はあなたの好みに従って XML ドキュメントのコメントを再フォーマットすることができます。ReSharper は、次のようなプレーンコメントを再フォーマットしないことに注意してください。// A plain single-line comment または /* A plain multi-line comment */XML ドキュメントコメントを再フォーマットするには、コードクリーンアップを使用します。組み込みプロファイルビルトイン: フルクリーンアップを使用してコードクリーンア...

ReSharper 設定の管理と共有

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