ReSharper 2025.2 Help

使用 Clang-Format

在 C++ 文件(以及部分 JavaScript 和 TypeScript 文件)中,ReSharper 支持 Clang-Format 定义的格式样式。 默认情况下,Clang-Format 配置文件会自动用作格式样式设置的来源。

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

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

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

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

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

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

解决方案中的 Clang-Format

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

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

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

    被 Clang-Format 样式覆盖的代码格式选项
  • 文件格式信息窗口 中,您可以查看并研究所有影响当前文件的 .clang-format _clang-format 文件:

    ReSharper。 文件格式信息窗口

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

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

  1. 从主菜单中选择 ReSharper | 选项 或按 Alt+R O ,然后在左侧选择 代码编辑 | 通用格式化样式

  2. 代码样式配置文件 部分,单击 将当前样式写入 .clang-format。 这将打开 导出到 .clang-format 对话框。

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

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

    BasedOnStyle

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

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

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

    导出 Cpp 设置

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

    导出 JavaScript 设置

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

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

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

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

支持的 Clang-Format 选项

选项

支持的语言

BasedOnStyle

C++

AlignConsecutiveAssignments

C++

AlignConsecutiveDeclarations

C++

AlignAfterOpenBracket

C++

AlignOperands

C++

AlignTrailingComments

C++

AllowShortCaseLabelsOnASingleLine

C++

AlwaysBreakAfterDefinitionReturnType

C++

AlwaysBreakAfterReturnType

C++

AlwaysBreakTemplateDeclarations

C++

BinPackArguments

C++

BinPackParameters

C++

BreakBeforeBraces (不包括 CustomLinux 中的类定义)

C++

BreakBeforeTernaryOperators

C++

BreakConstructorInitializersBeforeComma

C++

ColumnLimit

C++JavaScriptTypeScript

ConstructorInitializerAllOnOneLineOrOnePerLine

C++

IncludeBlocks

C++

IncludeCategories

C++

IncludeIsMainRegex

C++

IndentCaseLabels

C++

IndentWidth

C++JavaScriptTypeScript

IndentWrappedFunctionNames

C++

MaxEmptyLinesToKeep

C++

NamespaceIndentation

C++

PointerAlignment

C++

SortIncludes

C++

SpaceAfterCStyleCast

C++

SpaceAfterTemplateKeyword

C++

SpaceBeforeParens

C++

SpacesInAngles

C++

SpacesInParentheses

C++

SpacesInSquareBrackets

C++

TabWidth

C++JavaScriptTypeScript

UseTab

C++JavaScriptTypeScript

此功能在以下语言和技术中 受支持

语言:C#

语言:VB.NET

语言:C++

语言:ASP.NET

语言:Razor

语言:XAML

语言:Resx

语言:构建脚本

语言:SQL

功能在 C# 中不可用

此功能在 Visual Basic 中不可用

此功能在 C++ 中可用

此功能在 ASP.NET 中不可用

此功能在 Razor 中不可用

此功能在 XAML 中不可用

此功能在资源文件中不可用

此功能在构建脚本文件中不可用

此功能在 SQL/NoSQL 文件和注入中不可用

最后修改日期: 2025年 9月 27日