JetBrains Rider 2025.1 Help

使用 Clang-Format

在 C++ 文件中,JetBrains Rider 支持在 Clang-Format 中定义的格式化样式。 默认情况下,Clang-Format 配置文件会自动用作格式化样式设置的来源。

什么是 Clang-Format,JetBrains Rider 如何支持它?

Clang-Format 是一种广泛使用的 C++ 代码格式化工具。 它提供了一种选项,可以在 YAML 格式的文件中定义代码样式选项——文件名为 .clang-format 或 _clang-format ——这些文件通常会成为您项目的一部分,用于存储所有代码样式规则。

要查看 Clang-Format 样式选项的完整列表以及配置文件的示例,请查看 Clang-Format 文档。

在 JetBrains Rider 中有两种使用 Clang-Format 的方法:

  • 如果您的项目代码样式已在 Clang-Format 文件中配置,JetBrains Rider 的代码格式化引擎可以使用这些样式中的 大部分样式 来格式化 C++ 文件,此外还支持其原有样式。 请注意,如果存在冲突, .clang-format 文件中的设置将覆盖 *.DotSettings 中的设置。

  • 如果您更喜欢默认的 LLVM 样式格式化,并希望使用 clang-format 作为代码格式化工具,您可以在 JetBrains Rider 设置 的 编辑器 | 代码样式 | C++ | 常规 页面中选择 Clang-format 下的 C++ 格式化引擎 ,并可选地指定一个自定义的 Clang-format 可执行文件。 在这种情况下, .clang-format 配置文件将被自动读取。

在您的解决方案中使用 Clang-Format

默认情况下,即使您选择使用 ReSharper C++ 格式化引擎,JetBrains Rider 也会考虑 Clang-Format 属性,并且这些属性将覆盖在 JetBrains Rider 设置 中定义的偏好设置以及 EditorConfig 样式。 如果您希望 JetBrains Rider 忽略 Clang-Format 样式的代码格式化和代码语法,请在 JetBrains Rider 设置 的 编辑器 | 代码样式 | C++ | 常规 页面中清除相应的复选框。

当启用 Clang-Format 支持并且存在影响当前文件的 .clang-format 或 _clang-format 文件时,JetBrains Rider 将帮助您了解应用了哪些 Clang-Format 样式以及这些设置的来源:

  • 在 JetBrains Rider 的 C++ 格式化选项页面上,如果页面上的至少一个偏好设置被当前文件的 Clang-Format 样式覆盖,您将看到一个黄色警告,每个被覆盖的偏好设置也会以黄色突出显示。 例如:

    被 Clang-Format 样式覆盖的代码格式选项
  • 在 代码样式配置对话框 中,您可以查看并研究所有影响当前文件的 .clang-format 和 _clang-format 文件:

    JetBrains Rider。 代码样式配置对话框

将代码样式设置导出到 Clang-Format

如果您打算通过 Clang-Format 共享代码样式设置,您可能希望将 JetBrains Rider 中已配置的样式导出到 .clang-format 文件。

  1. 按 Ctrl+Alt+S 或从菜单中选择 文件 | 设置 (Windows 和 Linux)或 JetBrains Rider | 首选项 (macOS),然后在左侧选择 编辑器 | 代码样式 | C++ | 常规。

  2. 点击 将当前样式写入 .clang-format。 这将打开 导出到 .clang-format 对话框。

  3. 默认情况下,JetBrains Rider 会将设置写入当前解决方案根目录中的一个新的 .clang-format 文件。 如果存在一个或多个 .clang-format 文件,JetBrains Rider 将使用目录层次结构中最近的文件来保存设置。 如果需要,您可以使用对话框顶部的路径选择器更改目标文件。

  4. 要进行更详细的配置,您可以展开 显示其他选项 并选择以下选项:

    BasedOnStyle

    设置相应的选项以定义 默认情况下所有选项使用的样式。

    隐藏与所选基础样式一致的选项

    与在 BasedOnStyle 中选择的基础样式中定义的值相同的选项将不会被导出。

    导出 Cpp 设置

    定义是否导出影响 C++ 代码的 Clang-Format 选项。

  5. 如果指定位置中已存在一个 .clang-format 文件,则该文件中已有属性的值可能与 JetBrains Rider 即将保存的值之间存在冲突。 这些属性将以红色显示,如果您继续保存,冲突将以新生成的值为准。

  6. 点击 导出。 JetBrains Rider 将在指定位置创建或更新 .clang-format 文件。

在 上下文配置 格式化规则后,您也可以将格式化样式保存到 Clang-Format。

支持的 Clang-Format 选项

BasedOnStyle

AlignConsecutiveAssignments

AlignConsecutiveDeclarations

AlignAfterOpenBracket

AlignOperands

AlignTrailingComments

AllowShortCaseLabelsOnASingleLine

AlwaysBreakAfterDefinitionReturnType

AlwaysBreakAfterReturnType

AlwaysBreakTemplateDeclarations

BinPackArguments

BinPackParameters

BreakBeforeBraces (除了 自定义 和 Linux 中的类定义)

BreakBeforeTernaryOperators

BreakConstructorInitializersBeforeComma

ColumnLimit

ConstructorInitializerAllOnOneLineOrOnePerLine

IncludeBlocks

IncludeCategories

IncludeIsMainRegex

IndentCaseLabels

IndentWidth

IndentWrappedFunctionNames

MaxEmptyLinesToKeep

NamespaceIndentation

PointerAlignment

SortIncludes

SpaceAfterCStyleCast

SpaceAfterTemplateKeyword

SpaceBeforeParens

SpacesInAngles

SpacesInParentheses

SpacesInSquareBrackets

TabWidth

UseTab

2025年 7月 31日