代码样式首选项和代码清理

使用代码样式首选项可以控制代码的各个方面,例如缩进样式、制表符宽度、行尾字符、编码和其他许多格式选项。 可以通过两种方式定义代码样式设置:

还可以使用 代码清理格式化文档 命令将 Visual Studio 配置为应用代码样式首选项。

可以通过使用 EditorConfig 文件 来为每个项目定义代码样式设置,或者通过在 Visual Studio 的文本编辑器中使用 .NET 选项页C/C++ 选项页 来为您编辑的所有代码定义。 对于 C# 代码,还可以将 Visual Studio 配置为使用 代码清理 (Visual Studio 2019)和 格式文档 (Visual Studio 2017)命令应用这些代码样式首选项。

EditorConfig 文件中的代码样式

可以通过向项目添加 EditorConfig 文件来指定代码样式设置。 EditorConfig 文件与代码库而不是 Visual Studio 个性化帐户相关联。 EditorConfig 文件中的设置优先于 选项 对话框中指定的代码样式。 如果要对存储库或项目的所有参与者强制实施编码样式,请使用 EditorConfig 文件。 它们特别有助于确保团队编程环境中的一致性。

若要添加 EditorConfig 文件,请参阅 添加 EditorConfig 文件的方法

有关 .NET 代码样式设置的参考信息,请参阅 代码样式设置

“选项”对话框中的 C/C++代码样式

可以指定许多单独的代码格式设置选项,例如缩进和大括号位置。 为此,请转到 “工具>选项>文本编辑器>C/C++>代码样式>格式 ”(或 键入 Ctrl + Q 并搜索“格式”)。 或者,可以指定 ClangFormat 样式之一(或你自己的自定义 ClangFormat 样式)。

“选项”窗格的屏幕截图,其中包含文本编辑器。

可以指定许多单独的代码格式设置选项,例如缩进和大括号位置。 为此,请转到 “工具>选项>文本编辑器>C/C++>格式 ”(或 键入 Ctrl + Q 并搜索“格式”)。 或者,可以指定 ClangFormat 样式之一(或你自己的自定义 ClangFormat 样式)。

有关所有格式设置选项的详细信息,请参阅 选项、文本编辑器、C/C++、格式设置。

“选项”对话框中的 .NET 代码样式

可以通过从“工具”菜单中打开“选项”对话框,为所有 C# 和 Visual Basic 项目设置代码样式首选项。 在“ 选项 ”对话框中,选择 文本编辑器> [C#Visual Basic] >代码样式

  • 对于格式设置样式,请选择 “格式”下的选项。
  • 对于与 快速作 和 IDE 代码样式规则关联的代码样式首选项,请选择 “常规 ”或“ 命名”下的选项。

可以通过从“工具”菜单中打开“选项”对话框,为所有 C# 和 Visual Basic 项目设置代码样式首选项。 在 选项 对话框中,选择 文本编辑器> [C#基本] >代码样式>常规

选择选项时,列表中的每个项都会显示首选项的预览:

代码样式选项的屏幕截图。

代码样式选项的屏幕截图。

在此窗口中设置的选项适用于 Visual Studio 个性化帐户,并且不与特定项目或代码库相关联。 此外,它们不会在构建时强制执行,包括在持续集成(CI)构建中。 如果要将代码样式首选项与项目相关联,并在生成过程中强制实施样式,请在与项目关联的 EditorConfig 文件中 指定首选项。

首选项和严重级别

对于常规命名选项页上的每个代码样式设置,可以在每行的下拉列表中设置首选项严重性值。 严重性可设置为“仅重构”、“建议”、“警告”或“错误”

  • “常规”和“命名”选项页中的代码样式首选项决定了用于代码样式的快捷操作。 使用非首选样式时,快速操作 灯泡 、错误灯泡 或螺丝刀 图标显示,可以在 快速操作 列表中选择一个选项,以自动将代码重写为首选样式。
  • 如果希望违规仅显示为快速操作,并且也从代码清理中排除,请将严重性设置为仅重构
  • 如果希望冲突显示在“错误列表”窗口中以及“快速作”中,并且包括在代码清理中,请将 “严重性 ”设置为 “建议”、“ 警告”或 “错误”。 将“错误列表”窗口中的输出设置为“生成 + IntelliSense”时,违规会显示为建议(消息)、警告或错误。 它们被排除在仅包含生成的输出之外。

EditorConfig 文件中的设置优先于这些页面中设置的代码样式。

在构建时强制执行代码样式

从 Visual Studio 2019 版本 16.8(包括 .NET 5.0 RC2 SDK)开始,可以针对所有 .NET 项目在生成时强制实施 .NET 编码约定。 在生成时,.NET 代码样式冲突将显示为带有“IDE”前缀的警告或错误。 这样,便可以严格强制实施代码库中的一致代码样式。

应用代码样式

在“选项”页中更改代码样式或向 Visual Studio 中的项目添加 EditorConfig 文件时,仅基于新设置设置新代码行。 除非运行以下命令之一,否则不会更改现有代码的格式:

  • 代码清理

    在 Visual Studio 编辑器中选择“代码清理”,或按 CtrlKCtrl++E。 此命令适用于空白设置,例如缩进样式和所选代码样式设置,例如括号首选项。

  • 设置文档格式。

    选择 “编辑>高级>格式文档”,或在默认配置文件中按 Ctrl+KCtrl+D 。 此命令仅适用于空白区域设置,例如缩进样式。

通过代码清理来应用代码样式

若要从 EditorConfig 文件或 “代码样式 ”选项页应用代码样式,请使用编辑器底部的代码 清理 按钮(键盘: Ctrl+KCtrl+E)。 如果项目的 EditorConfig 文件存在,则这些是优先设置。

