ReSharper 2020.1ヘルプ

EditorConfigを使用する

ReSharperは、EditorConfig(英語)形式で定義されたコードフォーマットスタイルコード構文スタイルC#の命名スタイル、およびコードインスペクションの重大度レベルをサポートしています。

Matthellは、ReSharperがEditorConfigを使用して書式設定ルールの設定全体をどのように維持するのをヘルプいるかを示しています。

EditorConfigとは何ですか?ReSharperはどのようにそれを拡張しますか?

EditorConfigは、同じコードで作業しているチームメンバー間や、異なるエディターと使用しているIDE間で一貫したコードスタイルを定義して維持するために使用される構成ファイルの規則です。スタイルは、セクション名がファイルマスクで、セクション内のプロパティがそのマスクに一致するファイルのコードスタイルを定義する .editorconfigという名前のINI形式のファイルに保存されます。

EditorConfigの規則が示すように、ReSharperは現在のファイルのディレクトリとそのすべての親ディレクトリの .editorconfig という名前のファイルで定義されているコードスタイルを、ルートファイルパスに達するか root=trueでEditorConfigファイルが見つかるまで適用します。 .editorconfig ファイルで指定されているファイルマスク、たとえば *Test.cs も考慮されます。

ReSharperは最もよく使われる.NET-coding-convention EditorConfigプロパティである標準のEditorConfigプロパティを理解し、さらに詳細なカスタムEditorConfigプロパティを提供します。フォーマット、構文、およびコードインスペクションルールの構成 - 実際、ReSharperオプションダイアログで構成できる各コードスタイル設定には、独自のEditorConfigプロパティがあります。つまり、EditorConfigファイルでコードスタイルの全体構成とインスペクションルールを維持できます。以下はReSharperによってサポートされるEditorConfigプロパティの例です:

root = true [*] # Most of the standard properties are supported indent_size=2 max_line_length=100 # Most frequently used .NET-coding-convention properties are supported csharp_space_between_parentheses=expressions, type_casts, control_flow_statements csharp_style_var_for_built_in_types=true # ReSharper custom properties for code formatting styles resharper_csharp_brace_style=next_line resharper_csharp_blank_lines_around_invocable=2 # ReSharper custom properties for code syntax styles csharp_default_private_modifier=explicit braces_for_ifelse=not_required# # ReSharper custom properties for code inspections resharper_possible_null_reference_exception_highlighting=error resharper_replace_with_string_is_null_or_empty_highlighting=do not show

ソリューションのEditorConfig

デフォルトでは、EditorConfigプロパティは有効になっています。それらは、ReSharperおよびVisual Studioオプションで定義された設定をオーバーライドします。ReSharperでコードの書式設定とコード構文のEditorConfigスタイルを無視する場合は、ReSharperオプションのコード編集 | 一般的なフォーマッタスタイルページの対応するチェックボックスをオフにします。

EditorConfigからコードインスペクションと命名スタイルを構成するには、ReSharperオプションのコード・インスペクション | 設定ページでeditorconfigとプロジェクト設定から設定を読み込むチェックボックスを選択する必要があります。

EditorConfigサポートが有効で、現在のファイルに影響する .editorconfig ファイルがある場合、ReSharperはどのEditorConfigスタイルが適用されているか、これらの設定がどこから来るのかを理解できます:

  • ReSharperのコードスタイルと書式設定オプションページでは、現在のファイルのEditorConfigスタイルによってページの少なくとも1つの設定がオーバーライドされている場合は黄色の警告が表示され、上書きされた各設定も黄色で強調表示されます。例:

    Code formatting options overridden by EditorConfig styles

  • ファイルフォーマット情報ウィンドウでは、現在のファイルに影響を与えるすべての .editorconfig ファイルを確認して調べることができます。

    ReSharper. File Formatting Info window

EditorStyleへのコードスタイル設定のエクスポート

