EditorConfig の .NET コーディング規則の設定

.NET コーディング規則は EditorConfig ファイルを使用して構成します。 EditorConfig ファイルでは、個々の .NET コーディング規則を有効化/無効化し、(重要度レベルで) 規則を適用する程度を構成することができます。 EditorConfig を使用して、コードベースに整合性を適用する方法の詳細については、こちらの記事を参照してください。

サポートされている .NET コーディング規則には次の 3 つのカテゴリがあります。

  • 言語規則: C# または Visual Basic 言語に関する規則です。たとえば、var/明示型、式形式メンバーを使用するなどです。
  • 書式規則: コードを読みやすくするためのレイアウトや構造に関する規則です。たとえば、制御ブロックの Allman スタイルの中かっこ、スペースなどです。
  • 名前付け規則: オブジェクトに名前を付ける方法に関する規則です。たとえば、async メソッドは "Async" で終わる必要があるなどです。

言語規則

概要

規則形式: options_name = false|true : none|suggestion|warning|error

コード スタイル オプションには、true (このオプションを使用する) または false (このオプションを使用しない)、コロン (:)、重要度 (nonesilentsuggestionwarning、または error) を指定する必要があります。 重要度は、コード ベースでそのスタイルに適用する強制レベルを意味します。

none および silent は同義であり、ユーザーには何も表示されないことを意味します。 この規則を無効化する効果があります。

重要度 効果
none/silent このスタイルに準拠していないとき、ユーザーには何も表示されませんが、コード生成機能はこのスタイルで生成します。
修正候補 このスタイルに準拠していないとき、修正候補としてユーザーに表示されます (最初の 2 文字の下に点線が付きます)。
警告 このスタイルに準拠していないとき、コンパイラの警告が表示されます。
エラー このスタイルに準拠していないとき、コンパイラ エラーが表示されます。

.NET 言語規則のオプション

"This." と "Me."修飾

フィールド (IDE0003/IDE0009)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_qualification_for_field C# および Visual Basic false:なし Visual Studio 2017 RTW
説明 適用済み
True 非静的メソッドで使用されるすべての非静的フィールドに C# の場合に this. を、Visual Basic の場合に Me. を接頭辞として付けます。 C#:
this.capacity = 0;

Visual Basic:
Me.capacity = 0
False 非静的メソッドで使用されるすべての非静的フィールドに C# の場合に this. を、Visual Basic の場合に Me. を接頭辞として付けません。 C#:
capacity = 0;

Visual Basic:
capacity = 0

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_qualification_for_field = false:suggestion

プロパティ (IDE0003/IDE0009)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_qualification_for_property C# および Visual Basic false:なし Visual Studio 2017 RTW
説明 適用済み
True 非静的メソッドで使用されるすべての非静的プロパティに C# の場合に this. を、Visual Basic の場合に Me. を接頭辞として付けます。 C#:
this.ID = 0;

Visual Basic:
Me.ID = 0
False 非静的メソッドで使用されるすべての非静的プロパティに C# の場合に this. を、Visual Basic の場合に Me. を接頭辞として付けません C#:
ID = 0;

Visual Basic:
ID = 0

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_qualification_for_property = false:suggestion

メソッド (IDE0003/IDE0009)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_qualification_for_method C# および Visual Basic false:なし Visual Studio 2017 RTW
説明 適用済み
True 非静的メソッド内から呼び出されるすべての非静的フィールドに C# の場合に this. を、VB の場合に Me. を接頭辞として付けます。 C#:
this.Display();

Visual Basic:
Me.Display()
False 非静的メソッド内から呼び出されるすべての非静的フィールドに C# の場合に this. を、VB の場合に Me. を接頭辞として付けません C#:
Display();

Visual Basic:
Display()

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_qualification_for_method = false:suggestion

イベント (IDE0003/IDE0009)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_qualification_for_event C# および Visual Basic false:なし Visual Studio 2017 RTW
説明 適用済み
True 非静的メソッド内から参照されるすべての非静的イベントに C# の場合に this. を、VB の場合に Me. を接頭辞として付けます。 C#:
this.Elapsed += Handler;

Visual Basic:
AddHandler Me.Elapsed, AddressOf Handler
False 非静的メソッド内から参照されるすべての非静的イベントに C# の場合に this. を、VB の場合に Me. を接頭辞として付けません C#:
Elapsed += Handler;

