---
# 指定格式化的语言为 C++
Language: Cpp
# 基于的基础样式,当前注释掉了 WebKit 样式
# BasedOnStyle: WebKit
# 访问修饰符(如 public、private、protected)的缩进偏移量,-4 表示向左缩进 4 个单位
AccessModifierOffset: -4
# 打开括号后的对齐方式,Align 表示对齐
AlignAfterOpenBracket: Align
# 结构体数组的对齐方式,Left 表示左对齐
AlignArrayOfStructures: Left
# 连续赋值语句的对齐设置
AlignConsecutiveAssignments:
# 是否启用对齐
Enabled: true
# 是否跨空行对齐
AcrossEmptyLines: false
# 是否跨注释对齐
AcrossComments: false
# 是否对齐复合语句
AlignCompound: true
# 是否在操作符周围填充空格
PadOperators: true
# 连续位域的对齐设置
AlignConsecutiveBitFields:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: true
PadOperators: true
# 连续声明语句的对齐设置
AlignConsecutiveDeclarations:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: true
PadOperators: true
# 连续宏定义的对齐设置
AlignConsecutiveMacros:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: true
PadOperators: true
# 转义换行符的对齐方式,Left 表示左对齐
AlignEscapedNewlines: Left
# 操作数的对齐方式,AlignAfterOperator 表示在操作符后对齐
AlignOperands: AlignAfterOperator
# 是否对齐行尾注释
AlignTrailingComments: true
# 是否允许将所有参数放在下一行
AllowAllArgumentsOnNextLine: true
# 是否允许将函数声明的所有参数放在下一行
AllowAllParametersOfDeclarationOnNextLine: false
# 是否允许短枚举类型写在同一行
AllowShortEnumsOnASingleLine: true
# 短代码块的单行显示规则,Empty 表示仅空块可以单行显示
AllowShortBlocksOnASingleLine: Empty
# 是否允许短 case 标签写在同一行
AllowShortCaseLabelsOnASingleLine: false
# 短函数的单行显示规则,Inline 表示内联函数可以单行显示
AllowShortFunctionsOnASingleLine: Inline
# 短 lambda 表达式的单行显示规则,All 表示所有短 lambda 都可以单行显示
AllowShortLambdasOnASingleLine: All
# 短 if 语句的单行显示规则,Never 表示从不单行显示
AllowShortIfStatementsOnASingleLine: Never
# 短循环语句的单行显示规则,false 表示不允许单行显示
AllowShortLoopsOnASingleLine: false
# 定义返回类型后的换行规则,None 表示不强制换行
AlwaysBreakAfterDefinitionReturnType: None
# 返回类型后的换行规则,None 表示不强制换行
AlwaysBreakAfterReturnType: None
# 多行字符串前是否总是换行
AlwaysBreakBeforeMultilineStrings: false
# 模板声明是否总是换行
AlwaysBreakTemplateDeclarations: Yes
# 特殊属性宏列表
AttributeMacros:
- __capability
# 是否对函数参数进行二进制打包
BinPackArguments: true
# 是否对函数参数声明进行二进制打包
BinPackParameters: false
# 大括号的包裹规则
BraceWrapping:
# case 标签后是否换行
AfterCaseLabel: false
# 类定义后是否换行
AfterClass: false
# 控制语句后是否换行,MultiLine 表示多行时换行
AfterControlStatement: MultiLine
# 枚举定义后是否换行
AfterEnum: false
# 函数定义后是否换行
AfterFunction: true
# 命名空间定义后是否换行
AfterNamespace: false
# Objective-C 声明后是否换行
AfterObjCDeclaration: false
# 结构体定义后是否换行
AfterStruct: false
# 联合体定义后是否换行
AfterUnion: false
# 外部代码块后是否换行
AfterExternBlock: false
# catch 前是否换行
BeforeCatch: false
# else 前是否换行
BeforeElse: false
# lambda 函数体前是否换行
BeforeLambdaBody: false
# while 前是否换行
BeforeWhile: false
# 大括号是否缩进
IndentBraces: false
# 空函数是否拆分显示
SplitEmptyFunction: true
# 空记录(如结构体、类)是否拆分显示
SplitEmptyRecord: true
# 空命名空间是否拆分显示
SplitEmptyNamespace: true
# 二元操作符前是否换行,All 表示总是换行
BreakBeforeBinaryOperators: All
# 概念声明前是否换行,Always 表示总是换行
BreakBeforeConceptDeclarations: Always
# 大括号前的换行规则,Custom 表示自定义规则
BreakBeforeBraces: Custom
# 继承列表逗号前是否换行
BreakBeforeInheritanceComma: false
# 继承列表的换行位置,BeforeColon 表示在冒号前换行
BreakInheritanceList: BeforeColon
# 三元操作符前是否换行
BreakBeforeTernaryOperators: true
# 构造函数初始化列表逗号前是否换行
BreakConstructorInitializersBeforeComma: false
# 构造函数初始化列表的换行位置,BeforeComma 表示在逗号前换行
BreakConstructorInitializers: BeforeComma
# Java 字段注解后是否换行
BreakAfterJavaFieldAnnotations: false
# 字符串字面量是否拆分换行
BreakStringLiterals: true
# 每行的最大字符数限制
ColumnLimit: 120
# 匹配注释编译指令的正则表达式
CommentPragmas: '^ IWYU pragma:'
# 限定符(如 const、volatile)的对齐方式,Leave 表示保持原样
QualifierAlignment: Leave
# 是否紧凑显示命名空间
CompactNamespaces: false
# 构造函数初始化列表的缩进宽度
ConstructorInitializerIndentWidth: 4
# 续行的缩进宽度
ContinuationIndentWidth: 4
# 是否使用 C++11 花括号初始化列表样式
Cpp11BracedListStyle: true
# 是否自动检测行尾结束符
DeriveLineEnding: true
# 是否自动检测指针对齐方式
DerivePointerAlignment: false
# 是否禁用格式化
DisableFormat: false
# 访问修饰符后是否空行,Never 表示从不空行
EmptyLineAfterAccessModifier: Never
# 访问修饰符前是否空行,LogicalBlock 表示在逻辑块前空行
EmptyLineBeforeAccessModifier: LogicalBlock
# 是否实验性地自动检测二进制打包
ExperimentalAutoDetectBinPacking: false
# 构造函数初始化列表的打包方式,BinPack 表示二进制打包
PackConstructorInitializers: BinPack
# 基于的基础样式,空表示不基于任何样式
BasedOnStyle: ''
# 构造函数初始化列表是否全部在一行或每行一个
ConstructorInitializerAllOnOneLineOrOnePerLine: false
# 是否允许将所有构造函数初始化列表放在下一行
AllowAllConstructorInitializersOnNextLine: true
# 是否修复命名空间注释
FixNamespaceComments: true
# foreach 宏列表
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
# if 宏列表
IfMacros:
- KJ_IF_MAYBE
# 包含头文件块的处理方式,Preserve 表示保持原样
IncludeBlocks: Preserve
# 包含头文件的分类规则
IncludeCategories:
- # 匹配头文件路径的正则表达式
Regex: '^"(llvm|llvm-c|clang|clang-c)/'
# 优先级
Priority: 2
# 排序优先级
SortPriority: 0
# 是否区分大小写
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
# 匹配主文件包含的正则表达式
IncludeIsMainRegex: '(Test)?$'
# 匹配主源文件包含的正则表达式
IncludeIsMainSourceRegex: ''
# 访问修饰符是否缩进
IndentAccessModifiers: false
# case 标签是否缩进
IndentCaseLabels: false
# case 代码块是否缩进
IndentCaseBlocks: false
# goto 标签是否缩进
IndentGotoLabels: false
# 预处理指令的缩进方式,None 表示不缩进
IndentPPDirectives: None
# 外部代码块的缩进方式,AfterExternBlock 表示在外部代码块后缩进
IndentExternBlock: AfterExternBlock
# requires 子句是否缩进
IndentRequiresClause: true
# 缩进宽度
IndentWidth: 4
# 换行的函数名是否缩进
IndentWrappedFunctionNames: false
# 是否自动插入大括号
InsertBraces: false
# 插入尾随逗号的规则,None 表示不插入
InsertTrailingCommas: None
# JavaScript 引号的处理方式,Leave 表示保持原样
JavaScriptQuotes: Leave
# JavaScript 导入语句是否换行
JavaScriptWrapImports: true
# 是否保留代码块开头的空行
KeepEmptyLinesAtTheStartOfBlocks: true
# lambda 函数体的缩进方式,Signature 表示按签名缩进
LambdaBodyIndentation: Signature
# 宏块开始标记
MacroBlockBegin: ''
# 宏块结束标记
MacroBlockEnd: ''
# 允许保留的最大连续空行数
MaxEmptyLinesToKeep: 1
# 命名空间的缩进方式,None 表示不缩进
NamespaceIndentation: None
# Objective-C 协议列表的二进制打包方式,Auto 表示自动
ObjCBinPackProtocolList: Auto
# Objective-C 代码块的缩进宽度
ObjCBlockIndentWidth: 4
# Objective-C 嵌套块参数前是否换行
ObjCBreakBeforeNestedBlockParam: true
# Objective-C 属性后是否加空格
ObjCSpaceAfterProperty: true
# Objective-C 协议列表前是否加空格
ObjCSpaceBeforeProtocolList: true
# 断开赋值语句的惩罚值,值越大越不容易断开
PenaltyBreakAssignment: 1000
# 在第一个函数调用参数前断开的惩罚值
PenaltyBreakBeforeFirstCallParameter: 19
# 断开注释的惩罚值
PenaltyBreakComment: 300
# 断开第一个 << 操作符的惩罚值
PenaltyBreakFirstLessLess: 120
# 断开开括号的惩罚值
PenaltyBreakOpenParenthesis: 0
# 断开字符串的惩罚值
PenaltyBreakString: 1000
# 断开模板声明的惩罚值
PenaltyBreakTemplateDeclaration: 10
# 超出列限制字符的惩罚值
PenaltyExcessCharacter: 1000000
# 返回类型单独一行的惩罚值
PenaltyReturnTypeOnItsOwnLine: 1000
# 缩进空白的惩罚值
PenaltyIndentedWhitespace: 0
# 指针的对齐方式,Right 表示右对齐
PointerAlignment: Right
# 预处理指令的缩进宽度,-1 表示使用 IndentWidth 的值
PPIndentWidth: -1
# 引用的对齐方式,Pointer 表示和指针对齐方式相同
ReferenceAlignment: Pointer
# 是否重新排版注释
ReflowComments: false
# 是否移除 LLVM 风格的大括号
RemoveBracesLLVM: false
# requires 子句的位置,OwnLine 表示单独一行
RequiresClausePosition: OwnLine
# 分离定义块的规则,Leave 表示保持原样
SeparateDefinitionBlocks: Leave
# 短命名空间的最大行数
ShortNamespaceLines: 1
# 头文件是否排序,Never 表示不排序
SortIncludes: Never
# Java 静态导入的排序方式,Before 表示排在前面
SortJavaStaticImport: Before
# using 声明是否排序
SortUsingDeclarations: true
# C 风格类型转换后是否加空格
SpaceAfterCStyleCast: false
# 逻辑非操作符后是否加空格
SpaceAfterLogicalNot: false
# template 关键字后是否加空格
SpaceAfterTemplateKeyword: true
# 赋值操作符前是否加空格
SpaceBeforeAssignmentOperators: true
# case 冒号前是否加空格
SpaceBeforeCaseColon: false
# C++11 花括号初始化列表前是否加空格
SpaceBeforeCpp11BracedList: true
# 构造函数初始化列表冒号前是否加空格
SpaceBeforeCtorInitializerColon: true
# 继承列表冒号前是否加空格
SpaceBeforeInheritanceColon: true
# 括号前加空格的规则,ControlStatements 表示仅控制语句前加空格
SpaceBeforeParens: ControlStatements
# 括号前加空格的详细选项
SpaceBeforeParensOptions:
# 控制语句后是否加空格
AfterControlStatements: true
# foreach 宏后是否加空格
AfterForeachMacros: true
# 函数定义名后是否加空格
AfterFunctionDefinitionName: false
# 函数声明名后是否加空格
AfterFunctionDeclarationName: false
# if 宏后是否加空格
AfterIfMacros: true
# 重载操作符后是否加空格
AfterOverloadedOperator: false
# requires 子句中是否加空格
AfterRequiresInClause: false
# requires 表达式中是否加空格
AfterRequiresInExpression: false
# 非空括号前是否加空格
BeforeNonEmptyParentheses: false
# 指针限定符周围的空格处理方式,Default 表示默认方式
SpaceAroundPointerQualifiers: Default
# 范围 for 循环冒号前是否加空格
SpaceBeforeRangeBasedForLoopColon: true
# 空代码块中是否加空格
SpaceInEmptyBlock: true
# 空括号中是否加空格
SpaceInEmptyParentheses: false
# 行尾注释前的空格数
SpacesBeforeTrailingComments: 1
# 尖括号中是否加空格,Never 表示从不加空格
SpacesInAngles: Never
# 条件语句中是否加空格
SpacesInConditionalStatement: false
# 容器字面量中是否加空格
SpacesInContainerLiterals: true
# C 风格类型转换括号中是否加空格
SpacesInCStyleCastParentheses: false
# 行注释前缀的空格数设置
SpacesInLineCommentPrefix:
# 最小空格数
Minimum: 1
# 最大空格数,-1 表示无限制
Maximum: -1
# 括号中是否加空格
SpacesInParentheses: false
# 方括号中是否加空格
SpacesInSquareBrackets: false
# 方括号前是否加空格
SpaceBeforeSquareBrackets: false
# 位域冒号周围的空格处理方式,Both 表示两边都加空格
BitFieldColonSpacing: Both
# 指定使用的 C++ 标准
Standard: c++11
# 类似语句属性的宏列表
StatementAttributeLikeMacros:
- Q_EMIT
# 语句宏列表
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
# 制表符宽度
TabWidth: 4
# 是否使用 CRLF 作为行尾结束符
UseCRLF: false
# 是否使用制表符,Never 表示从不使用
UseTab: Never
# 对空白敏感的宏列表
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
...