ReSharper 2019.1ヘルプ

コードの書式設定ルールの管理と適用

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

コードスタイルの重要な側面は、コードをどのように整形するか、すなわち、空白と空白を使用してコードブロックを整理し分割する方法、インデント用のタブを使用するかどうか、使用方法、長い行を折り返すかどうかなどです。

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

編集して貼り付けたコードの自動書式設定

エディターにコードを入力すると、ReSharperはセミコロン ; を入力するとすぐに式を再フォーマットし、右波括弧 }を入力するとすぐにコードブロックを再フォーマットします。必要に応じて、ReSharperオプションの環境 | エディター | エディターの動作ページでこれらの種類の自動書式設定を無効にすることができます。

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

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

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

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

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

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

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

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

  2. Ctrl+Alt+L を押すか、メインメニューからReSharper | 編集 | コードの再フォーマットを選択してください。あるいは、Ctrl+Shift+Aを押して、ポップアップでコマンド名を入力してから、コマンド名を選択することもできます。

Alt+Enter アクションリストから現在の選択範囲内のコードを再フォーマットすることができます。

現在の選択範囲内のコードを再フォーマットするには

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

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

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

    Reformatting currently selected code

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

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

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

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

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

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

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

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

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

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

コードインスペクションを使用してC#およびC++の書式設定規則を更新する

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

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

一方、コードの可読性を低下させたり、コードの理解に影響を及ぼす可能性のある書式設定の問題があります: 例えば:

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

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

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

  • 宣言波括弧

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

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

既存の書式を維持する

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

書式設定の規則を厳しく保つには、特定のコンテキストに対して既存のまま...最大空白行を維持する、およびシンプルラッププリファレンスを使用します: ReSharperオプションでこれらの設定の確認や変更ができます:

ReSharper: keep existing formatting for selected rules

異なる改行スタイルのコードを再フォーマットする

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

長い行の折り返しと細断

長い行を折り返すおよび長い行を切り詰めるアクションは、キャレットが許容最大行長より長い行にあるときに使用可能になります。ReSharperオプションのコード編集 | 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);

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

コードを明示的に再フォーマットするための別の一連のアクションは、選択範囲内でよりコンパクト(改行数が少ない)またはより広範囲(改行数)の形式を強制できます。

これらのアクションを呼び出すには、コードブロック( Ctrl+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 | オプションを選択します。

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

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

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

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

選択したコードの書式設定ルールを構成するには

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

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

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

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

    Configuring formatting rules for selected code

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

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

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

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

既存のコードからのフォーマット規則の使用

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

既存のコードからフォーマット規則を学ぶ

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

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

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

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

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

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

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

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

    ReSharper: Using formatting rules from existing code

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

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

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

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

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

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

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

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

コメント付きの個々の書式設定ルールを変更するには

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

  2. ルールの名前を知っているとき、EditorConfigプロパティーのインデックスでそのIDを調べることができます - あなたのブラウザで検索を使ってください。例: space_before_semicolon:セミコロンの前にスペースをトリガーするルールを見つけるセミコロンの前を検索し、IDを見つけるしたい場合。

  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に保持したり、チームメンバーと自動的に共有することができます。

ReSharperは、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設定の両方を上書きします。

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

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

Language: C#

Language: VB.NET

Language: C++

Language: HTML

Language: ASP.NET

Language: Razor

Language: JavaScript

Language: TypeScript

Language: CSS

Language: XML

Language: XAML

Language: Resx

Language: Build Scripts

Language: Protobuf

Language: JSON

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is available

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

最終更新日: 2019年5月14日

関連事項

関連ページ:

コード補完 (IntelliSense)

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

コード生成

ReSharperは、定型コードを生成するさまざまな方法を提供します。例:宣言されていないコードシンボルを使用し、これらのシンボルを用途に基づいて自動的に生成したり、型メンバーを生成したりすることができます。現在のファイルで設計時コードインスペクションが有効になっている場合、ReSharperは足り...

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

Alt+EnterReSharperがVisual Studioのテキストエディターに追加する最も目立つものは、アクションインジケータとアクションリストです。ReSharper(C#、VB.NET、XML、CSS、JavaScript、ASP.NETなど)でサポートされているすべてのファイルに表示さ...

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

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

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

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

EditorConfigの使用

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