Visual Basic:
AddHandler Elapsed, AddressOf Handler

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_qualification_for_event = false:suggestion

型参照のための言語キーワードの型名 (int や string など) とフレームワークの型名

ローカル、パラメーター、メンバー (IDE0012/IDE0014)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_predefined_type_for_locals_parameters_members C# および Visual Basic true:なし Visual Studio 2017 RTW
説明 適用済み
True ローカル、パラメーター、型メンバーの場合、型を表す言語キーワードを持つ型を使用し (intdoublefloatshortlongdecimalstring)、型名 (Int32Int64 など) の代わりにキーワードを使用します。 C#:
private int _member;

Visual Basic: Private _member As Integer
False ローカル、パラメーター、型メンバーの場合、型を表す言語キーワードを持つ型を使用し (intdoublefloatshortlongdecimalstring)、キーワードの代わりに型名 (Int32Int64 など) を使用します。 C#:
private Int32 _member;

Visual Basic:
Private _member As Int32

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion

メンバー アクセス式 (IDE0013/IDE0015)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_predefined_type_for_member_access C# および Visual Basic true:なし Visual Studio 2017 RTW
説明 適用済み
True キーワード表現 (intdoublefloatshortlongdecimalstring) のある型でメンバー アクセス式が使用されるとき、キーワードを使用します。 C#:
var local = int.MaxValue;

Visual Basic:
Dim local = Integer.MaxValue
False キーワード表現 (intdoublefloatshortlongdecimalstring) のある型でメンバー アクセス式が使用されるとき、型名を使用します。 C#:
var local = Int32.MaxValue;

Visual Basic:
Dim local = Int32.MaxValue

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_predefined_type_for_member_access = true:suggestion

式レベル基本設定

オブジェクト初期化子 (IDE0017)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_object_initializer C# および Visual Basic true:提案 Visual Studio 2017 RTW
説明 適用済み
True 可能であれば、オブジェクト初期化子を使用し、オブジェクトを初期化します。 C#:
var c = new Customer(){ Age = 21 };

Visual Basic:
Dim c = New Customer() With { .Age = 21 }
False オブジェクト初期化子でオブジェクトを初期化しません C#:
var c = new Customer();
c.Age = 21;

Visual Basic:
Dim c = new Customer()
c.Age = 21

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_object_initializer = true:suggestion

コレクション初期化子 (IDE0028)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_collection_initializer C# および Visual Basic true:提案 Visual Studio 2017 RTW
説明 適用済み
True 可能であれば、コレクション初期化子を使用してコレクションを初期化します。 C#:
var list = new List<int>{ 1, 2, 3 };

Visual Basic:
Dim list = new List(Of Integer) From { 1, 2, 3}
False オブジェクト初期化子でコレクションを初期化しません C#:
var list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

Visual Basic:
Dim list = new List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_collection_initializer = true:suggestion

明示的なタプル名 (IDE0033)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_explicit_tuple_names C# 7.0+ および Visual Basic 15+ true:提案 Visual Studio 2017 RTW
説明 適用済み
True ItemX プロパティではなくタプル名を使用します。 C#:
(string name, int age) customer = GetCustomer();
var name = customer.name;

Visual Basic:
Dim customer As (name As String, age As Integer) = GetCustomer()
Dim name = customer.name
False タプル名ではなく ItemX プロパティを使用します。 C#:
(string name, int age) customer = GetCustomer();
var name = customer.Item1;

Visual Basic:
Dim customer As (name As String, age As Integer) = GetCustomer()
Dim name = customer.Item1

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_explicit_tuple_names = true:suggestion

"null" 検査の結合式 (IDE0029)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_coalesce_expression C# および Visual Basic true:提案 Visual Studio 2017 RTW
説明 適用済み
True 三項演算子検査ではなく null 結合式を使用します。 C#:
var v = x ?? y;

Visual Basic:
Dim v = If(x, y)
False null 結合式ではなく三項演算子検査を使用します。 C#:
var v = x != null ? x : y; // or
var v = x == null ? y : x;

Visual Basic:
Dim v = If(x Is Nothing, y, x) ' or
Dim v = If(x IsNot Nothing, x, y)

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_coalesce_expression = true:suggestion

"null" 検査の null 値反映 (IDE0031)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_style_null_propagation C# 6.0+ および Visual Basic 14+ true:提案 Visual Studio 2017 RTW
説明 適用済み
True 可能であれば、null 条件演算子を使用します。 C#:
var v = o?.ToString();

