代码清理
JetBrains Rider 允许您以批量模式应用 格式化和其他代码样式偏好 ,从而立即消除一个或多个文件、项目或整个解决方案中的代码样式违规。
代码清理配置文件
代码清理可以根据您的需求配置不同的配置文件以应用于不同的情况。 开箱即用地提供了三个默认配置文件:
这些配置文件在大多数情况下都很有帮助,但您无法配置它们。 如果您希望使用自定义的 清理任务运行代码清理,您需要创建一个自定义配置文件并在其中指定所需的任务集。
创建新的自定义清理配置文件
当您 运行代码清理时,您新创建的清理配置文件将在 重新格式化并清理代码 对话框中可用。 您还可以将此配置文件设置为用于 静默清理。
同时使用不同的代码清理配置文件
JetBrains Rider 允许为 解决方案中的大多数文件使用一个特定的代码清理配置文件,但为部分文件使用不同的代码清理配置文件。 您还可以完全跳过特定文件的清理。
为此,请使用 resharper_substitution_for_cleanup_profile 的 EditorConfig 属性,语法如下:
该语法允许在使用特定配置文件启动代码清理时使用不同的配置文件——在这种情况下,将该配置文件的名称写在 => 的左侧;或者在使用任意配置文件启动代码清理时——在这种情况下,将 * 写在 => 的左侧。 将应使用的配置文件名称写在 => 的右侧,或者如果不应对匹配的文件应用代码清理,则写上 跳过。
运行代码清理
JetBrains Rider 可以将代码清理应用于任意选定的代码块、当前文件中的所有代码、目录中的所有文件、 当前 VCS 更改列表中的文件、当前项目,甚至是整个解决方案。 通过选择正确的 清理配置文件 ,确保选择正确的 清理任务集。
清理选定内容或文件
选择您希望清理代码的范围:
在编辑器中选择要清理代码的选定内容。
将插入点放置在文件中的任意位置以清理文件中的代码。
如果您正在清理选定内容,请按 Alt+Enter 并选择 。
或者,您也可以按照以下步骤操作,适用于选择范围和整个文件。
按 Ctrl+R, C 或从主菜单中选择 。
在打开的 重新格式化并清理代码 对话框中,您可以检查并可选地更改代码清理的范围,并选择要应用的 清理配置文件。 使用所选配置文件右侧的区域检查该配置文件中包含的任务。
如果没有可用的配置文件适合您,请单击 编辑
,然后选择一个现有的配置文件并单击 克隆 以 创建新的自定义配置文件并保存更改。
单击 运行 以清理选定范围内的代码。
您不仅可以清理单个文件,还可以清理目录、项目或整个解决方案中的多个文件。 为此,请从 解决方案资源管理器 运行代码清理。
清理多个文件、项目或整个解决方案
在 解决方案资源管理器 中选择一个或多个项目(文件、目录、项目或解决方案)。
按 Ctrl+R, C 或从主菜单中选择 。
选择上文描述的清理配置文件。
单击 运行 以清理选定范围内的代码。
您可以在最近修改并准备提交到 Git 的代码中运行代码清理。 JetBrains Rider 将在提交之前运行选定的 清理配置文件。
在提交到 Git 之前清理代码
按 Ctrl+K 或从主菜单中选择 。
在 提交 工具窗口中,点击
,并在 提交检查 区域中,选择 清理方式... 复选框。
可选地,您可以单击 选择配置文件 以指定应使用的 清理配置文件。
点击 提交 或 提交并推送。 JetBrains Rider 将在提交暂存的文件中运行代码清理,然后提交更改。
您可以在每次保存文件更改时运行代码清理,以确保您的编辑始终符合代码样式。 请注意,这仅在您通过 Ctrl+S 或 Ctrl+S 显式保存更改时发生,不会因 自动保存 而触发。 然而,所有自动保存的文件都会被放入“重新格式化和清理”队列,并将在下次显式保存时处理。
在保存更改时自动运行代码清理
按下 Ctrl+Alt+S 打开设置,然后选择 。
选择 重新格式化并清理代码 ,选择应应用的 代码清理配置文件 ,以及是将其应用于整个文件还是仅应用于更改的行。
下次您完成编辑并保存文件或所有文件时,JetBrains Rider 将使用选定的配置文件清理受影响的文件。
静默清理
您还可以以静默模式运行代码清理——即不显示 重新格式化并清理代码 对话框。 由于在这种情况下您无法显式选择配置文件,因此您必须分配一个清理配置文件以用于静默代码清理。
为静默代码清理分配一个配置文件
按下 Ctrl+Alt+S 或从菜单中选择 (Windows 和 Linux)或 (macOS)。
转到代码清理配置文件设置页面: 。
在左侧选择一个清理配置文件,然后单击 设置 页面顶部的 设置为静默清理的默认值。
在 设置 对话框中点击 保存 以应用修改,并让 JetBrains Rider 选择保存位置,或者通过从 保存 选择器中选择特定设置层来保存修改。 如需了解更多信息,请参见 基于层的设置。
以静默模式运行代码清理
请执行以下操作之一:
要在特定代码文件中运行静默代码清理,请在文本编辑器中打开它或在 解决方案资源管理器 中选择它。
要将静默代码清理应用于一组文件(目录、项目或解决方案),请选择 解决方案资源管理器 中的相应项目。
按 Ctrl+R, G 或从主菜单中选择 。 或者,您可以按 Ctrl+Shift+A ,在弹出窗口中开始输入命令名称,然后在那里选择它。
可用的代码清理任务
下表列出了不同语言的可用清理任务。 如果您需要清理仅执行这些任务的一部分,可以为此 创建自定义清理配置文件。
重新设置代码格式
C# | |
重新设置代码格式 | 根据您可以在 JetBrains Rider 设置 的 页面上配置的首选项重新格式化代码。 更多信息请参阅 应用格式化规则。 |
重新格式化嵌入式 XML 文档注释 | 根据可在 JetBrains Rider 设置 的 页面上配置的选项重新格式化 XML 文档注释。 请注意,JetBrains Rider 不会重新格式化如下的普通注释: // A plain single-line comment
或者 /* A plain multi-line comment */
|
C++ | |
重新设置代码格式 | 根据您可以在 JetBrains Rider 设置 的 页面上配置的首选项重新格式化代码。 更多信息请参阅 应用格式化规则。 |
Visual Basic | |
重新设置代码格式 | 根据您可以在 JetBrains Rider 设置 的 页面上配置的首选项重新格式化代码。 更多信息请参阅 应用格式化规则。 |
重新格式化嵌入式 XML 文档注释 | 根据可在 JetBrains Rider 设置 的 页面上配置的选项重新格式化 XML 文档注释。 请注意,JetBrains Rider 不会重新格式化如下的普通注释: // A plain single-line comment
或者 /* A plain multi-line comment */
|
XML | |
重新设置代码格式 | 根据您可以在 JetBrains Rider 设置 的 页面上配置的首选项重新格式化代码。 更多信息请参阅 应用格式化规则。 |
HTML | |
重新设置代码格式 | 根据您可以在 JetBrains Rider 设置 的 页面上配置的首选项重新格式化代码。 更多信息请参阅 应用格式化规则。 |
CSS | |
重新设置代码格式 | 根据您可以在 JetBrains Rider 设置 的 页面上配置的首选项重新格式化代码。 更多信息请参阅 应用格式化规则。 |
JavaScript/TypeScript | |
重新设置代码格式 | 根据您可以在 JetBrains Rider 设置 的 页面上配置的首选项重新格式化代码。 更多信息请参阅 应用格式化规则。 |
重新格式化嵌入式 XML 文档注释 | 根据可在 JetBrains Rider 设置 的 页面上配置的选项重新格式化 XML 文档注释。 请注意,JetBrains Rider 不会重新格式化如下的普通注释: // A plain single-line comment
或者 /* A plain multi-line comment */
|
语法样式
C# | |
应用 'var' 样式 | 在清理过程中应用 'var' 使用规则。 这些规则可在 页面上的 JetBrains Rider 设置 Ctrl+Alt+S 中配置。 |
对类型使用显式或隐式修饰符定义 | 应用类型修饰符规则——是否显式使用 |
对类型成员使用显式或隐式修饰符定义 | 应用类型成员修饰符规则——是否显式使用 |
排序修饰符 | 应用类型/成员修饰符的首选顺序。 该规则可在 JetBrains Rider 设置 的 页面上配置 Ctrl+Alt+S。 欲了解更多信息,请参阅 代码语法样式:修饰符。 |
应用实参样式(命名与位置) | 应用特定类型参数的命名/位置参数的首选项。 这些首选项可在 JetBrains Rider 设置 的 页面上配置 Ctrl+Alt+S。 欲了解更多信息,请参阅 代码语法样式:命名/位置参数。 |
移除多余的括号 | 移除在 JetBrains Rider 设置 的 页面上指定的情况下的冗余可选括号 Ctrl+Alt+S。 欲了解更多信息,请参阅 代码语法样式:可选括号。 |
添加圆括号以显式指定运算优先级 | 添加可选括号以在 JetBrains Rider 设置 的 页面上指定的情况下明确操作优先级 Ctrl+Alt+S。 如需更多信息,请参阅 代码语法样式:可选括号。 |
为单行语句添加/移除大括号 | 根据 JetBrains Rider 设置 的 页面上指定的内容,添加或移除单个嵌套语句周围的可选大括号 Ctrl+Alt+S。 如需更多信息,请参阅 代码语法样式:单层嵌套语句的大括号。 |
为属性添加/移除方括号 | 根据 JetBrains Rider 设置 的 页面上指定的内容,应用多个属性的规则 Ctrl+Alt+S。 如需更多信息,请参阅 代码语法样式:多属性。 |
应用代码主体样式(表达式主体与块主体) | 根据 JetBrains Rider 设置 的 页面上指定的内容,应用类型成员主体(表达式主体或块主体)的首选项 Ctrl+Alt+S。 欲了解更多信息,请参阅 代码语法样式:类型成员的主体。 |
排列尾随逗号 | 根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中指定的内容,应用声明中带有多个项目的尾随逗号的首选项,以及类似的构造(对象、数组和集合初始化器,以及枚举和 switch 表达式)。 如需更多信息,请参阅 代码语法样式:尾随逗号。 |
应用对象创建样式('new()' 与 'new T()') | 根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中指定的内容,应用 C# 9.0 及更高版本中的目标类型 |
应用默认值样式(“default” 与 “default(T)”) | 根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中指定的内容,应用默认值表达式中可选类型指定的首选项。 如需更多信息,请参阅 代码语法样式:默认值表达式('default' 与 'default(T)')。 |
排列命名空间(文件作用域与块作用域) | 根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中指定的内容,应用 文件范围的命名空间声明的首选项。 如需更多信息,请参阅 代码语法样式:文件范围命名空间。 |
排列 null 检查模式样式 | 根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中指定的内容,应用 类型测试 'is' 运算符 (使用 |
排列限定符 | 应用类型成员限定的规则。 这些规则可在 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中配置。 欲了解更多信息,请参阅 代码语法样式:可选成员限定符。 |
修正内置类型引用 | 应用内置类型名称的规则(C# 关键字或 CLR 类型名称)。 该规则可在 JetBrains Rider 设置 的 页面上配置 Ctrl+Alt+S。 欲了解更多信息,请参阅 代码语法样式:内置类型引用。 |
C/C++ | |
为单条语句添加/移除大括号 | 应用 |
应用 'auto' 样式 | 根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中指定的内容,应用变量类型中 |
应用函数声明样式(正则与尾随返回值类型) | 根据 JetBrains Rider 设置 的 页面上指定的内容,应用函数声明中尾随或常规返回类型的首选样式 Ctrl+Alt+S。 |
应用嵌套命名空间样式 | 应用强制使用 C++17 语法声明嵌套命名空间的规则,该语法允许更简洁地声明多级命名空间。 该规则可在 JetBrains Rider 设置 的 页面上配置 Ctrl+Alt+S。 |
应用类型别名样式(typedef 与类型别名) | 根据 JetBrains Rider 设置 的 页面上指定的内容,应用定义类型同义词的首选方式 Ctrl+Alt+S。 |
排列 cv 限定符 | 应用 cv-限定符的首选顺序—— |
排列 include 指令中的斜杠(正斜杠与反斜杠) | 根据 JetBrains Rider 设置 的 页面上指定的内容,应用路径分隔符用于 |
在重写函数上排列说明符('virtual' 和/或 'override') | 应用覆盖函数的首选样式——覆盖函数和析构函数上应要求的说明符。 这些规则可在 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中配置。 |
对 include 指令排序 | 应用对 |
对成员初始值设定项排序 | 根据 JetBrains Rider 设置 的 页面上指定的内容,应用成员初始化器的顺序 Ctrl+Alt+S。 |
XAML | |
收起空标记 | 如果标记体为空,则移除结束标记。 |
ASP.NET/Razor | |
标准化特性值周围的引号 | 应用首选的引号样式:单引号 |
优化 import
C# | |
优化 'using' 指令 |
欲了解更多信息,请参阅 代码语法样式:命名空间导入。 |
在区域内包含 'using' 指令 | 如果选中此复选框,在清理期间将创建一个用于包装所有命名空间导入指令的新区域。 |
区域名称 | 允许为包装命名空间导入指令的区域指定名称。 |
缩短限定引用 | 在可能的情况下,通过导入命名空间,根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中配置的首选项,将完全限定名称替换为短名称。 |
Visual Basic | |
优化 'import' 指令 |
有关更多信息,请参见 代码语法样式:命名空间导入。 |
在区域内包含 'using' 指令 | 如果选中此复选框,在清理期间将创建一个用于包装所有命名空间导入指令的新区域。 |
区域名称 | 允许为包装命名空间导入指令的区域指定名称。 |
缩短限定引用 | 在可能的情况下,通过导入命名空间,根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中配置的首选项,将完全限定名称替换为短名称。 |
XAML | |
移除冗余命名空间别名 | 在清理范围内移除所有冗余的命名空间别名。 冗余别名也会通过 代码检查 检测到,并可通过快速修复移除。 |
TypeScript specific | |
优化 'import' 语句 | 使用此选项移除冗余的 'import' 语句或完全限定名称,根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中可配置的设置。 |
优化引用注释 | 使用此选项移除冗余的引用注释。 |
ASP.NET/Razor | |
优化 @Register 指令 | 移除未使用的 |
重新排列代码
C# | |
应用文件布局 | 根据 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中可配置的规则,重新排列文件中的类型成员。 如需更多信息,请参阅 使用文件和类型布局模式重新排列成员。 |
CSS | |
按字母顺序排列属性 | 按字母顺序重新排列 CSS 属性。 |
移除冗余并应用优化
C# | |
删除代码冗余 | 在 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中,在大多数语言的 代码中的冗余 类别下,JetBrains Rider 列出了数十种与代码检查相关的情况。 其中一些需要特别注意,您无法以批处理模式处理,但大多数可以在您在清理配置文件中选择 删除代码冗余 时自动修复。 |
如果可能,使用自动属性 | 使用自动属性替换简单属性及其对应的后台字段。 有关更多信息,请参见 使用自动属性。 |
如果可能,将字段设为只读 | 为在声明或构造函数中分配且仅具备读取用途的字段添加 |
如果可能,将自动属性设为只获取 | 移除自动属性中从构造函数/初始化器进行初始化且没有写入用途的冗余 默认情况下,JetBrains Rider 会根据关联的编译器自动检测 C# 版本。 不过,您可以 为项目明确指定目标 C# 版本——在解决方案资源管理器中按下 Alt+Enter ,并在 应用程序 页面的 项目属性 对话框中使用 语言版本 选择器。 要为 解决方案中的所有项目设置 C# 版本,请按照 此处的说明,在解决方案目录中的 Directory.Build.props 文件中指定它。 |
C/C++ | |
添加必需的 'typename' 和 'template' 关键字 | 添加缺少的 |
联接声明和赋值 | 将局部变量在所有路径上被读取前重新赋值的情况合并声明和赋值。 |
将局部变量设为 const | 为可以变为不可变的局部作用域对象添加 |
如果可能,将成员函数设为 'const' | 为不改变包含对象状态的成员函数添加 |
如果可能,将成员函数设为 'static' | 将成员函数设置为 |
移除冗余转换 | 移除冗余的强制转换表达式。 |
移除冗余的 'else' 关键字 | 移除上下文中冗余的 |
移除冗余的详细类型说明符 | 移除当不是用于声明新类或引用之前声明的结构被本地非类型声明隐藏时冗余的详述类型说明符。 |
移除冗余的 lambda 形参列表 | 移除参数为空的 lambda 中的冗余 |
移除冗余的成员初始值设定项 | 移除构造函数中与默认成员初始化器重复的成员初始化器。 |
移除冗余的括号 | 移除上下文中冗余的括号。 |
移除冗余限定符 | 移除上下文中冗余的限定符。 |
移除冗余说明符 | 移除上下文中冗余的说明符。 |
移除冗余语句 | 移除上下文中冗余的语句。 |
移除冗余模板实参 | 移除根据 C++17 类模板参数推导规则可以由语言推导的冗余模板参数。 |
移除冗余的 'typename' 和 'template' 关键字 | 移除上下文中冗余的 |
移除不可到达的代码 | 移除永远不会被执行的不必要代码。 |
移除未使用的 #include 指令 | 移除从未使用的 |
移除未使用的 lambda 捕获 | 移除如果局部变量被 lambda 捕获但未在 lambda 主体内使用的未使用捕获。 |
将 C 样式和函数样式的转换替换为 static 转换 | 将 C 风格、 |
将布尔上下文中的常量替换为布尔字面量 | 在布尔上下文中,用 |
将包含常量条件的 if 语句替换为 'if constexpr' | 当条件是编译时常量表达式时,用 |
将后缀运算符替换为前缀变体 | 将后缀操作符替换为前缀变体。 |
将智能指针构造函数替换为 make 函数 | 用标准( |
在可能的情况下,将 throw 表达式替换为 rethrow | 更新 |
将类型特征替换为相应的模板别名或变量模板 | 使用 C++14 别名模板缩短 C++11 类型特征表达式。 |
将指针上下文中的零值表达式替换为 nullptr | 在指针上下文中,用 |
用结构化绑定声明替换 'tie(..)' | 用结构化绑定声明替换 |
如果可能,对关联容器使用 'contains' | 将 |
用 'std::erase'/'std::eraseif' 替换 remove-erase 惯用法 | 将旧的擦除-移除习惯用法替换为 C++20 |
Visual Basic | |
删除代码冗余 | 在 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中,在大多数语言的 代码中的冗余 类别下,JetBrains Rider 列出了数十种与代码检查相关的情况。 其中一些需要特别注意,您无法以批处理模式处理,但大多数可以在您在清理配置文件中选择 删除代码冗余 时自动修复。 |
XAML | |
移除冗余 'Freeze' 特性 | 移除在上下文中冗余的 |
移除冗余修饰符特性 | 移除在上下文中冗余的 |
移除冗余名称特性 | 移除在上下文中冗余的 |
移除冗余资源 | 移除未使用的资源引用。 |
移除冗余空集合属性 setter | |
移除冗余附加属性 setter | 移除 |
移除冗余样式属性 setter | 移除 |
移除禁止的 name 特性 | 移除在上下文中不允许的 |
移除冗余定义 | 如果定义在上下文中是冗余的,则移除定义。 |
移除冗余 UpdateSourceTrigger 特性 | 移除在上下文中冗余的 |
移除冗余 Mode 特性 | 移除上下文中冗余的 |
移除冗余 span 特性 | 移除在上下文中冗余的 |
运行外部清理工具
C/C++ | |
应用 Clang-tidy 修复建议 | 在此节点中,您可以选择所有或特定的修复,这些修复将根据 Clang-Tidy 检查 应用。 即使在 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 中关闭了相应的检查,选定的修复也会被应用。 启用过多检查时请小心——代码清理对给定文件仅运行一次 Clang-Tidy,因此如果多个修复修改了同一代码块,可能会导致更改冲突。 |