提示

使用重构严重性配置的 .NET 规则 参与代码清理,但可以通过 快速作和重构 菜单单独应用。

应用代码样式:

  1. 首先,在“配置代码清理”对话框中配置要应用的代码样式(在两个配置文件中的某个文件中)。 若要打开此对话框,请单击代码清理扫把图标旁边的展开器箭头,然后选择 配置代码清理。 或者,使用 “分析>代码清理 ”菜单。

    配置代码清理的屏幕截图。

    有关 .NET 代码清理修复程序到 .NET 代码样式规则的映射,请参阅 .NET 代码清理设置

    C/C++ 选项包括修复程序名称中的C++。

  2. 配置代码清理后,使用以下方法之一运行代码清理:

    • 单击扫把图标或按 Ctrl+KCtrl+E

      执行代码清理的屏幕截图。

    • 若要在整个项目或解决方案中运行代码清理,请在 解决方案资源管理器中右键单击项目或解决方案名称,选择“ 分析和代码清理”,然后选择“ 运行代码清理”。

      在整个项目或解决方中运行代码清理功能的屏幕截图。

  3. (可选)如果希望每次保存文件时都应用代码样式设置,请转到 “选项>文本编辑器>代码清理 ”,然后在 保存时选择“运行代码清理”配置文件

对于 C# 代码文件,Visual Studio 在编辑器底部有一个 代码清理 按钮(键盘:Ctrl+KCtrl+E)从 EditorConfig 文件或 代码样式 选项页应用代码样式。 如果项目的 EditorConfig 文件存在,则这些是优先设置。

提示

严重性配置为“无”的规则不参与代码清理,但可通过“快速操作和重构”菜单单独应用。

应用代码样式:

  1. 首先,在“配置代码清理”对话框中配置要应用的代码样式(在两个配置文件中的某个文件中)。 若要打开此对话框,请单击代码清理扫把图标旁边的展开器箭头,然后选择 配置代码清理

    配置代码清理的屏幕截图。

  2. 配置代码清理后,使用以下方法之一运行代码清理:

    • 单击扫把图标或按 Ctrl +Ctrl+E 运行代码清理。

      执行代码清理的屏幕截图。

    • 若要在整个项目或解决方案中运行代码清理,请在 解决方案资源管理器中右键单击项目或解决方案名称,选择“分析和代码清理”,然后选择 运行代码清理

      在整个项目或解决方中运行代码清理功能的屏幕截图。

    如果希望每次保存文件时都应用代码样式设置,则可能需要使用保存时清理代码扩展。

.NET 代码清理设置

大多数代码清理设置映射到 EditorConfig 支持的一个或多个 .NET 代码样式。 有关显示设置效果的示例,请使用下表中的链接。

设置 规则 ID 或样式选项
删除不必要的 import 或 using IDE0005
对 import 或 using 排序 dotnet_排序系统指令优先
dotnet_分离导入指令组
应用文件头首选项 文件头模板
删除未使用的变量 CS0219
应用对象创建首选项 Visual Basic 风格偏好简化对象创建
应用 IsNot 首选项 Visual Basic 样式偏好:IsNot 表达式
添加“this”或“Me”限定 IDE0003-IDE0009
添加可访问性修饰符 dotnet_style_require_accessibility_modifiers
对修饰符进行排序 IDE0036
将字段设置为只读 dotnet_style_readonly_field
删除不必要的强制转换 IDE0004
应用对象/集合初始化参数) dotnet风格的对象初始化器
应用 using 指令放置首选项 csharp_using_directive_placement
应用括号首选项 IDE0047-IDE0048
应用未使用的值首选项 IDE0058
应用语言/框架类型首选项 IDE0049
删除未使用的抑制 dotnet_remove_unnecessary_suppression_exclusions
应用简化布尔表达式首选项 dotnet_style_prefer_simplified_boolean_expressions
应用字符串内插首选项 dotnet_style_prefer_simplified_interpolation
删除未使用的参数 dotnet代码质量_未使用的参数
应用自动属性首选项 dotnet_style_prefer_auto_properties (dotnet 样式倾向自动属性)
应用复合赋值首选项 dotnet_style_prefer_compound_assignment
应用联合表达式首选项 dotnet_style_coalesce_expression
设置条件表达式首选项
dotnet_style_prefer_conditional_expression_over_assignmentdotnet_style_prefer_conditional_expression_over_return
应用元组名称首选项
dotnet_style_explicit_tuple_namesdotnet_style_prefer_inferred_tuple_names
应用推断匿名类型成员名称首选项 dotnet_style_prefer_inferred_anonymous_type_member_names
应用 Null 检查首选项 dotnet_style_prefer_is_null_check_over_reference_equality_method
应用 Null 传播首选项 dotnet_style_null_propagation
应用“var”首选项 IDE0007-IDE0008
添加所需的单行控制语句的大括号 csharp_prefer_braces
应用表达式/代码块的首选设置 Expression-Bodied 成员
应用内联“out”变量首选项 csharp_style_嵌入式变量声明
应用模式匹配首选项 模式匹配首选项
应用条件委托调用首选项 csharp 风格的条件委托调用
应用静态本地函数首选项 csharp_prefer_static_local_function
应用析构首选项 csharp_style_deconstructed_variable_declaration
应用 default(T) 首选项 csharp_优先使用简单默认表达式
应用 new() 首选项 csharp_类型明显时的隐式对象创建风格
应用范围首选项 C# 样式优选范围运算符
应用本地函数(而不是匿名函数)首选项 csharp_style_局部模式_代替_匿名函数
应用参数 null 首选项 Null 检查首选项
应用 using 语句首选项 csharp_偏向简单使用语句
应用 throw 表达式首选项 csharp_style_throw_expression