Visual Basic:
Dim v = o?.ToString()
False 可能であれば、三項 null 検査を使用します。 C#:
var v = o == null ? null : o.ToString(); // or
var v = o != null ? o.String() : null;

Visual Basic:
Dim v = If(o Is Nothing, Nothing, o.ToString()) ' or
Dim v = If(o IsNot Nothing, o.ToString(), Nothing)

EditorConfig ファイルの例:

# CSharp and Visual Basic code style settings:
[*.{cs,vb}]
dotnet_style_null_propagation = true:suggestion

CSharp コード スタイルの設定

"var" と明示型

組み込み型の "var" (IDE0007、IDE0008)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_var_for_built_in_types C# true:なし Visual Studio 2017 RTW
説明 適用済み
True int などの組み込みシステム型に var を使用します。 C#:
var x = 5;
False int などの組み込みシステム型に var を使用しません。 C#:
int x = 5;

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_var_for_built_in_types = true:suggestion

型が明らかな場合の "var" (IDE0007、IDE0008)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_var_when_type_is_apparent C# true:なし Visual Studio 2017 RTW
説明 適用済み
True 宣言式の右側で型が既に述べられているときに var を使用します。 C#:
var obj = new C();
False 宣言式の右側で型が既に述べられているときに var を使用しません。 C#:
C obj = new C();

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_var_when_type_is_apparent = true:suggestion

それ以外の場所の "var" (IDE0007、IDE0008)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_var_elsewhere C# true:なし Visual Studio 2017 RTW
説明 適用済み
True 別のコード スタイル ルールにより上書きされない限り、あらゆるケースで var を使用します。 C#:
var f = this.Init();
False 別のコード スタイル ルールにより上書きされない限りあらゆるケースで var を使用することは望みません。 C#:
bool f = this.Init();

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_var_elsewhere = true:suggestion

式形式のメンバー

メソッド (IDE0022)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_expression_bodied_methods C# 6.0+ false:なし Visual Studio 2017 RTW
説明 適用済み
True メソッドに式形式メンバーを使用します。 C#:
public int GetAge() => this.Age;
False メソッドに式形式メンバーを使用しません。 C#:
public int GetAge() { return this.Age; }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_methods = false:none

コンストラクター (IDE0021)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_expression_bodied_constructors C# 7.0+ false:なし Visual Studio 2017 RTW
説明 適用済み
True コンストラクターに式形式メンバーを使用します。 C#:
public Customer(int age) => Age = age;
False コンストラクターに式形式メンバーを使用しません。 C#:
public Customer(int age) { Age = age; }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_constructors = false:none

演算子 (IDE0023、IDE0024)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_expression_bodied_operators C# 7.0+ false:なし Visual Studio 2017 RTW
説明 適用済み
True 演算子に式形式メンバーを使用します。 C#:
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
=> new ComplexNumber(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary);
False 演算子に式形式メンバーを使用しません。 C#:
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
{ return new ComplexNumber(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary); }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_operators = false:none

プロパティ (IDE0025)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_expression_bodied_properties C# 7.0+ true:なし Visual Studio 2017 RTW
説明 適用済み
True プロパティに式形式メンバーを使用します。 C#:
public int Age => _age;
False プロパティに式形式メンバーを使用しません。 C#:
public int Age { get { return _age; }}

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_properties = true:none

インデクサー (IDE0026)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_expression_bodied_indexers C# 7.0+ true:なし Visual Studio 2017 RTW
説明 適用済み
True インデクサーに式形式メンバーを使用します。 C#:
public T this[int i] => _value[i];
False インデクサーに式形式メンバーを使用しません。 C#:
public T this[int i] { get { return _values[i]; } }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_indexers = false:none

アクセサー (IDE0027)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_expression_bodied_accessors C# 7.0+ true:なし Visual Studio 2017 RTW
説明 適用済み
True アクセサーに式形式メンバーを使用します。 C#:
public int Age { get => _age; set => _age = value; }
False アクセサーに式形式メンバーを使用しません。 C#:
public int Age { get { return _age; } set { _age = value; } }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_accessors = false:none

パターン マッチング

"cast" 検査の "is" (IDE0020)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_pattern_matching_over_is_with_cast_check C# 7.0+ true:提案 Visual Studio 2017 RTW
説明 適用済み
True is 式と型キャストの代わりにパターン マッチングを使用します。 C#:
if (o is int i) {...}
False パターン マッチングの代わりに is 式と型キャストを使用します。 C#:
if (o is int) {var i = (int)o; ... }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion

