代码样式规则选项

2022-01-09 12:09:47 浏览数 (1)

通过在 EditorConfig 文件中定义 .NET 代码样式规则选项,可以在代码库中定义和保持一致的代码样式。 在你编辑代码时,Visual Studio 等各种开发 IDE 会实施这些规则。 对于 .NET 项目,还可以在生成时强制执行这些规则。 你可以启用或禁用单个规则,并可通过严重性级别配置强制执行每个规则的程度。

提示

在 EditorConfig 文件中定义代码样式选项,就是在配置代码样式分析器分析代码的方式。 EditorConfig 文件是适用于这些分析器的配置文件。

在 Visual Studio 中,代码样式选项还可以在文本编辑器选项对话框中进行设置。 这些是按用户选项,只有在 Visual Studio 中进行编辑时才会采用这些选项。 在生成时不会采用这些选项,也不会由其他 IDE 采用。 此外,如果在 Visual Studio 中打开的项目或解决方案包含 EditorConfig 文件,则优先采用 EditorConfig 文件中的选项。 在 Windows 上的 Visual Studio 中,还可以从文本编辑器选项生成 EditorConfig 文件。 选择“工具” > “选项” > “文本编辑器”> [“C#”或“基本”] >“代码样式” > “常规”,然后单击“从设置生成 .editorconfig 文件”。 。 有关详细信息,请参阅代码样式首选项。

代码样式规则分为以下子类别:

语言规则

不必要的代码规则

格式设置规则

命名规则

其中每个子类别都定义了各自的语法来指定选项。 有关这些规则和相应选项的详细信息,请参阅代码样式规则引用。

EditorConfig 文件示例

下面是具有默认选项的示例 .editorconfig 文件,可帮助你入门。

提示

在 Visual Studio 中,可以通过“添加新项目”对话框将以下默认的 .NET .editorconfig 文件添加到你的项目中。

###############################

# Core EditorConfig Options #

###############################

root = true

# All files

[*]

indent_style = space

# XML project files

[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]

indent_size = 2

# XML config files

[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]

indent_size = 2

# Code files

[*.{cs,csx,vb,vbx}]

indent_size = 4

insert_final_newline = true

charset = utf-8-bom

###############################

# .NET Coding Conventions #

###############################

[*.{cs,vb}]

# Organize usings

dotnet_sort_system_directives_first = true

# this. preferences

dotnet_style_qualification_for_field = false:silent

dotnet_style_qualification_for_property = false:silent

dotnet_style_qualification_for_method = false:silent

dotnet_style_qualification_for_event = false:silent

# Language keywords vs BCL types preferences

dotnet_style_predefined_type_for_locals_parameters_members = true:silent

dotnet_style_predefined_type_for_member_access = true:silent

# Parentheses preferences

dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent

dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent

dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent

dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent

# Modifier preferences

dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent

dotnet_style_readonly_field = true:suggestion

# Expression-level preferences

dotnet_style_object_initializer = true:suggestion

dotnet_style_collection_initializer = true:suggestion

dotnet_style_explicit_tuple_names = true:suggestion

dotnet_style_null_propagation = true:suggestion

dotnet_style_coalesce_expression = true:suggestion

dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent

dotnet_style_prefer_inferred_tuple_names = true:suggestion

dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion

dotnet_style_prefer_auto_properties = true:silent

dotnet_style_prefer_conditional_expression_over_assignment = true:silent

dotnet_style_prefer_conditional_expression_over_return = true:silent

###############################

# Naming Conventions #

###############################

# Style Definitions

dotnet_naming_style.pascal_case_style.capitalization = pascal_case

# Use PascalCase for constant fields

dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion

dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields

dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style

dotnet_naming_symbols.constant_fields.applicable_kinds = field

dotnet_naming_symbols.constant_fields.applicable_accessibilities = *

dotnet_naming_symbols.constant_fields.required_modifiers = const

###############################

# C# Coding Conventions #

###############################

[*.cs]

# var preferences

csharp_style_var_for_built_in_types = true:silent

csharp_style_var_when_type_is_apparent = true:silent

csharp_style_var_elsewhere = true:silent

# Expression-bodied members

csharp_style_expression_bodied_methods = false:silent

csharp_style_expression_bodied_constructors = false:silent

csharp_style_expression_bodied_operators = false:silent

csharp_style_expression_bodied_properties = true:silent

csharp_style_expression_bodied_indexers = true:silent

csharp_style_expression_bodied_accessors = true:silent

# Pattern matching preferences

csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion

csharp_style_pattern_matching_over_as_with_null_check = true:suggestion

# Null-checking preferences

csharp_style_throw_expression = true:suggestion

csharp_style_conditional_delegate_call = true:suggestion

# Modifier preferences

csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion

# Expression-level preferences

csharp_prefer_braces = true:silent

csharp_style_deconstructed_variable_declaration = true:suggestion

csharp_prefer_simple_default_expression = true:suggestion

csharp_style_pattern_local_over_anonymous_function = true:suggestion

csharp_style_inlined_variable_declaration = true:suggestion

###############################

# C# Formatting Rules #

###############################

# New line preferences

csharp_new_line_before_open_brace = all

csharp_new_line_before_else = true

csharp_new_line_before_catch = true

csharp_new_line_before_finally = true

csharp_new_line_before_members_in_object_initializers = true

csharp_new_line_before_members_in_anonymous_types = true

csharp_new_line_between_query_expression_clauses = true

# Indentation preferences

csharp_indent_case_contents = true

csharp_indent_switch_labels = true

csharp_indent_labels = flush_left

# Space preferences

csharp_space_after_cast = false

csharp_space_after_keywords_in_control_flow_statements = true

csharp_space_between_method_call_parameter_list_parentheses = false

csharp_space_between_method_declaration_parameter_list_parentheses = false

csharp_space_between_parentheses = false

csharp_space_before_colon_in_inheritance_clause = true

csharp_space_after_colon_in_inheritance_clause = true

csharp_space_around_binary_operators = before_and_after

csharp_space_between_method_declaration_empty_parameter_list_parentheses = false

csharp_space_between_method_call_name_and_opening_parenthesis = false

csharp_space_between_method_call_empty_parameter_list_parentheses = false

# Wrapping preferences

csharp_preserve_single_line_statements = true

csharp_preserve_single_line_blocks = true

###############################

# VB Coding Conventions #

###############################

[*.vb]

# Modifier preferences

visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion

请参阅

代码样式分析规则引用

在生成时强制执行代码样式

Visual Studio 中的快速操作

在 Visual Studio 中创建可移植的自定义编辑器选项

.NET Compiler Platform“Roslyn”.editorconfig 文件

.NET 运行时 .editorconfig 文件

0 人点赞