ReSharper 2019.3ヘルプ

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

コードスタイル設定をEditorConfigにエクスポートする

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

コードスタイル設定をEditorConfigにエクスポートするには

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

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

  3. デフォルトでは、ReSharperは現在のソリューションのルートディレクトリにある .editorconfig ファイルに設定を書き込みます。必要に応じて、ダイアログ上部のパスセレクタを使用して保存先ファイルを変更できます。

  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の構成可能コードインスペクションの重大度を保存するかどうか。

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

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

フォーマットルールのコンテキスト設定後に、フォーマットスタイルを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プロパティサポートメモ

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

  • 書式設定規則(英語)の次のプロパティ:

    • csharp_new_line_before_open_brace
    • csharp_new_line_before_else
    • csharp_new_line_before_catch
    • csharp_new_line_before_finally
    • csharp_new_line_before_members_in_object_initializers
    • csharp_indent_switch_labels
    • csharp_space_after_cast
    • csharp_space_after_keywords_in_control_flow_statements
    • csharp_space_between_method_declaration_parameter_list_parentheses
    • csharp_space_between_method_call_parameter_list_parentheses
    • csharp_space_between_parentheses
    • csharp_preserve_single_line_blocks
  • 言語規則(英語)の次のプロパティ:

    • dotnet_style_qualification_for_field
    • dotnet_style_qualification_for_property
    • dotnet_style_qualification_for_method
    • dotnet_style_qualification_for_event
    • dotnet_style_predefined_type_for_locals_parameters_members
    • dotnet_style_predefined_type_for_member_access
    • dotnet_style_require_accessibility_modifiers
    • csharp_preferred_modifier_order
    • csharp_style_var_for_built_in_types
    • csharp_style_var_when_type_is_apparent
    • csharp_style_var_elsewhere
    • csharp_style_expression_bodied_constructors
    • csharp_style_expression_bodied_methods
    • csharp_style_expression_bodied_properties
    • csharp_style_expression_bodied_accessors
    • csharp_prefer_braces

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

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年1月14日

関連ページ:

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

このウィンドウでは、現在開いているファイルの書式スタイル設定について説明します。字下げの原因とその価値、インデント設定の自動検出のステータス。現在のファイルに影響する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フォーマットオプションと多数のベ...