ReSharper 2020.2 ヘルプ

コードフォーマットルールの管理と適用

ReSharper | 編集 | コードの再フォーマット
Control+Alt+L
ReSharper_ReformatCode

コードスタイルの重要な点は、コードの書式設定方法、つまり、空白と空白行を使用してコードブロックを配置および分離する方法、インデントにタブを使用するかどうか、および使用する方法。

ReSharper コードのフォーマットルールの豊富なセットには、デフォルトの Visual Studio フォーマットオプションと多数のベストプラクティスを考慮したデフォルト設定があります。書式設定ルールのすべての詳細を構成し、コードにルールを適用できます。これらのルールは、ReSharper がコード補完およびコード生成機能を使用して新しいコードを生成し、コードテンプレートを適用し、リファクタリングを実行するときに適用されます。書式設定ルールは、現在の選択範囲、現在のファイル、またはソリューション全体までのより大きなスコープの既存のコードにも適用できます。

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

エディターでコードを入力すると、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 を押すか、キャレットの左側にあるアクションインジケーターをクリックして、アクションリストを開きます。

  3. アクションリストで ThemedIcon CodeCleanupOptionPage Screen Gray png 選択のフォーマットを選択します。

    Reformatting currently selected code

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

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

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

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

    • ファイル内の任意の位置にキャレットを設定して、ファイル内のコードを再フォーマットします。

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

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

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

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

  3. 開いているコードクリーンアップダイアログで、デフォルト : コードの再フォーマットプロファイルを選択します。

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

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

コードインスペクションを使用して、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 コマンドは同じ結果をレンダリングします。一部の折り返しルールがチョップ ... に設定されている場合、対応するコンテキストのコードは、wrap / compact コマンドを呼び出しても常に切り取られます。

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

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

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

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

再フォーマットする前に

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 を押してから選択のフォーマットのいずれかのアクションを選択します。

改行が多すぎてコードを読むのに役立たない場合は、削除することをお勧めします。以下の例では、空の 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))));

厳密な形式アクションは、既存のまま ... 環境設定の構成方法とは関係なく、既存の改行を無視して選択範囲を再フォーマットします。

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

書式設定ルールは非常に高いレベルの詳細に設定できます。例:特定の演算子の周囲に空白を配置するか、入れ子になった using 文をインデントするかを定義できます。

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

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

  2. コード編集 | 一般的な書式スタイルページを使用して、すべての言語で適用されるオプションを確認し、設定します。

  3. コード編集 | [ 言語 ] | スタイルの書式設定ページを使用して、言語固有の書式設定を構成します。これらのページでは、下部にあるプレビュー領域を使用して、ReSharper がコードに特定の設定を適用する方法を表示できます。

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

オプションページを掘り下げる代わりに、コードブロックを選択して、そのブロックに適用可能な書式設定ルールのみを設定することができます。変更されたフォーマッタ設定が、エディター内の選択したブロックのコードにどのように影響するかを観察することができます。

選択したコードのフォーマットルールを構成する

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

  2. Alt+Enter を押すか、キャレットの左側にあるアクションインジケーターをクリックして、アクションリストを開きます。

  3. フォーマット | 構成を選択します。

  4. 開いているフォーマットを設定するダイアログには、選択したコードブロックに影響を与えるすべての書式設定規則が表示されます。コードブロック自体は、点線の枠で囲まれます。

    Configuring formatting rules for selected code

  5. フォーマットルールを変更すると、選択したブロックのコードにどのように影響するかがわかります。

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

  7. 次へ保存リストで .editorconfig を選択して、構成済みのフォーマットルールを EditorConfig にエクスポートすることもできます。

  8. オプションで、コメントとして保存をクリックできます。これにより、選択したブロックの前後に変更内容がコメントとして保存されます。これにより、設定を変更することなく、目的のフォーマッタルールをローカルで上書きできます。

  9. ReSharper は、ダイアログを閉じてコードブロックを再フォーマットします。

既存のコードのフォーマットルールを使用する

