EditorConfig での .NET の名前付け規則.NET naming conventions for EditorConfig

名前付け規則は、クラス、プロパティ、およびメソッドなどのコード要素の名前付けに関するものです。Naming conventions concern the naming of code elements such as classes, properties, and methods. たとえば、パブリック メンバーは大文字表記とする必要があること、またはプライベート フィールドは _ で始まる必要があることを指定できます。For example, you can specify that public members must be capitalized or that private fields must begin with _. これらの規則を適用するには、.editorconfig ファイルにそれらを含めます。You can enforce these rules by specifying them in an .editorconfig file. 名前付け規則違反は、規則に対して選択した重大度に応じて、エラー一覧内に表示されるか、または名前の下に修正候補として表示されます。Naming rule violations appear either in the Error List or as a suggestion under the name, depending on the severity you choose for your rule. 違反を確認するためにプロジェクトをビルドする必要はありません。There is no need to build the project in order to see violations.

それぞれの名前付け規則については、名前付け規則を適用するシンボル、名前付けのスタイル、および規則を適用する上での重大度を、以下に示すプロパティを使用して指定する必要があります。For each naming convention, you must specify the symbols it applies to, a naming style, and a severity for enforcing the convention, using the properties described below. プロパティの順序は重要ではありません。The order of the properties is not important.

まずは、名前付け規則を完全に記述するために必要なプロパティの各々で使用する名前付け規則のタイトルを選択します。To begin, choose a title for your naming rule that you will use in each of the properties that are needed to fully describe the rule. たとえば、public_members_must_be_capitalized は、名前付け規則の名前としてわかりやすく適切です。For example, public_members_must_be_capitalized is a good, descriptive name for a naming rule. 以下のセクションでは、選択したタイトルを <namingRuleTitle> として参照します。This page will refer to the title you choose as <namingRuleTitle> in the sections that follow.

シンボルSymbols

最初に、名前付けルールを適用するシンボルのグループを識別します。First, identify a group of symbols to apply the naming rule to. このプロパティの形式は次のとおりです。This property has the following format:

dotnet_naming_rule.<namingRuleTitle>.symbols = <symbolTitle>

<symbolTitle> の値を、public_symbols などのわかりやすいタイトルに置き換えて、シンボルのグループに名前を付けます。Give a name to the group of symbols by replacing the <symbolTitle> value with a descriptive title, for example public_symbols. 規則が適用されるシンボルを記述する 3 つのプロパティ名 (シンボルの種類、アクセシビリティ レベル、修飾子) の中で <symbolTitle> を使用します。You'll use the <symbolTitle> value in the three property names that describe which symbols the rule is applied to (kinds of symbol, accessibility levels, and modifiers).

シンボルの種類Kinds of symbols

名前付け規則を適用するシンボルの種類を記述するには、次の形式でプロパティを指定します。To describe the kind of symbols to apply the naming rule to, specify a property in the following format:

dotnet_naming_symbols.<symbolTitle>.applicable_kinds = <values>

許容される値を次のリストに示します。個々の値をコンマで区切ることで複数の値を指定できます。The following list shows the allowable values, and you can specify multiple values by separating them with a comma.

  • *(この値を使用すると、すべてのシンボルが指定されます)* (use this value to specify all symbols)
  • namespacenamespace
  • classclass
  • structstruct
  • interfaceinterface
  • enumenum
  • propertyproperty
  • メソッドmethod
  • フィールドfield
  • eventevent
  • delegatedelegate
  • パラメーターparameter
  • type_parametertype_parameter
  • locallocal
  • local_functionlocal_function

シンボルのアクセシビリティ レベルAccessibility levels of symbols

名前付け規則を適用するシンボルのアクセシビリティ レベルを記述するには、次の形式でプロパティ名を指定します。To describe the accessibility levels of the symbols you want the naming rule to apply to, specify a property name in the following format:

dotnet_naming_symbols.<symbolTitle>.applicable_accessibilities = <values>