EditorConfigを介してコードスタイル設定を共有する場合、ReSharperで既に構成されているスタイルを .editorconfig ファイルにエクスポートすることができます。

  1. メインメニューからReSharper | オプションを選択するか、Alt+R,Oを押してから、左側のコード編集 | 一般的なフォーマッタスタイルを選択します。

  2. コードスタイルの設定ファイルセクションで、現在のスタイルを.editorconfigに書き込むをクリックします。これで.editorconfigへのエクスポートダイアログが開きます。

  3. デフォルトでは、ReSharperは現在のソリューションのルートディレクトリにある新しい .editorconfig ファイルに設定を書き込みます。1つ以上の .editorconfig ファイルが存在する場合、ReSharperは設定を保存するためにディレクトリ階層で最も近いファイルを使用します。必要に応じて、ダイアログの上部にあるパスセレクターを使用して宛先ファイルを変更できます。

  4. セクション (ファイル・マスク)フィールドでは、生成されたプロパティを持つセクションに使用するワイルドカードパターンを指定できます。標準のEditorConfigプロパティをエクスポートすることを選択した場合、それらは言語の規則に従って他のセクションに配置されることに注意してください。

  5. より詳細な設定については、追加オプションを表示を展開して以下のオプションを選択することができます。

    • デフォルト値を持つ設定をエクスポートする
      デフォルトでは、ReSharperは変更した設定のプロパティのみを保存します。結果の .editorconfig がReSharperまたはRiderによって読み取られると、これらの設定のみが適用され、他の設定を上書きします。他のすべての設定はIDEで指定された値を取ります。
      このオプションを有効にすると、ReSharperは変更されているかどうかにかかわらず、すべての設定を現在の状態で保存します。こうすればReSharperかRiderによって読まれるときすべてのコード様式そしてフォーマット設定を無効にするより厳密な .editorconfig を得るでしょう。

    • あいまいな値を持つ既存のプロパティを削除する
      EditorConfigプロパティの中には、複数のReSharper固有のプロパティに対応するものもあります。これにより、より正確な設定が可能になります。そのため、より一般的なプロパティが、関連するReSharper固有のプロパティと一致し、他のプロパティと矛盾する場合があります。これは、このより一般的なプロパティをあいまいにします。
      より詳細なプロパティが優先されるため、このような状況は問題にならず、あいまいな値を持つプロパティを削除する必要はありません。
      あいまいな値を持つプロパティを削除したい場合がある唯一のケースは、プロジェクトEditorConfigスタイルがReSharperおよびRiderによってのみ読み取られ、.editorconfig ファイルから冗長性を削除したい場合です。

    • 標準の.editorconfigプロパティをエクスポートする - 標準の.editorconfigプロパティ(英語)を保存するかどうかこれらのプロパティは、生成されたEditorConfigが他のエディターやIDEによって読み込まれる場合にも適用されます。

    • クロスエディターの言語固有のプロパティをエクスポートする - .NETコーディング規約のプロパティを保存するかどうか。これらのプロパティは、生成されたEditorConfigが他のエディターやIDEによって読み込まれる場合にも適用されます。

    • JetBrains Rider / ReSharper特有のコードスタイルプロパティをエクスポートする - 製品固有のコードフォーマットスタイルコード構文スタイルを保存するかどうか。

    • JetBrains Rider / ReSharper特有のインスペクション重大度をエクスポートする - ReSharperの構成可能コードインスペクションの重大度を保存するかどうか。

    • BasedOnStyle —対応するオプションを設定して、デフォルトですべてのオプションに使用されるスタイル(英語)を定義します。

    • 選択した基本スタイルと一致するオプションを非表示にする
      BasedOnStyleで選択されている基本スタイルで定義されている値と同じ値を持つオプションはエクスポートされません。

    • CPP設定のエクスポート — C++コードに影響するClang形式オプションをエクスポートするかどうか。

    • CPP設定のエクスポート — JavaScriptコードに影響するClang形式のオプションをエクスポートするかどうか。

  6. 指定した場所に既存の .editorconfig ファイルがある場合、そこに存在するプロパティの値とReSharperが保存しようとしているプロパティの値との間に競合が発生する可能性があります。このようなプロパティは赤で表示され、保存を続行すると、新しく生成されたプロパティが優先されて競合が解決されます。

  7. エクスポートをクリックしてください。ReSharperは指定された場所に .editorconfig ファイルを作成または更新します。

フォーマットルールのコンテキスト設定後に、フォーマットスタイルをEditorConfigに保存することもできます。

.editorconfigをインタラクティブに編集する

EditorConfig形式は、テキストエディターで構成ファイルを読み取って編集できるように設計されていますが、利用可能なEditorConfigプロパティをすべて記憶し、適切なものを見つけることが問題になる可能性があります。

