JetBrains Rider 2020.2ヘルプ

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

コード | コードの再フォーマット
Ctrl+Alt+L

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

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

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

エディターでコードを入力すると、JetBrains Riderはセミコロン ; を入力するとすぐに式を再フォーマットし、閉じ括弧 }を入力するとすぐにコードのブロックを再フォーマットします。必要に応じて、JetBrains Rider設定 Ctrl+Alt+Sエディター | 一般 | 入力支援ページでこれらの種類の自動フォーマットを無効にすることができます。

JetBrains Riderでは、コードを貼り付けるときにフォーマット規則を自動的に適用することもできます。デフォルトでは、貼り付けられたコードは完全には再フォーマットされず、インデント設定のみが適用されます。貼り付けたコードを完全にフォーマットする場合、または貼り付けのフォーマットを無効にする場合は、JetBrains Rider設定 Ctrl+Alt+Sエディター | 一般 | 入力支援ページで貼り付けで自動フォーマットセレクターを使用します。

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

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

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

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

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

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

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

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

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

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

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

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

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

    Reformatting currently selected code

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

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

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

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

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

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

  2. メインメニューのコード | コードのクリーンアップを選択します。

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

  4. OKをクリックします。JetBrains Riderは、書式の設定に応じて、選択したスコープのコードを再フォーマットします。

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

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

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

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

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

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

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

  • 宣言波括弧

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

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

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

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

フォーマット規則の厳格さを緩和するには、特定のコンテキストに対して既存のまま...最大空白行を維持する、およびシンプルラップ設定を使用します。JetBrains Rider設定 Ctrl+Alt+Sでこれらの設定の構成を確認または変更できます。

JetBrains Rider: keep existing formatting for selected rules

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

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

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

長い行を折り返すおよび長い行を切り詰めるアクションは、キャレットが許容最大行長より長い行にある場合に使用可能になります。JetBrains Rider設定 Ctrl+Alt+Sエディター | コード・スタイル | 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. Ctrl+Alt+S を押すか、メニューからファイル | 設定(WindowsおよびLinux)またはJetBrains Rider | 環境設定(macOS)を選択します。

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

  3. 設定ダイアログで保存をクリックして変更を適用し、JetBrains Riderに保存場所を選択させるか、次へ保存リストを使用して特定の設定レイヤーに変更を保存します。詳細については、レイヤーベースの設定を参照してください。

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

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

C#、JavaScript、TypeScript、HTML、およびProtobufのコメントを使用してフォーマッターを構成できます。

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

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

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

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

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

  1. 調整する書式設定ルールの名前を見つけます。JetBrains Rider設定 Ctrl+Alt+Sエディター | コード・スタイル | [言語]ページで確認できます。

  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

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

Riderは、ディレクトリベースの設定(Web言語の場合)とレイヤーベースの設定(.NET言語の場合)の両方を使用して、コードの書式設定を保存します。どちらの設定管理メカニズムも設定の共有をサポートしています。レイヤーベースの設定は、ReSharperとも互換性があります。
Rider設定ダイアログで、アイコンを見て、特定の言語に使用されている設定管理メカニズムを確認できます。

Rider: Code formatting settings

EditorConfigで書式設定を構成することもできます。これらの設定は、ソリューション階層のさまざまなレベルの.editorconfigファイルに保存できます。ファイルは通常VCSに配置されるため、そこで定義された設定はプロジェクトチーム間で共有されます。
JetBrains Riderを使用すると、EditorConfigを使用して、JetBrains Riderの設定ダイアログで使用できるフォーマット設定を定義できます。サポートされているEditorConfigプロパティの名前と説明は、EditorConfigリファレンスにあります。

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

最終更新日:

関連ページ:

コード補完 (IntelliSense)

JetBrains Riderのコード補完機能に慣れ親しむために、実装の基礎をいくつか紹介します。新しい識別子の入力を開始するとすぐに、自動補完の候補リストが表示されます。 を押すと、基本補完の候補リストが表示されます。他の2つの補完コマンド、スマート補完およびクラス名補完は、高度なアルゴリズムを適...

コード生成

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

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

Riderのテキストエディターで最も注目すべきことは、アクションインジケータとアクションリストです。これらは、JetBrains Riderによってサポートされるすべてのファイル(C#、VB.NET、XML、CSS、JavaScript、ASP.NETなど)に表示され、使用可能なアクションについて通...

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

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

EditorConfigを使用する

JetBrains Riderは、EditorConfig形式で定義されたコード形式スタイル、コード構文スタイル、C#の命名スタイル、およびコードインスペクション重大度レベルをサポートします。EditorConfigとは何ですか?JetBrains Riderはどのようにそれを拡張しますか?:Edi...

レイヤーベースの設定

Rider設定ダイアログ では、ページアイコンを見て、特定のページに使用されている設定管理メカニズムを確認できます。任意のアイコンでマークされていないページは、ユーザープロファイルに保存されているIDE設定をホストします。レイヤーベースの設定はReSharperと互換性があるため、ReSharper...