許容される値を次のリストに示します。個々の値をコンマで区切ることで複数の値を指定できます。The following list shows the allowable values, and you can specify multiple values by separating them with a comma.

  • *(この値を使用すると、すべてのアクセシビリティ レベルが指定されます)* (use this value to specify all accessibility levels)

  • publicpublic

  • internal または friendinternal or friend

  • privateprivate

  • protectedprotected

  • protected_internal または protected_friendprotected_internal or protected_friend

  • private_protectedprivate_protected

  • locallocal

    local アクセシビリティ レベルは、メソッド内で定義された記号に適用されます。The local accessibility level applies to symbols defined within a method. コード内でアクセシビリティを指定できない記号には、名前規則を定義すると便利です。It's useful for defining naming conventions for symbols whose accessibility can't be specified in code. たとえば、定数 (required_modifiers = const) の名前規則に applicable_accessibilities = local を指定した場合、規則はメソッド内で定義された定数のみに適用され、型の中で定義されたものには適用されません。For example, if you specify applicable_accessibilities = local on a naming convention for constants (required_modifiers = const), the rule applies only to constants defined within a method and not those defined in a type.

    class TypeName
    {
       // Constant defined in a type.
       const int X = 3;
    
       void Method()
       {
         // Constant defined in a method with "local" accessibility.
         const int Y = 4;
       }
    }
    

シンボルの修飾子 (省略可能)Symbol modifiers (optional)

名前付け規則を適用するシンボルの修飾子を記述するには、次の形式でプロパティ名を指定します。To describe the modifiers of the symbols you want the naming rule to apply to, specify a property name in the following format:

dotnet_naming_symbols.<symbolTitle>.required_modifiers = <values>

許容される値を次のリストに示します (複数の値はコンマで区切ります)。The following list shows the allowable values (separate multiple values with a comma):

  • abstract または must_inheritabstract or must_inherit

  • async

  • const

  • readonly

  • static または sharedstatic or shared

    Note

    static または shared シンボルに対する名前付け規則がある場合、それは暗黙的に静的である const シンボルにも適用されます。If you have a naming rule for static or shared symbols, it is also applied to const symbols because they are implicitly static. static 名前付け規則を const シンボルに適用しない場合は、const シンボルに対する別の名前付け規則を作成します。If you don't want the static naming rule to apply to const symbols, create a separate naming rule for const symbols.

名前付け規則は、required_modifiers で指定されている "すべて" の修飾子が含まれるシグネチャのみと一致します。A naming rule matches signatures that have all the modifiers specified in required_modifiers. このプロパティを省略した場合は、既定値である空のリストが使用されます。すなわち、一致のために特定の修飾子は必要ありません。If you omit this property, the default value of an empty list is used, that is, no specific modifiers are required for a match. このことは、この規則が適用されるかどうかに、シンボルの修飾子が影響を及ぼさないことを意味します。This means a symbol's modifiers have no effect on whether or not this rule is applied.

Tip

required_modifiers に対しては値 * を指定しないでください。Do not specify a value of * for required_modifiers. 代わりに、required_modifiers プロパティをそっくり省略すると、すべての種類の修飾子に名前付け規則が適用されます。Instead, just omit the required_modifiers property altogether and your naming rule will apply to any kind of modifier.

スタイルStyle

名前付け規則を適用するシンボルのグループを識別したので、名前付けのスタイルを記述できます。Now that you've identified the group of symbols to apply the naming rule to, you can describe the naming style. 名前が特定のプレフィックスまたは特定のサフィックスを持つスタイルを指定したり、名前に含まれている個々の単語が特定の文字で区切られるスタイルにしたりすることができます。A style can be that the name has a certain prefix or a certain suffix, or that individual words in the name are separated with a certain character. また、大文字/小文字のスタイルを指定することもできます。You can also specify a capitalization style. スタイル プロパティの形式は次のようになります。The style property has the following format:

dotnet_naming_rule.<namingRuleTitle>.style = <styleTitle>

<styleTitle> の値を、first_word_upper_case_style のようにわかりやすいタイトルに置き換えることで、スタイルに名前を付けます。Give the style a name by replacing the <styleTitle> value with a descriptive title, for example first_word_upper_case_style. 名前付けのスタイル (プレフィックス、サフィックス、単語区切り文字、大文字/小文字) を記述するプロパティ名の中で <styleTitle> を使用します。You'll use the <styleTitle> value in the property names that describe the naming style (prefix, suffix, word separator character, and capitalization). これらのプロパティを 1 つまたは複数使用して、目的のスタイルを記述します。Use one or more of these properties to describe your style.

