C++ 中的代码样式辅助
ReSharper 提供了许多功能来保持您的代码整洁清晰。 这些功能与大多数其他 ReSharper 的功能紧密结合,帮助您根据特定的代码样式生成代码并更改现有的代码库。 代码样式包括命名标准、格式规则以及许多其他细微方面,可以配置到非常详细的级别,并在团队中共享。
与其他语言类似,所有 C++ 代码样式偏好都可以通过单个命令在所需范围内应用,使用 在范围内修复或 代码清理。
请注意,内置的代码清理配置文件不包括某些 C++ 特定任务,因此您需要 创建一个新的自定义配置文件以启用它们。管理和应用代码格式规则
代码样式的一个重要方面是如何格式化代码,即如何使用空格、制表符和换行符来排列代码元素,是否以及如何使用制表符进行缩进,是否以及如何换行长行代码等。
ReSharper 的广泛代码格式规则集具有默认配置,该配置考虑了默认的 Visual Studio 格式选项以及众多最佳实践。 您可以 配置 格式规则的每个细节,并在代码中强制执行这些规则。 当 ReSharper 使用 代码补全 和 代码生成 功能生成新代码时,应用 代码模板 或执行 重构 时,这些规则都会被应用。 格式规则也可以 应用于现有代码 ,从当前选择、当前文件到更大范围,直至整个解决方案。
ReSharper 使用 共享设置 机制存储格式偏好。 您可以在 组下的选项页面中 配置格式规则。 您还可以在 EditorConfig 和 Clang-Format 文件中 存储和共享格式化设置。
调整单个格式化偏好的另一种方法是从现有代码示例中学习格式化规则,该示例可以是选定的代码块、当前文件、一组文件、一个或多个项目或整个解决方案。 ReSharper 将分析选定的示例并列出与您当前设置不同的格式化规则。 然后,您可以查看检测到的规则,根据需要更改它们,并将其保存到所需的 设置层或 .editorconfig或 .clang-format格式的配置文件中。
更多信息请参阅 从现有代码中学习格式化规则。
命名样式
ReSharper 帮助您定义、控制并应用代码中符号的所需命名样式。 有一组规则,每条规则都针对具有特定约束条件的标识符。 每条规则可以有一个或多个关联样式,这些样式定义了复合词的大小写、下划线、后缀、前缀等。
当 ReSharper 使用 代码补全和 代码生成功能生成新代码时,应用 代码模板或执行 重构时,这些规则都会被考虑在内。 ReSharper 还可以帮助您 检测并修复命名规则的违规情况。 如果需要,可以 配置或禁用命名规则的自动检查。
On the page of ReSharper 选项 Alt+R, O , you can reset your ruleset to one of the predefined naming style schemes (STL, Google, LLVM, CamelCase, Microsoft). 您可以按原样使用这些方案,或者基于预定义方案 配置您自己的规则集。
自定义命名规则集
从主菜单中选择 或按 Alt+R O ,然后在左侧选择 。
在页面的右上角,使用 重置为方案 选择器选择一个命名样式方案作为规则集的基础。
您将看到一个标识符和其他配置了命名规则的项目列表。
要更改某个项目的规则,请选择它并单击 编辑
,或者直接双击它。 要为未列出的项目添加规则,请单击 添加
。在打开的对话框中,您可以配置新的或修改后的规则:

