ReSharper 2019.2ヘルプ

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

ReSharper | 編集 | コードの再フォーマット
Ctrl+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は、既存のコードを再フォーマットするいくつかの方法を提供します。一言で言えば、いつも 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オプション(Alt+R,,O)でこれらの設定の構成を確認または変更できます。

ReSharper: keep existing formatting for selected rules

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

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

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

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

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

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

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

  4. 保存をクリックして変更を適用し、ReSharperに保存先を選択させるか、次へ保存リストを使用して特定の設定レイヤーに変更を保存します。詳細については、再シャーパー設定の管理と共有を参照してください。

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

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

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

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

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

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

    Configuring formatting rules for selected code

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

  6. 保存をクリックして変更を適用し、ReSharperに保存先を選択させるか、次へ保存リストを使用して特定の設定レイヤーに変更を保存します。詳細については、再シャーパー設定の管理と共有を参照してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ReSharper: Using formatting rules from existing code

  4. 保存をクリックして変更を適用し、ReSharperに保存先を選択させるか、次へ保存リストを使用して特定の設定レイヤーに変更を保存します。詳細については、再シャーパー設定の管理と共有を参照してください。

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

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

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

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

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

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

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

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

  1. 編集する書式設定ルールの名前を探します。ReSharperオプション(コード編集 | [言語] | スタイルの書式設定)で検索するか、希望のルールが適用されるコードブロックを選択し、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に保持したり、チームメンバーと自動的に共有することができます。

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

書式設定オプションを共有するときに知っておくべきもう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 availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is availableFeature is available

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

最終更新日: 2019年11月13日

関連ページ:

コード補完 (IntelliSense)

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

コード生成

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

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

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

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

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

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

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

EditorConfigの使用

どのフォーマットスタイルの設定がファイルフォーマット情報ウィンドウの現在のファイルに影響するかを見ることができます。ReSharperは、EditorConfig形式で定義されているコードフォーマットスタイル、コード構文スタイル、およびコードインスペクションの重大度をサポートしています。Matthe...