プレフィックスが必要Require a prefix

シンボル名が特定の文字で始まる必要があることを指定するには、次のプロパティを使用します。To specify that symbol names must begin with certain characters, use this property:

dotnet_naming_style.<styleTitle>.required_prefix = <prefix>

サフィックスが必要Require a suffix

シンボル名が特定の文字で終わる必要があることを指定するには、次のプロパティを使用します。To specify that symbol names must end with certain characters, use this property:

dotnet_naming_style.<styleTitle>.required_suffix = <suffix>

特定の単語区切り記号が必要Require a certain word separator

シンボル名の中の個々の単語を特定の文字で区切る必要があることを指定するには、次のプロパティを使用します。To specify that individual words in symbol names must be separated with a certain character, use this property:

dotnet_naming_style.<styleTitle>.word_separator = <separator character>

大文字/小文字のスタイルが必要Require a capitalization style

シンボル名に対して特定の大文字/小文字のスタイルを指定するには、次のプロパティを使用します。To specify a particular capitalization style for symbol names, use this property:

dotnet_naming_style.<styleTitle>.capitalization = <value>

このプロパティに設定できる値は次のとおりです。The allowable values for this property are:

  • pascal_casepascal_case
  • camel_casecamel_case
  • first_word_upperfirst_word_upper
  • all_upperall_upper
  • all_lowerall_lower

Note

名前付けスタイルの一部として大文字/小文字スタイルを指定する必要があります。そうしないと、名前付けスタイルは無視される可能性があります。You must specify a capitalization style as part of your naming style, otherwise your naming style might be ignored.

重要度Severity

名前付け規則違反の重大度を記述するには、次の形式でプロパティを指定します。To describe the severity of a violation of your naming rule, specify a property in the following format:

dotnet_naming_rule.<namingRuleTitle>.severity = <value>

次の表に、許容される重大度の値と、その意味を示します。The following table shows the allowable severity values, and what they mean:

重要度Severity 効果Effect
nonenone 規則は完全に抑制されます。Rule is suppressed completely.
refactoring または silentrefactoring or silent このスタイルに準拠していないときは、ユーザーには何も表示されません。ただし、自動生成コードは、このスタイルに従います。When this style is not being followed, do not show anything to the user; however, auto-generated code follows this style.
修正候補suggestion このスタイルに準拠していないとき、修正候補としてユーザーに表示されます (最初の 2 文字の下に点線が付きます)。When this style is not being followed, show it to the user as a suggestion, as underlying dots on the first two characters. コンパイル時には影響しません。It has no effect at compile time.
warningwarning このスタイルに準拠していないとき、エラー一覧にコンパイラの警告が表示されます。When this style is not being followed, show a compiler warning in the Error List.
errorerror このスタイルに準拠していないとき、エラー一覧にコンパイラ エラーが表示されます。When this style is not being followed, show a compiler error in the Error List.

Note

名前付け規則違反を確認するために、プロジェクトをビルドする必要はありません。You do not have to build your project in order to see naming rule violations. 名前付け規則違反は、コードの編集時に、エラー一覧に表示されるか、または修正候補として表示されます。They appear as code is edited, either in the Error List or as a suggestion.

ルールの順序Rule order

名前付け規則は、EditorConfig ファイル内に固有度の高いものから低いものの順に並べる必要があります。Naming conventions should be ordered from most-specific to least-specific in the EditorConfig file. 適用可能な最初に検出されたルールのみが適用されます。The first rule encountered that can be applied is the only rule that is applied. ただし、同じ名前のルールの "プロパティ" が複数ある場合は、その名前の最も最近見つかったプロパティが優先されます。However, if there are multiple rule properties with the same name, the most recently found property with that name takes precedence. 詳細については、「File hierarchy and precedence (ファイルの階層と優先順位)」を参照してください。For more information, see File hierarchy and precedence.