在对话框的左侧,您可以指定规则的描述——这有助于理解规则适用于哪些类型的标识符。 左侧的其他控件允许您通过标识符的种类、说明符和可访问性来限制规则的适用性。
请注意,说明符是通过三态复选框配置的:勾选表示仅适用于此说明符,清除表示仅不适用于此说明符,方框表示适用于有和没有此说明符的情况。 上图显示了一个将应用于
public static函数的规则。在对话框的右侧,您可以为规则配置样式。 您至少需要一个样式。 如果您希望为此规则允许其他样式,请单击 添加
。 当单个规则有多个样式时,如果相应的符号名称匹配其中一个样式,ReSharper 不会 报告代码样式违规。 否则,ReSharper 会检测到代码样式违规,并建议根据默认样式(列表中的第一个样式)重命名符号。 要更改默认样式,请使用 上移
和 下移
按钮。要配置特定样式,请在列表中选择它并配置前缀、后缀,并选择一个命名样式。
要删除不必要的样式,请在列表中选择它并单击 删除
。如果需要,您可以禁用 报告与此规则相关的代码样式违规,同时仍允许 ReSharper 检测其他命名规则违规。 为此,请清除 启用检查 复选框。
如果规则编辑器是从选项对话框中打开的,请单击 设置 关闭 编辑规则设置 对话框。
当您返回到 命名样式 设置页面时,使用 上移
和 下移
按钮更改规则的优先级——如果多个规则匹配特定的标识符种类,则列表中较高的规则适用。 这意味着限制更多的规则应放在限制较少的规则之上。 例如,规则 Functions和 Public static functions都适用于 public static函数,因此 Public static functions规则被放在列表的更高位置:
单击 选项 对话框中的 保存 应用修改,让 ReSharper 选择保存位置,或者通过从 保存到 选择器中选择特定的设置层来保存修改。 有关更多信息,请参见 管理和共享 resharper 设置。
如果您 正在处理 UE4 项目 ,ReSharper 将自动应用与 Unreal Engine 编码标准对应的命名规则集,该规则集不可配置。 这意味着,当您处理 UE4 项目时,在 ReSharper 选项 Alt+R, O 的 页面上配置的规则将被忽略。 如果您仍希望使用您配置的规则集而不是 Unreal Engine 编码标准,您可以禁用相应的检查。

排列 cv 限定符
ReSharper 帮助您在 生成的代码中排列 cv 限定符。 在 ReSharper 选项的 页面上,您可以指定是否将 cv 限定符放在类型说明符之前或之后,以及 const 和 volatile 修饰符的顺序。
Include 指令样式
在 ReSharper 选项的 页面上,您可以指定在 生成的代码中的 include 指令中使用正斜杠还是反斜杠作为路径分隔符。 您还可以指定是否在头文件中生成前向声明。
排序 include
ReSharper 允许您对 #include 指令进行排序,重新排列现有组并创建由空行分隔的新组。
当插入点位于 #include 指令上时, 对 #include 指令排序 子菜单中有三个上下文操作:
排序 #include 指令 | |
|---|---|
对 #include 指令排序和重新分组 | 此操作将所有 ![]() |
分别对每个 #include 组排序 | 此操作独立地对每个组内的 ![]() |
仅对当前 #include 组排序 | 此操作对插入点所在的组进行排序。 |
You can configure the ordering rules on the page of ReSharper 选项 Alt+R, O .
ReSharper 支持从 .clang-format 文件中导入排序设置。 When 从 .clang-format 样式读取代码样式 is checked on the page of ReSharper 选项
Alt+R, O
, the IncludeBlocks, IncludeCategories, IncludeIsMainRegex, and SortIncludes settings from your .clang-format file will be used to sort the #include directives in the same way that clang-format does.
排序 include 也可以通过 代码清理 应用。
默认指针初始化器样式
您可以指定 0、 nullptr 或 NULL 作为指针初始化器的首选初始化器,例如: const char *foo = nullptr。 您可以在 ReSharper 选项的 页面上更改您的偏好。
文件头样式
使用文件头记录版权声明和其他标识信息是一种常见做法。 ReSharper 允许您配置默认的文件头文本,并自动将其插入到源文件中,或用它替换现有的文件头。
您可以在 ReSharper 选项 或 .editorconfig 文件 中配置文件头样式,然后将其添加到使用 文件模板 创建的新文件中,并使用 代码清理 插入或替换现有文件中的文件头。
为了确保由不同团队成员创建和编辑的文件具有相同的文件头样式,请与您的团队 共享文件头设置。

