在 .editorconfig 文件中,可以定义命名规则,用于指定并强制执行为 .NET 编程语言代码元素—如类、属性和方法—命名的方式。 例如,可以指定公共成员必须采用大写形式,或者私有字段必须以 _ 开头。
命名规则有三个组件:
规则适用的符号组,例如,公共成员或私有字段。
要与规则关联的命名样式,例如,名称必须采用大写形式或以下划线开头。
用于强制执行约定的严重性。
首先,必须指定符号组和命名样式,并为它们分别指定一个标题。 然后指定命名规则,以将所有指定的内容链接在一起。
一般语法
若要定义命名规则、符号组或命名样式,请使用以下语法设置一个或多个属性:
<kind>.<title>.<propertyName> = <propertyValue>
每个属性只能设置一次,但某些设置允许多个值(以逗号分隔)。
属性的顺序并不重要。
<kind>
<kind> 指定所定义的元素种类—命名规则、符号组或命名样式—并且必须是以下种类之一:
设置属性
使用 <kind> 值
示例
命名规则
dotnet_naming_rule
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
符号组
dotnet_naming_symbols
dotnet_naming_symbols.interface.applicable_kinds = interface
命名样式
dotnet_naming_style
dotnet_naming_style.pascal_case.capitalization = pascal_case
每种定义类型—命名规则、符号组或命名样式—都有各自支持的属性,如以下各节所述。
<title>
<title> 是所选的描述性名称,用于将多个属性设置关联到一个定义中。 例如,以下属性生成两个符号组定义:interface 和 types,并为每一个定义都设置了两个属性。
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum, delegate
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
命名规则属性
要使规则生效,必须具有所有命名规则属性。
属性
说明
symbols
符号组的标题;命名规则将应用于此组中的符号
style
应与此规则关联的命名样式的标题
severity
设置用于强制执行命名规则的严重性。 将关联的值设置为任一可用的严重性级别.1
注意:
只有 Visual Studio 之类的开发 IDE 会遵循命名规则中的严重性规范。 C# 或 VB 编译器无法解读此设置,因此在生成期间不会遵循它。 若要在生成时强制执行命名样式规则,应改为通过使用代码规则严重性配置来设置严重性。 有关详细信息,请参阅此 GitHub 问题。
符号组属性
你可以为符号组设置以下属性,以限制组中包含的符号。 若要为单个属性指定多个值,请用逗号分隔这些值。
属性
说明
允许的值
必选
applicable_kinds
组中符号的种类 1
*(使用此值可指定所有符号)namespaceclassstructinterfaceenumpropertymethodfieldeventdelegateparametertype_parameterlocallocal_function
是
applicable_accessibilities
组中符号的可访问性级别
*(使用此值可指定所有可访问性级别)publicinternal 或 friendprivateprotectedprotected_internal 或 protected_friendprivate_protectedlocal(用于方法内定义的符号)
是
required_modifiers
仅将符号与所有指定的修饰符 2 进行匹配
abstract 或 must_inheritasyncconstreadonlystatic 或 shared 3
否
注意:
目前 applicable_kinds 不支持元组成员。
符号组与 required_modifiers 属性中的所有修饰符匹配。 如果你忽略此属性,则无需与任何特定修饰符进行匹配。 这意味着符号的修饰符不会影响是否应用此规则。
如果组的 required_modifiers 属性包含 static 或 shared,那么组还将包括 const 符号,因为它们是隐式 static/Shared。 不过,如果你不希望将 static 命名规则应用于 const 符号,可以使用 const 符号组创建新的命名规则。
class 包括 C# 记录。
命名样式属性
命名样式定义要通过规则强制执行的约定。 例如:
采用 PascalCase 大写形式
以 m_ 开头
以 _g 结尾
用 __ 分隔单词
可以为命名样式设置以下属性:
属性
说明
允许的值
必选
capitalization
符号内的单词的大写样式
pascal_casecamel_casefirst_word_upperall_upperall_lower
是1
required_prefix
必须以这些字符开头
否
required_suffix
必须以这些字符结尾
否
word_separator
符号内的单词必须用此字符分隔
否
注意:
必须在命名样式中指定大写样式,否则会忽略命名样式。
规则顺序
EditorConfig 文件中定义命名规则的顺序并不重要。 命名规则根据规则本身的定义自动排序。 EditorConfig 语言服务扩展可以分析 EditorConfig 文件,如果文件中的规则顺序与编译器在运行时使用的规则不同,该扩展还会进行报告。
备注
如果你使用的是 Visual Studio 2019 版本16.2 之前的 Visual Studio 版本,EditorConfig 文件中的命名规则应按照从特定性最强到特定性最弱的顺序排序。 遇到的第一个可应用规则是唯一应用的规则。 但是,如果有多个具有相同名称的规则属性 ,则最近找到的具有该名称的属性具有优先权。 有关详细信息,请参阅文件层次结构和优先级。
默认命名样式
如果不指定任何自定义命名规则,系统将使用下列默认样式:
对于具有任意辅助功能的类、结构、枚举、属性、方法以及事件,默认的命名样式为帕斯卡拼写法。
对于具有任意辅助功能的接口,默认的命名样式为帕斯卡拼写法并必须附加 l 前缀。
代码规则 ID:IDE1006 (Naming rule violation)
所有命名选项都具有规则 ID IDE1006 和标题 Naming rule violation。 可以使用以下语法在 EditorConfig 文件中以全局方式配置命名违规行为的严重性:
dotnet_diagnostic.IDE1006.severity = <severity value>
严重性值必须是 warning 或 error 才能在生成时强制执行。 要了解所有可能的严重性值,请参阅严重性级别。
示例
以下 .editorconfig 文件包含命名约定,该约定指定公共属性、方法、字段、事件和委托必须采用大写形式 。 请注意,此命名约定指定了多种应用规则的符号,以逗号分隔。
[*.{cs,vb}]
# Defining the 'public_symbols' symbol group
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
# Defining the `first_word_upper_case_style` naming style
dotnet_naming_style.first_word_upper_case_style.capitalization = first_word_upper
# Defining the `public_members_must_be_capitalized` naming rule, by setting the symbol group to the 'public symbols' symbol group,
dotnet_naming_rule.public_members_must_be_capitalized.symbols = public_symbols
# setting the naming style to the `first_word_upper_case_style` naming style,
dotnet_naming_rule.public_members_must_be_capitalized.style = first_word_upper_case_style
# and setting the severity.
dotnet_naming_rule.public_members_must_be_capitalized.severity = suggestion
请参阅
语言规则
格式设置规则
Roslyn 命名规则
.NET 代码样式规则参考
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。