個別の書式設定を調整する別の方法は、既存のコードサンプルから書式ルールを学習することです。これは、選択されたブロック、現在のファイル、ファイルのセット、1 つ以上のプロジェクト、またはソリューション全体です。ReSharper は、選択したサンプルを分析し、現在の設定とは異なるフォーマットルールをリストします。その後、検出されたルールを確認し、必要に応じて変更し、目的の設定レイヤーに保存できます。

既存のコードから書式ルールを学ぶ

  1. 書式設定を分析する範囲を選択します。

    • 選択範囲内のフォーマットを分析するには、エディターで選択を行います。

    • ファイル内の任意の場所にキャレットを設定して、ファイル内のフォーマットを分析します。

    • これらの項目とその子項目にあるファイルのフォーマットを分析するには、ソリューションエクスプローラーで 1 つ以上の項目を選択します。

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

    • メインメニューの ReSharper | 編集 | フォーマット設定の検出を選択します。

    • 右クリックし、コンテキストメニューでフォーマット設定の検出を選択します。

    • コードサンプルが選択項目の場合は、Alt+Enter を押して選択のフォーマット | フォーマット設定の検出を選択します。

  3. 現在の設定と異なる規則を確認してください。

    ReSharper: Using formatting rules from existing code

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

  5. コードサンプルが選択の場合、オプションでコメントとして保存をクリックできます。これにより、選択したブロックの前後に変更内容がコメントとして保存されます。これにより、設定を変更することなく、目的のフォーマッタルールをローカルで上書きできます。

コメントを使用してフォーマッターを構成する

ReSharper では、実際にルールを変更することなく、設定済みの書式設定ルールから逸脱することができます。コードの特定の部分でフォーマッタを完全に無効にすることもできます。

フォーマッタは、C#、C++、JavaScript、TypeScript、HTML、Protobuf のコメントで設定できます。

フォーマッタを無効にするには、次のコメントを使用します。

  • // @formatter:off - この行の後にフォーマッタを無効にする

  • // @formatter:on - この行の後にフォーマッターを有効にする

フォーマッタを無効にしすぎると、個々の書式設定ルールをコメントで変更できます。

コメントを使用して個々の書式ルールを変更する

  1. 調整する書式設定ルールの名前を見つけます。ReSharper オプション(Alt+R O)のコード編集 | [ 言語 ] | スタイルの書式設定ページで検索するか、目的のルールが適用されるコードブロックを選択して Alt+Enter を押し、選択のフォーマット | 構成を選択できます。開いたダイアログで、選択に影響を与えるすべてのルールを調べ、変更して、変更のライブプレビューを確認できます。このダイアログでは、コメントとして保存をクリックすることもできます。ReSharper は、変更されたすべてのルールに必要なコメントを生成します。

  2. ルールの名前がわかっている場合は、EditorConfig プロパティのインデックスでその ID を検索できます。ブラウザーで検索を使用します。例:セミコロンの前のスペースをトリガーするルールを検索する場合は、セミコロンのを検索すると、ID: space_before_semicolon が見つかります。

  3. インデックスの Web ページでルールの ID を見つけたら、説明リンクをクリックして、このルールに許可されている値を確認します。 space_before_semicolon の例に従って、true または false受け入れることができます。

  4. ルールを変更するコードの前に次のコメントを追加します。
    // @formatter:<rule_ID> <value>、たとえば、セミコロンの前のスペースを有効にするには、次を追加します
    // @formatter:space_before_semicolon true

  5. ルールの新しい値は、ファイルの最後まで適用されます。オプションで構成された値に戻す場合は、次のコメントを追加します。
    たとえば、// @formatter:<rule_ID> restore
    // @formatter:space_before_semicolon restore

書式設定ルールを保存および共有する

レイヤーベースの設定のメカニズムを使用して、コードの書式設定を保存します。とりわけ、このメカニズムにより、さまざまなソリューションのさまざまな設定を維持したり、これらの設定を VCS に保持したり、チームメンバーと自動的に共有することができます。