"null" 検査の "as" (IDE0019)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_pattern_matching_over_as_with_null_check C# 7.0+ true:提案 Visual Studio 2017 RTW
説明 適用済み
True as 式と null 検査の代わりにパターン マッチングを使用し、何かが特定の型であるか判断します。 C#:
if (o is string s) {...}
False パターン マッチングの代わりに as 式と null 検査を使用し、何かが特定の型であるか判断します。 C#:
var s = o as string; if (s != null) {...}

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion

インライン変数宣言 (IDE0018)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_inlined_variable_declaration C# 7.0+ true:提案 Visual Studio 2017 RTW
説明 適用済み
True 可能であれば、out 変数をインラインで宣言します。 C#:
if (int.TryParse(value, out int i) {...}
False out 変数を明示的に宣言します。 C#:
int i; if (int.TryParse(value, out i) {...}

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_inlined_variable_declaration = true:suggestion

式レベル基本設定

default 式の簡略化 (IDE0034)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_prefer_simple_default_expression C# 7.1+ true:提案 Visual Studio 2017 v. 15.3
説明 適用済み
True default(T) より default を優先 C#:
void DoWork(CancellationToken cancellationToken = default){ ... }
False 優先。 C#:
void DoWork(CancellationToken cancellationToken = default(CancellationToken)){ ... }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_prefer_simple_default_expression = true:suggestion

"Null" 検査設定

スロー式 (IDE0016)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_throw_expression C# 7.0+ true:提案 Visual Studio 2017 RTW
説明 適用済み
True throw ステートメントの代わりに throw 式を使用します。 C#:
this.s = ss ?? throw new ArgumentNullException(nameof(s));
False throw 式の代わりに throw ステートメントを使用します。 C#:
if (s==null) {throw new ArgumentNullException(nameof(s));} this.s = s;

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_throw_expression = true:suggestion

条件付き代理呼び出しを使用する (IDE0041)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_style_conditional_delegate_call C# 6.0+ true:提案 Visual Studio 2017 RTW
説明 適用済み
True null 検査を実行する代わりに lambda を呼び出すとき、条件付き結合演算 (?.) を使用します。 C#:
func?.Invoke(args);
False 条件付き結合演算 (?.) を使用する代わりに lambda を呼び出す前に null 検査を実行します。 C#:
if (func!=null) { func(args); }

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_style_conditional_delegate_call = false:suggestion

"コード ブロック基本設定

かっこを優先する (IDE0011)

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_prefer_braces C# true:なし Visual Studio 2017 v. 15.3
説明 適用済み
True かっこを優先する C#:
if (test) { this.Display(); }
False 可能な場合は、かっこを使用しない C#:
if (test) this.Display();

EditorConfig ファイルの例:

# CSharp code style settings:
[*.cs]
csharp_prefer_braces = true:none

書式規則

概要

規則形式: options_name = false|true

書式オプションには、true (このオプションを使用する) または false (このオプションを使用しない) を指定する必要があります。ただし、規則を適用する条件を代わりに指定する必要があるいくつかのケースを除きます。

.NET 書式のオプション

using の整理

最初にシステム ディレクティブを並べ替える

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
dotnet_sort_system_directives_first C# および Visual Basic true Visual Studio 2017 v. 15.3
説明 適用済み
True System.* using をアルファベット順に並べ替え、他の using の前に配置します。 C#:
using System.Collections.Generic;
using System.Threading.Tasks;
using Octokit;
False using の順序に関する要件はありません C#:
using System.Collections.Generic;
using Octokit;
using System.Threading.Tasks;

EditorConfig ファイルの例:

# .NET formatting settings:
[*.{cs,vb}]
dotnet_sort_system_directives_first = true

C# 書式設定

改行オプション

左中かっこ ({) の前の改行

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_new_line_before_open_brace C# すべて Visual Studio 2017 v. 15.3
説明
accessors、anonymous_methods、anonymous_types、control_blocks、events、indexers、lambdas、local_functions、methods、object_collection、properties、types (複数の場合は、"," で区切ります)。 中かっこは指定された式の新しい行に配置する必要があります (Allman スタイル)。
すべて 中かっこはすべての式の新しい行に配置する必要があります (Allman)。
none 中かっこはすべての式の同じ行に配置する必要があります (K&R)。

以下のように適用されます。

// csharp_new_line_before_open_brace = all
void MyMethod() 
{
    if (...) 
    {
        ...
    }
}
// csharp_new_line_before_open_brace = none
void MyMethod() {
    if (...) {
        ...
    }
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_new_line_before_open_brace = methods, properties, control_blocks, types

else の前の改行

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_new_line_before_else C# true Visual Studio 2017 v. 15.3
説明
True 新しい行に else ステートメントを配置します。
False 同じ行に else ステートメントを配置します。

以下のように適用されます。

// csharp_new_line_before_else = true
if (...) {
    ...
}
else {
    ...
}
// csharp_new_line_before_else = false
if (...) {
    ...
} else {
    ...
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_new_line_before_else = true

catch の前の改行

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_new_line_before_catch C# true Visual Studio 2017 v. 15.3
説明
True 新しい行に catch ステートメントを配置します。
False 同じ行に catch ステートメントを配置します。

以下のように適用されます。

// csharp_new_line_before_catch = true
try {
    ...
}
catch (Exception e) {
    ...
}
// csharp_new_line_before_catch = false
try {
    ...
} catch (Exception e) {
    ...
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_new_line_before_catch = true

finally の前の改行

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_new_line_before_finally C# true Visual Studio 2017 v. 15.3
説明
True finally ステートメントを右中かっこの後の新しい行に配置する必要があります。
False finally ステートメントを右中かっこと同じ行に配置する必要があります。

以下のように適用されます。

// csharp_new_line_before_finally = true
try {
    ...
}
catch (Exception e) {
    ...
}
finally {
    ...
}
// csharp_new_line_before_finally = false
try {
    ...
} catch (Exception e) {
    ...
} finally {
    ...
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_new_line_before_finally = true

オブジェクト初期化子のメンバーの前の改行

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_new_line_before_members_in_object_initializers C# true Visual Studio 2017 v. 15.3
説明
True オブジェクト初期化子のメンバーを別の行に配置する必要があります。
False オブジェクト初期化子のメンバーを同じ行に配置する必要があります。

以下のように適用されます。

// csharp_new_line_before_members_in_object_initializers = true
var z = new B()
{
    A = 3,
    B = 4
}
// csharp_new_line_before_members_in_object_initializers = false
var z = new B()
{
    A = 3, B = 4
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_new_line_before_members_in_object_initializers = true

匿名型のメンバーの前の改行

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_new_line_before_members_in_anonymous_types C# true Visual Studio 2017 v. 15.3
説明
True 匿名型のメンバーを別の行に配置する必要があります。
False 匿名型のメンバーを同じ行に配置する必要があります。

以下のように適用されます。

// csharp_new_line_before_members_in_anonymous_types = true
var z = new
{
    A = 3,
    B = 4
}
// csharp_new_line_before_members_in_anonymous_types = false
var z = new
{
    A = 3, B = 4
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_new_line_before_members_in_anonymous_types = true

クエリ式の句のメンバーの前の改行

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_new_line_within_query_expression_clauses C# true Visual Studio 2017 v. 15.3
説明
True クエリ式の句の要素を別の行に配置する必要があります。
False クエリ式の句の要素を同じ行に配置する必要があります。

以下のように適用されます。

// csharp_new_line_within_query_expression_clauses = true
var q = from a in e
        from b in e
        select a * b;
// csharp_new_line_within_query_expression_clauses = false
var q = from a in e from b in e
        select a * b;

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_new_line_within_query_expression_clauses = true

インデント オプション

switch ケース コンテンツにインデントを付ける

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_indent_case_contents C# true Visual Studio 2017 v. 15.3
説明
True switch ケース コンテンツにインデントを付けます
False switch ケース コンテンツにインデントを付けません

以下のように適用されます。

// csharp_indent_case_contents = true
switch(c) {
    case Color.Red:
        Console.WriteLine("The color is red");
        break;
    case Color.Blue:
        Console.WriteLine("The color is blue");
        break;
    default:
        Console.WriteLine("The color is unknown.");
        break;
}
// csharp_indent_case_contents = false
switch(c) {
    case Color.Red:
    Console.WriteLine("The color is red");
    break;
    case Color.Blue:
    Console.WriteLine("The color is blue");
    break;
    default:
    Console.WriteLine("The color is unknown.");
    break;
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_indent_case_contents = true

インデントswitchラベル

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_indent_switch_labels C# true Visual Studio 2017 v. 15.3
説明
True インデントswitchラベル
False インデントされませんswitchラベル

以下のように適用されます。

// csharp_indent_switch_labels = true
switch(c) {
    case Color.Red:
        Console.WriteLine("The color is red");
        break;
    case Color.Blue:
        Console.WriteLine("The color is blue");
        break;
    default:
        Console.WriteLine("The color is unknown.");
        break;
}
// csharp_indent_switch_labels = false
switch(c) {
case Color.Red:
    Console.WriteLine("The color is red");
    break;
case Color.Blue:
    Console.WriteLine("The color is blue");
    break;
default:
    Console.WriteLine("The color is unknown.");
    break;
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_indent_switch_labels = true

ラベルの位置付け

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_indent_labels C# one_less Visual Studio 2017 v. 15.3
説明
one_less ラベルは、現在のコンテキストのインデントを 1 つ減らした位置に配置されます
no_change ラベルは、現在のコンテキストと同じインデントで配置されます

以下のように適用されます。

// csharp_indent_labels = one_less
private string MyMethod(...) 
{
    if (...) {
        goto error;
    }
error:
    throw new Exception(...);
}
// csharp_indent_labels= no_change
private string MyMethod(...) 
{
    if (...) {
        goto error;
    }
    error:
    throw new Exception(...);
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_indent_labels = one_less

スペース オプション

キャストの後のスペース

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_space_after_cast C# false Visual Studio 2017 v. 15.3
説明 適用済み
True キャストと値の間にスペースが必要です C#:
int y = (int) x;
False キャストと値の間にスペースは必要ありません C#:
int y = (int)x;

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_space_after_cast = true

制御フロー ステートメント内のキーワードの後のスペース

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_space_after_keywords_in_control_flow_statements C# true Visual Studio 2017 v. 15.3
説明 適用済み
True キーワードの後にスペースが必要です C#:
for (int i;i<x;i++) { ... }
False キーワードの後にスペースは必要ありません C#:
for(int i;i<x;i++) { ... }

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_space_after_keywords_in_control_flow_statements = true

メソッド宣言引数リストのかっこの間のスペース

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_space_between_method_declaration_parameter_list_parentheses C# false Visual Studio 2017 v. 15.3
説明 適用済み
True キーワードの後にスペースが必要です C#:
void Bark( int x ) { ... }
False キーワードの後にスペースは必要ありません C#:
void Bark(int x) { ... }

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_space_between_method_declaration_parameter_list_parentheses = true

メソッド呼び出し引数リストのかっこ内のスペース

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_space_between_method_call_parameter_list_parentheses C# false Visual Studio 2017 v. 15.3
説明 適用済み
TRUE 制御フロー ステートメントのかっこの間にスペースを配置します。 C#:
MyMethod( argument );
false 式のかっこの間にスペースを配置します。 C#:
MyMethod(argument);

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_space_between_method_call_parameter_list_parentheses = control_flow_statements, type_casts

その他のオプションのかっこ内のスペース

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_space_between_parentheses C# false Visual Studio 2017 v. 15.3
説明 適用済み
control_flow_statements 制御フロー ステートメントのかっこの間にスペースを配置します。 C#:
for( int i;i<x;i++ ) { ... }
式のかっこの間にスペースを配置します。 C#:
var z = ( x * y ) - ( ( y - x ) * 3);
type_casts 型キャストのかっこの間にスペースを配置します。 C#:
int y = ( int )x;

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_space_between_parentheses = control_flow_statements, type_casts

折り返しオプション

1 行に複数のステートメントとメンバー宣言を表示する

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_preserve_single_line_statements C# true Visual Studio 2017 v. 15.3
説明
True 1 行に複数のステートメントとメンバー宣言を表示する
False 別の行にステートメントとメンバー宣言を表示します。

適用済み

//csharp_preserve_single_line_statements = true
int i = 0; string name = "John";
//csharp_preserve_single_line_statements = false
int i = 0; 
string name = "John";

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_preserve_single_line_statements = true

ブロックを単一行に配置する

オプション名 該当言語 Visual Studio の既定値 サポートされているバージョン
csharp_preserve_single_line_blocks C# true Visual Studio 2017 v. 15.3
説明
True ブロックを単一行に配置します。
False ブロックを別の行に配置します。

適用済み

//csharp_preserve_single_line_blocks = true
public int Foo { get; set; }
//csharp_preserve_single_line_blocks = false
public int MyProperty
{ 
    get; set;
}

EditorConfig ファイルの例:

# CSharp formatting settings:
[*.cs]
csharp_preserve_single_line_blocks = true

名前付け規則

概要

規則形式:
namingRuleTitle:
dotnet_naming_rule.<namingRuleTitle>.symbols = <symbolTitle>
dotnet_naming_rule.<namingRuleTitle>.style = <styleTitle>
dotnet_naming_rule.<namingRuleTitle>.severity = none|suggestion|warning|error

symbolTitle:
dotnet_naming_symbols.<symbolTitle>.applicable_kinds = class, struct, interface, enum, property, method, field, event, namespace, delegate, type_parameter
dotnet_naming_symbols.<symbolTitle>.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.<symbolTitle>.required_modifiers = abstract, async, const, readonly, static

styleTitle:
dotnet_naming_style.<styleTitle>.capitalization = pascal_case|camel_case|first_word_upper|all_upper|all_lower
dotnet_naming_style.<styleTitle>.required_prefix = string
dotnet_naming_style.<styleTitle>.required_suffix = string
dotnet_naming_style.<styleTitle>.word_separator = string

名前付け規則の作成

名前付け規則には、シンボルスタイル、および重要度を指定する必要があります。 名前付け規則は、固有度の高いものから低いものの順に並べる必要があります。 適用可能な最初に検出された規則のみが適用されます。

重要度

名前付けスタイル規則の重要度の有効なオプションは、nonesilentsuggestionwarningerror です。

none および silent は同義であり、ユーザーには何も表示されないことを意味します。 この規則を無効化する効果があります。

suggestion は、IDE のエラー一覧でユーザーに以下が表示されることを意味します。 重要度が suggestion の場合、名前付け規則は実行されますが、ビルドは中断されません。

重要度 効果
none/silent このスタイルに準拠していないとき、ユーザーには何も表示されませんが、コード生成機能はこのスタイルで生成します。
修正候補 このスタイルに準拠していないとき、修正候補としてユーザーに表示されます (最初の 2 文字の下に点線が付きます)。
警告 このスタイルに準拠していないとき、コンパイラの警告が表示されます。
エラー このスタイルに準拠していないとき、コンパイラ エラーが表示されます。

シンボル指定

名前付け規則を適用する必要がある場合に、_どの_シンボルで_どの_修飾子と_どの_アクセシビリティ レベルを使用するかを指定します。

オプション名 dotnet_naming_rule.<namingRuleTitle>.symbols
dotnet_naming_symbols.<symbolTitle>.applicable_kinds
dotnet_naming_symbols.<symbolTitle>.applicable_accessibilities
dotnet_naming_symbols.<symbolTitle>.required_modifiers
シンボル ユーザー補助 修飾子
* * abstract
class public must_inherit
struct internal (C#) / const
interface friend (Visual Basic) readonly
enum private static
property protected shared
method protected_internal (C#)
field protected_friend (Visual Basic)
event
delegate

スタイル指定

シンボルに適用する名前付けスタイルを指定します。

オプション名 dotnet_naming_rule.<namingRuleTitle>.style = <styleTitle>
dotnet_naming_style.<styleTitle>.capitalization
dotnet_naming_style.<styleTitle>.required_prefix
dotnet_naming_style.<styleTitle>.required_suffix
dotnet_naming_style.<styleTitle>.word_separator
スタイル 説明
プレフィックス 識別子の前に配置する必要がある文字。
サフィックス 識別子の後に配置する必要がある文字。
単語の区切り記号 識別子の単語の間に必要な区切り記号。
[大文字/小文字の設定] pascal_case, camel_case, first_word_upper, all_upper, all_lower

名前付け規則の例

# Dotnet Naming Conventions
[*.{cs,vb}] 
dotnet_naming_rule.async_methods_end_in_async.symbols  = any_async_methods
dotnet_naming_rule.async_methods_end_in_async.style    = end_in_async
dotnet_naming_rule.async_methods_end_in_async.severity = suggestion

dotnet_naming_symbols.any_async_methods.applicable_kinds           = method
dotnet_naming_symbols.any_async_methods.applicable_accessibilities = *
dotnet_naming_symbols.any_async_methods.required_modifiers         = async

dotnet_naming_style.end_in_async.required_suffix = Async
dotnet_naming_style.end_in_async.capitalization  = pascal_case