.editorconfigを手動で編集するときに起こりうるエラーを回避するために、代わりに対話形式で編集できます。

  1. メインメニューからReSharper | オプションを選択するか、Alt+R,Oを押してから、左側のコード編集 | 一般的なフォーマッタスタイルを選択します。

  2. コードスタイルの設定ファイルセクションで、.editorconfigをインタラクティブに編集するをクリックします。

  3. オプションダイアログが開き、コードスタイル設定に影響するページのみが表示されます。

    ReSharper: Edit .editorconfig interactively
  4. エディター内の現在のアクティブファイルに影響を与える既存の .editorconfig ファイルがある場合、ReSharperはこれらのファイルの設定を使用してダイアログの値を初期化します。それ以外の場合、デフォルト値が使用されます。

    コードに影響する .editorconfig ファイルは、ソリューションディレクトリの外部、親ディレクトリにある可能性があることに注意してください。

  5. EditorConfig設定を表示および構成するには、ダイアログのコントロールを使用します。終了したら、保存をクリックします。これにより、.editorconfigへのエクスポートダイアログが開きます。

  6. デフォルトでは、ReSharperは現在のソリューションのルートディレクトリにある新しい .editorconfig ファイルに設定を書き込みます。1つ以上の .editorconfig ファイルが存在する場合、ReSharperは設定を保存するためにディレクトリ階層で最も近いファイルを使用します。必要に応じて、ダイアログの上部にあるパスセレクターを使用して宛先ファイルを変更できます。

  7. セクション (ファイル・マスク)フィールドでは、生成されたプロパティを持つセクションに使用するワイルドカードパターンを指定できます。標準のEditorConfigプロパティをエクスポートすることを選択した場合、それらは言語の規則に従って他のセクションに配置されることに注意してください。

  8. より詳細な設定については、追加オプションを表示を展開して以下のオプションを選択することができます。

    • デフォルト値を持つ設定をエクスポートする
      デフォルトでは、ReSharperは変更した設定のプロパティのみを保存します。結果の .editorconfig がReSharperまたはRiderによって読み取られると、これらの設定のみが適用され、他の設定を上書きします。他のすべての設定はIDEで指定された値を取ります。
      このオプションを有効にすると、ReSharperは変更されているかどうかにかかわらず、すべての設定を現在の状態で保存します。こうすればReSharperかRiderによって読まれるときすべてのコード様式そしてフォーマット設定を無効にするより厳密な .editorconfig を得るでしょう。

    • あいまいな値を持つ既存のプロパティを削除する
      EditorConfigプロパティの中には、複数のReSharper固有のプロパティに対応するものもあります。これにより、より正確な設定が可能になります。そのため、より一般的なプロパティが、関連するReSharper固有のプロパティと一致し、他のプロパティと矛盾する場合があります。これは、このより一般的なプロパティをあいまいにします。
      より詳細なプロパティが優先されるため、このような状況は問題にならず、あいまいな値を持つプロパティを削除する必要はありません。
      あいまいな値を持つプロパティを削除したい場合がある唯一のケースは、プロジェクトEditorConfigスタイルがReSharperおよびRiderによってのみ読み取られ、.editorconfig ファイルから冗長性を削除したい場合です。

    • 標準の.editorconfigプロパティをエクスポートする - 標準の.editorconfigプロパティ(英語)を保存するかどうかこれらのプロパティは、生成されたEditorConfigが他のエディターやIDEによって読み込まれる場合にも適用されます。

    • クロスエディターの言語固有のプロパティをエクスポートする - .NETコーディング規約のプロパティを保存するかどうか。これらのプロパティは、生成されたEditorConfigが他のエディターやIDEによって読み込まれる場合にも適用されます。

    • JetBrains Rider / ReSharper特有のコードスタイルプロパティをエクスポートする - 製品固有のコードフォーマットスタイルコード構文スタイルを保存するかどうか。

    • JetBrains Rider / ReSharper特有のインスペクション重大度をエクスポートする - ReSharperの構成可能コードインスペクションの重大度を保存するかどうか。

    • BasedOnStyle —対応するオプションを設定して、デフォルトですべてのオプションに使用されるスタイル(英語)を定義します。

    • 選択した基本スタイルと一致するオプションを非表示にする
      BasedOnStyleで選択されている基本スタイルで定義されている値と同じ値を持つオプションはエクスポートされません。

    • CPP設定のエクスポート — C++コードに影響するClang形式オプションをエクスポートするかどうか。

    • CPP設定のエクスポート — JavaScriptコードに影響するClang形式のオプションをエクスポートするかどうか。

  9. 指定した場所に既存の .editorconfig ファイルがある場合、そこに存在するプロパティの値とReSharperが保存しようとしているプロパティの値との間に競合が発生する可能性があります。このようなプロパティは赤で表示され、保存を続行すると、新しく生成されたプロパティが優先されて競合が解決されます。

  10. エクスポートをクリックしてください。ReSharperは指定された場所に .editorconfig ファイルを作成または更新します。

EditorConfigでReSharperフォーマッターを無効にする

C#、C++、JavaScript、TypeScript、HTML、Protobufでは、disable_formatter=trueを持つEditorConfigマスクを使用してReSharperフォーマッタを無効にすることができます。

標準EditorConfigプロパティのサポートノート

ReSharperは次の標準のEditorConfigプロパティを適用します:

  • indent_size
  • indent_style
  • tab_width
  • max_line_length
  • insert_final_newline

ReSharperのカスタムEditorConfigプロパティの中には、特定の言語の標準プロパティを上書きするプロパティがあります。例: indent_size プロパティをcsharp_indent_sizeおよびjs_indent_sizeプロパティでオーバーライドすることで、C#とJavaScriptで意図サイズを変えることができます。

