EditorConfig で一貫性のあるコーディング スタイルを定義する

あるコードベースで作業するすべてのユーザーに一貫したコーディング スタイルを使用させるために、EditorConfig ファイルをソリューションまたはプロジェクトに追加できます。 EditConfig ファイルの設定は、EditorConfig.org で保守されるファイル形式の仕様に従います。多くのコード エディターとアプリケーションが、Visual Studio を含む EditorConfig ファイルをサポートしています。 この設定は、コードと共に移動する移植可能なコンポーネントであり、Visual Studio の外部であってもコーディング スタイルを適用できます。

Visual Studio では、EditorConfig ファイルの設定がテキスト エディターのグローバルな設定よりも優先されます ([ツール]>[オプション] ダイアログ ボックスの [テキスト エディター] を選択してアクセスします)。 つまり、そのプロジェクトに固有のテキスト エディター設定を使用するように各コードベースを調整できます。 EditorConfig ファイルを使用する際も、Visual Studio テキスト エディターでエディターの独自のユーザー設定を引き続き設定できます。 これらのテキスト エディターの設定は、EditorConfig ファイルのないコードベースで作業するとき、または EditorConfig ファイルが特定の設定をオーバーライドしないときに常に適用されます。 このような基本設定の一例が、コードのインデント スタイルにタブとスペースのどちらを使用するかです。

Visual Studio でプロジェクトに EditorConfig ファイルを追加すると、新しいコード行のみが EditorConfig の設定に基づいて書式設定されます。 次のコマンドのいずれかを実行しない限り、既存コードの書式設定は変更されません。

  • コードのクリーンアップ

    Visual Studio エディターで [コード クリーンアップ] を選択するか、Ctrl+KCtrl+E を押します。 このコマンドは、インデント スタイルなどの空白の設定と、かっこの基本設定などの選択したコード スタイルの設定に適用されます。

  • ドキュメントの書式設定。

    既定のプロファイルで、[編集]>[詳細設定]>[ドキュメントの書式設定] を選択するか、Ctrl+KCtrl+D を押します。 このコマンドは、インデント スタイルなどの空白の設定にのみ適用されます。

Note

このトピックは、Visual Studio for Windows に適用されます。 Visual Studio for Mac については、「Visual Studio for Mac でのカスタム EditorConfig ファイルの作成と編集」を参照してください。

コードの整合性

EditorConfig ファイルの設定により、使用するエディターや IDE に関係なく、コードベースで一貫したコーディング スタイルとコーディング規則を維持できます。 制御できるコーディング スタイルは、インデント スタイル、タブ幅、行末文字、エンコードです。 たとえば、C# コードベースに、インデントに 5 つの空白文字を使用し、ドキュメントに UTF-8 エンコードを使用し、行が CR/LF で終わる規則がある場合、その規則を使用するように EditorConfig ファイルを構成できます。

EditorConfig ファイルは、個人的なプロジェクトで使用するコーディング規則が、チームのプロジェクトで使用される規則と異なるときに便利です。 たとえば、自分のコードではインデントでタブ文字を追加していても、 チームではインデントによって、代わりに 4 つの空白文字を追加することになっている場合があります。 EditorConfig ファイルがこの問題を解決します。シナリオごとに構成を与えることができるからです。

コードベースの .editorconfig ファイルに EditorConfig の設定が含まれているため、設定はそのコードベースと共に移動します。 EditorConfig 対応のエディターでコード ファイルを開く限り、テキスト エディター設定がアクティブになります。

Note

EditorConfig ファイルで設定されている規則は、ビルド エラーまたは警告として CI/CD パイプラインに適用できません。 すべてのスタイルの逸脱は、Visual Studio エディターとエラー一覧でのみ表示されます。

サポートされる設定

Visual Studio のエディターは、EditorConfig プロパティの次のコア セットをサポートします。

  • indent_style
  • indent_size
  • tab_width
  • end_of_line
  • 文字セット
  • trim_trailing_whitespace
  • insert_final_newline
  • root

EditorConfig のエディター設定は、XML を除き、Visual Studio 対応のすべての言語でサポートされています。

EditorConfig は、C# および Visual Basic に対する言語書式名前付けの規則など、コード スタイルの規則をサポートしています。