Visual Studio 2019 バージョン 16.2 以降では、EditorConfig ファイルで名前付け規則が定義されている順序は関係ありません。Starting in Visual Studio 2019 version 16.2, the order in which naming rules are defined in an EditorConfig file doesn't matter. 代わりに、Visual Studio で、規則自体の定義に従って、名前付け規則が自動的に並べ替えられます。Instead, Visual Studio orders the naming rules automatically according to the definition of the rules themselves. EditorConfig 言語サービス拡張機能では、EditorConfig ファイルを分析して、ファイルでの規則の順序が実行時にコンパイラで使用される順序と異なる場合に報告できます。The EditorConfig Language Service extension can analyze an EditorConfig file and report cases where the rule ordering in the file is different to what the compiler will use at run time.

以前のバージョンの Visual Studio を使っている場合、名前付け規則は、EditorConfig ファイル内で固有度の高いものから低いものの順に並べる必要があります。If you're using an earlier version of Visual Studio, naming conventions should be ordered from most-specific to least-specific in the EditorConfig file. 適用可能な最初に検出されたルールのみが適用されます。The first rule encountered that can be applied is the only rule that is applied. ただし、同じ名前のルールの "プロパティ" が複数ある場合は、その名前の最も最近見つかったプロパティが優先されます。However, if there are multiple rule properties with the same name, the most recently found property with that name takes precedence. 詳細については、「File hierarchy and precedence (ファイルの階層と優先順位)」を参照してください。For more information, see File hierarchy and precedence.

既定の名前付けスタイルDefault naming styles

カスタム名前付け規則を何も指定しないと、Visual Studio では次の既定のスタイルが使われます。If you don't specify any custom naming rules, Visual Studio uses the following default styles:

  • アクセシビリティが publicprivateinternalprotected、または protected_internal であるクラス、構造体、列挙型、プロパティ、およびイベントでは、既定の名前付けスタイルはパスカル ケースです。For classes, structs, enumerations, properties, and events with public, private, internal, protected, or protected_internal accessibility, the default naming style is Pascal case.

  • アクセシビリティが publicprivateinternalprotected、または protected_internal であるインターフェイスでは、既定の名前付けスタイルはパスカル ケースであり、プレフィックス I を付ける必要があります。For interfaces with public, private, internal, protected, or protected_internal accessibility, the default naming style is Pascal case with a required prefix of I.

Example

次の .editorconfig ファイルには、パブリック プロパティ、メソッド、フィールド、イベント、デリゲートを大文字で入力する必要があることを指定した名前付け規則が含まれています。The following .editorconfig file contains a naming convention that specifies that public properties, methods, fields, events, and delegates must be capitalized. この名前付け規則では、コンマを使用して個々のシンボル値を区切ることにより、規則を適用する複数の種類のシンボルを指定しています。Notice that this naming convention specifies multiple kinds of symbol to apply the rule to, using a comma to separate the values.

# Public members must be capitalized (public_members_must_be_capitalized)
[*.{cs,vb}]
dotnet_naming_rule.public_members_must_be_capitalized.symbols   = public_symbols
dotnet_naming_symbols.public_symbols.applicable_kinds           = property,method,field,event,delegate
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public
dotnet_naming_symbols.public_symbols.required_modifiers         = readonly

dotnet_naming_rule.public_members_must_be_capitalized.style    = first_word_upper_case_style
dotnet_naming_style.first_word_upper_case_style.capitalization = first_word_upper

dotnet_naming_rule.public_members_must_be_capitalized.severity = suggestion

次のスクリーンショットでは、この名前付け規則の結果がエディターに表示されています。The following screenshot shows the effect of this naming convention in the editor. 2 つのパブリック変数に付けられた名前は、最初の文字が大文字になっていません。Two public variables have been named without capitalization of the first letter. 1 つは const、もう 1 つは readonly です。One is a const, and one is readonly. 名前付け規則は readonly シンボルのみに適用されるので、readonly 変数のみに、名前付け規則の修正候補が表示されています。Since the naming rule only applies to readonly symbols, only the readonly variable shows a naming rule suggestion.

名前付け規則の修正候補

これで、違反の重大度を warning に変更してみましょう。Now let's change the violation severity to warning:

dotnet_naming_rule.public_members_must_be_capitalized.severity = warning

コード ファイルを閉じてから再度開いた場合、名前違反の下には修正候補が表示されるのではなく、緑色の波線が表示され、さらにエラー一覧に警告が表示されます。If you close and reopen your code file, instead of seeing the suggestion under the name violation, you see a green squiggle and a warning in the Error List:

名前付け規則の警告

関連項目See also