.NET-coding-conventionプロパティサポートメモ

2020.1の時点で、ReSharperは.NETコーディング規則(英語)のために最も頻繁に使われるEditorConfigプロパティをサポートします:

  • csharp_indent_braces
  • csharp_indent_switch_labels
  • csharp_new_line_before_catch
  • csharp_new_line_before_else
  • csharp_new_line_before_finally
  • csharp_new_line_before_members_in_object_initializers
  • csharp_new_line_before_open_brace
  • csharp_new_line_between_query_expression_clauses
  • csharp_preferred_modifier_order
  • csharp_preserve_single_line_blocks
  • csharp_space_after_cast
  • csharp_space_after_colon_in_inheritance_clause
  • csharp_space_after_comma
  • csharp_space_after_dot
  • csharp_space_after_keywords_in_control_flow_statements
  • csharp_space_after_semicolon_in_for_statement
  • csharp_space_around_binary_operators
  • csharp_space_before_colon_in_inheritance_clause
  • csharp_space_before_comma
  • csharp_space_before_dot
  • csharp_space_before_open_square_brackets
  • csharp_space_before_semicolon_in_for_statement
  • csharp_space_between_empty_square_brackets
  • csharp_space_between_method_call_empty_parameter_list_parentheses
  • csharp_space_between_method_call_name_and_opening_parenthesis
  • csharp_space_between_method_call_parameter_list_parentheses
  • csharp_space_between_method_declaration_empty_parameter_list_parentheses
  • csharp_space_between_method_declaration_name_and_open_parenthesis
  • csharp_space_between_method_declaration_parameter_list_parentheses
  • csharp_space_between_parentheses
  • csharp_space_between_square_brackets
  • csharp_style_var_elsewhere
  • csharp_style_var_for_built_in_types
  • csharp_style_var_when_type_is_apparent
  • csharp_using_directive_placement
  • dotnet_style_parentheses_in_arithmetic_binary_operators
  • dotnet_style_parentheses_in_other_binary_operators
  • dotnet_style_parentheses_in_relational_binary_operators
  • dotnet_style_predefined_type_for_locals_parameters_members
  • dotnet_style_predefined_type_for_member_access
  • dotnet_style_qualification_for_event
  • dotnet_style_qualification_for_field
  • dotnet_style_qualification_for_method
  • dotnet_style_qualification_for_property
  • dotnet_style_require_accessibility_modifiers
  • dotnet_diagnostic.* —すべてのコンパイラ警告でサポートされています。

  • dotnet_naming_rule.* , dotnet_naming_style.* , dotnet_naming_symbols.* —指定された種類のシンボル(英語)が、ReSharper命名設定で使用可能なシンボルの種類と一致する場合に機能します。

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

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の対応するトピックを参照してください。

最終更新日: 2020年7月2日

関連ページ:

ファイルフォーマット情報ウィンドウ

このウィンドウでは、現在開いているファイルの書式スタイル設定について説明します。字下げの原因とその価値、インデント設定の自動検出のステータス。現在のファイルに影響するEditorConfigサポートとすべての.editorconfigファイルのステータス。現在のファイルに影響するStyleCopサポ...

コードのフォーマットと再フォーマット

コードスタイルの重要な点は、コードの書式設定方法、つまり、空白と空白行を使用してコードブロックを配置および分離する方法、インデントにタブを使用するかどうか、および使用する方法。多数のReSharperコードフォーマットルールには、デフォルトのVisual Studioフォーマットオプションと多数のベ...

構文スタイル

コードスタイルの側面の1つは、互換性のある言語構文構造を使用する方法です。例:以下の2つのメソッド定義は、コンパイラの観点からは同じですが、構文構造の選択により、それらは異なって見えます。 [Conditional("DEBUG")] [Test] static public void Foo(St...

ネーミングスタイル

バージョン2018.3から、ReSharperは既存のコードからC#シンボルの命名規則を自動的に学習を実行できます。命名規則を手動で構成する場合は、ReSharperオプション(Alt+R,O)のページの自動検出ルールを使用するチェックボックスをオフにします。ReSharperは、コード内のシンボル...

コード・インスペクション

ReSharperはサポートされているすべての言語で2500以上のインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルで設計時にコードの課題を検出して強調表示するため、および/または特定の範囲内ですべてのコードの課題を見つけるために使用されます。インスペクション Re...

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

コードスタイルの重要な点は、コードの書式設定方法、つまり、空白と空白行を使用してコードブロックを配置および分離する方法、インデントにタブを使用するかどうか、および使用する方法。多数のReSharperコードフォーマットルールには、デフォルトのVisual Studioフォーマットオプションと多数のベ...