EditorConfig ファイルの追加と削除

プロジェクトまたはコードベースに EditorConfig ファイルを追加すると、記述した新しいコード行は、EditorConfig ファイルの設定に従って Visual Studio によって書式設定されます。 ただし、ドキュメントを書式設定するか、[コードのクリーンアップ] を実行するまでは、Visual Studio によって既存のスタイルが新しいものに変換されることはありません。 たとえば、タブで書式設定されているインデントがファイル内にある場合、スペースでインデントを書式設定する EditorConfig ファイルを追加しても、インデント文字は自動的にスペースに変換されません。 ドキュメントの書式を設定すると ([編集]>[詳細設定]>[ドキュメントの書式設定] を選択するか、Ctrl+KCtrl+D を押す)、EditorConfig ファイルの空白の設定が既存のコード行に適用されます。

EditorConfig ファイルをプロジェクトまたはコードベースから削除する場合は、グローバル エディターの設定が新しいコード行に適用されるように、開いているコード ファイルをすべて閉じてから再び開く必要があります。

EditorConfig ファイルをプロジェクトに追加する

EditorConfig ファイルをプロジェクトまたはソリューションに追加するには、次の手順に従います。

  1. Visual Studio でプロジェクトまたはソリューションを開きます。 EditorConfig の設定をソリューションのすべてのプロジェクトに適用するか、1 つのプロジェクトだけに適用するかに応じて、ソリューション ノードまたはプロジェクト ノードのいずれかを選択します。 また、.editorconfig ファイルを追加するプロジェクトまたはソリューションで、フォルダーを選択できます。

  2. メニューから [プロジェクト]>[新しい項目の追加] を選択するか、Ctrl+Shift+A を押します。

    [新しい項目の追加] ダイアログ ボックスが開きます。

  3. 検索ボックスに「editorconfig」と入力します。

    2 つの editorconfig ファイル項目テンプレートが、検索結果に表示されます。

    Visual Studio の EditorConfig ファイル項目テンプレートのスクリーンショット。

  4. [editorconfig ファイル (空)] テンプレートを選択して、空白、コード スタイル、および名前付け規則の既定の EditorConfig オプションが事前に入力された EditorConfig ファイルを追加します。 または、[editorconfig ファイル (.NET)] テンプレートを選択して、既定の .NET の空白、コード スタイル、および名前付けの規則が事前に入力された EditorConfig ファイルを追加します。

    ソリューション エクスプローラーに新しい .editorconfig ファイルが表示され、エディターで新しいタブとして開かれます。

    ソリューション エクスプローラーとエディターの .editorconfig ファイルのスクリーンショット。

  5. 必要に応じて、ファイルを編集して保存します。

EditorConfig ファイルを追加するその他の方法

EditorConfig ファイルをプロジェクトに追加する方法は、他にもいくつかあります。

ファイルの階層と優先順位

ファイル階層内のフォルダーに .editorconfig ファイルを追加すると、その設定がその階層レベルとその下のレベルのすべての該当ファイルに適用されます。 また、特定のプロジェクトやコードベースの EditorConfig 設定をオーバーライドしたり、コードベースの一部の EditorConfig 設定をオーバーライドして、コードベースの他の部分とは異なる規則を使用するようにしたりできます。 そうすることは、別の場所からコードを組み込んで、その規則を変更したくないときに役立ちます。

以下のガイドラインに従います。

  • 一部またはすべての EditorConfig 設定をオーバーライドするには、オーバーライドされた設定を適用するファイルの階層レベルに .editorconfig ファイルを追加します。 新しい EditorConfig ファイルの設定は、同じレベルにあるファイルと任意のサブディレクトリ内のファイルに適用されます。

    EditorConfig 階層のスクリーンショット。

  • すべての設定ではなく一部をオーバーライドする場合には、.editorconfig ファイルで該当する設定だけを指定します。 下位レベルの .editorconfig ファイルで明示的に一覧表示したプロパティのみがオーバーライドされます。 上位レベルの .editorconfig ファイルからのその他の設定は、引き続き適用されます。

  • すべての上位レベルの .editorconfig ファイルからの設定がコードベースのこの部分に適用されないようにするには、次のように root=true プロパティを下位レベルの .editorconfig ファイルに追加します。

    # top-most EditorConfig file for this level
    root = true
    