また、EditorConfig を介してすべての言語で、クラン形式を C++、JavaScript、TypeScript で書式設定を構成することもできます。これらの設定は、ソリューション階層のさまざまなレベルの .editorconfig.clang-format、または _clang-format ファイルに保存できます。ファイルは通常 VCS に配置されるため、そこで定義された設定はプロジェクトチーム間で共有されます。
ReSharper を使用すると、EditorConfig を使用して、ReSharper のオプションダイアログで使用できるフォーマット設定を定義できます。サポートされている EditorConfig プロパティの名前と説明は、EditorConfig リファレンスにあります。
Clang-Format に関しては、ReSharper はサポートされている Clang-Format オプションのみを適用します。

.editorconfig ファイルで定義されたフォーマットプロパティは、この .editorconfig ファイルが適用されるスコープの ReSharper 設定で定義された同じプロパティをオーバーライドすることに注意してください。Clang-Format で定義されたフォーマットプロパティは、ReSharper 設定と EditorConfig 設定の両方をオーバーライドします。

書式設定オプションを共有するときに知っておくべきもう 1 つの重要なことは、インデントスタイル(タブ / スペース)とサイズがデフォルトで Visual Studio オプションから取得されることです。特定の言語でこれらの設定を共有する場合は、ReSharper オプションのコード編集 | [ 言語 ] | スタイルの書式設定 | タブとインデントページのインデントスタイルとサイズを Visual Studio から使用するチェックボックスをオフにして、変更を共有設定レイヤーに保存します。

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

Language: C#Language: VB.NETLanguage: C++Language: HTMLLanguage: ASP.NETLanguage: RazorLanguage: JavaScriptLanguage: TypeScriptLanguage: CSSLanguage: XMLLanguage: XAMLLanguage: ResxLanguage: Build ScriptsLanguage: ProtobufLanguage: JSON
Feature is available in C#Feature is available in Visual Basic .NETFeature is available in C++Feature is available in HTMLFeature is available in ASP.NETFeature is available in RazorFeature is available in JavaScriptFeature is available in TypeScriptFeature is available in CSSFeature is available in XMLFeature is available in XAMLFeature is available in Resource filesFeature is available in build script filesFeature is available in ProtobufFeature is available in JSON

C# の機能の使用方法については、こちらの説明と例を参照してください。他言語の詳細については、言語による ReSharper の対応するトピックを参照してください。

最終更新日 :

関連ページ:

コード補完 (IntelliSense)

ReSharper は、高度な機能を備えた Visual Studio のネイティブコード補完(IntelliSense)を補完し、拡張します。例:あなたの入力に基づいて提案のリストを絞り込み、選択したタイプと拡張メソッドを自動的にインポートし、メソッド名を補完するときに括弧を追加し、タイプに応じて...

アクションインジケータとアクションリスト

ReSharper が Visual Studio テキストエディターに追加する最も注目すべきものには、アクションインジケータとアクションリストがあります。これらは、ReSharper でサポートされるすべてのファイル(C#、VB.NET、XML、CSS、JavaScript、ASP.NET など)...

コードインスペクション設定の構成

コード注釈を使用して、ReSharper がコードをインスペクションする方法をカスタマイズすることもできます。設計時コードインスペクションを構成する :デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、...

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

ReSharper | 編集 | コードのクリーンアップ ...コードのクリーンアップダイアログでは、利用可能なコードクリーンアッププロファイルを使用して、選択したスコープ内のコードをクリーンアップしたり、カスタムクリーンアッププロファイルを作成および編集したりできます。このダイアログでクリー...

EditorConfig を使用する

どのフォーマットスタイルの設定がファイルフォーマット情報ウィンドウ(ReSharper | Windows | ファイルフォーマット情報)の現在のファイルに影響するかを見ることができます。ReSharper は、EditorConfig形式で定義されたコード形式スタイル、コード構文スタイル、C#

ReSharper 設定の管理と共有

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