EditorConfig ファイルは上から下に読み取られます。 同じ名前のプロパティが複数ある場合は、同じ名前の最も最近に見つかったプロパティが優先されます。

EditorConfig ファイルの編集

Visual Studio 2022 には、EditorConfig ファイル用のビジュアル エディターが用意されています。

EditorConfig ファイルを編集したら、コード ファイルを再読み込みして新しい設定を有効にする必要があります。

Visual Studio では、EditorConfig ファイルを編集しやすいように、IntelliSense の入力候補一覧が提供されます。 次に例を示します。

.EditorConfig ファイルの IntelliSense のスクリーンショット。

多数の EditorConfig ファイルを編集する場合は、EditorConfig 言語サービス拡張機能が役立つことがあります。 この拡張機能には、構文の強調表示、強化された IntelliSense、検証、およびコードの書式設定などの機能が含まれます。

IntelliSense と EditorConfig Language Service 拡張機能のスクリーンショット。

次の例に、EditorConfig ファイルをプロジェクトに追加する前と後の C# コード スニペットのインデントの状態を示します。

  1. [ツール]>[オプション] ダイアログ ボックスで、[テキスト エディター]>[C#]>[タブ] を設定して、Tab キーを押したときに Visual Studio テキスト エディターが 4 つの空白文字を生成するようにします。

    Text Editor タブ設定のスクリーンショット。

  2. 設定どおり、次の行で Tab キーを押すと、4 つの空白文字が追加されてインデントが行われます。

    コードにスペースを追加する Tab キーのスクリーンショット。

    コードにスペースを追加する Tab キーのスクリーンショット。

  3. EditorConfig を使用して、[タブを使用する] にタブ設定を切り替えます。

    EditorConfig ファイルで [タブを使用する] を選択します。

    Tab キーのタブの使用の構成を示すスクリーンショット。

    .editorconfig という名前の新しいファイルを、次の内容でプロジェクトに追加します。 [*.cs] インジケーターは、この変更がプロジェクトの C# コード ファイルにのみ適用されることを意味します。

    # Top-most EditorConfig file
    root = true
    
    # Tab indentation
    [*.cs]
    indent_style = tab
    
  4. Tab キーを押すと、スペースの代わりにタブ文字が入力されます。

    コードにタブ文字を追加する Tab キーのスクリーンショット。

    コードにタブ文字を追加する Tab キーのスクリーンショット。

EditorConfig 設定のトラブルシューティング

EditorConfig ファイルがディレクトリ構造内でプロジェクトの場所と同じか上位にある場合、Visual Studio はそのファイル内のエディター設定をエディターに適用します。 この場合、ステータス バーに次のメッセージが表示される場合があります。

User preferences for this file type are overridden by this project's coding conventions.

これは、[ツール]>[オプション]>[テキスト エディター] の任意のエディター設定 (インデントのサイズとスタイル、タブ サイズ、コーディング規則など) が、ディレクトリ構造内でプロジェクトと同じか上位にある EditorConfig ファイルで指定されると、EditorConfig ファイル内の規則で [テキスト エディター] の設定がオーバーライドされることを意味しています。

EditorConfig に関する問題のトラブルシューティングを行うには、次の手順に従います。

  1. Visual Studio 向けの EditorConfig のサポートをオフにするには、[ツール]>[オプション]>[テキスト エディター][プロジェクトのコーディング規則従う] オプションをオフにします。

    [プロジェクトのコーディング規約に従う] の設定を示すスクリーンショット。

  2. プロジェクトの親ディレクトリで任意の EditorConfig ファイルを見つけるには、コマンド プロンプトを開き、プロジェクトが格納されているディスクのルートから次のコマンドを実行します。

    dir .editorconfig /s
    
  3. EditorConfig の規則の範囲を制御するには、リポジトリのルート、またはプロジェクトが格納されているディレクトリにある .editorconfig ファイルで、root=true プロパティを設定します。

    Visual Studio は、開かれたファイルのディレクトリ内とすべての親ディレクトリで .editorconfig という名前のファイルを探します。 検索は、ルート ファイル パスに到達するか、または root=true を含む .editorconfig ファイルが見つかると、終了します。