---
Language: Cpp
# BasedOnStyle: Google
# ===== 缩进 =====
IndentWidth: 2 # 基础缩进2空格
TabWidth: 2 # Tab宽度2(仅用于计算,实际不插入Tab)
UseTab: Never # 禁止使用Tab,全部用空格
ContinuationIndentWidth: 4 # 续行缩进4空格(如长参数换行后对齐)
ConstructorInitializerIndentWidth: 4 # 构造函数初始化列表缩进4空格
ConstructorInitializerAllOnOneLineOrOnePerLine: true # 构造函数初始化列表要么全行,要么每个成员一行
AccessModifierOffset: -1 # public/private等访问修饰符相对类体缩进-1(即与类声明齐平)
IndentCaseLabels: true # switch case标签缩进一级
IndentPPDirectives: None # 预处理指令(#include/#ifdef等)不额外缩进
IndentWrappedFunctionNames: false # 换行后的函数名不额外缩进
NamespaceIndentation: None # namespace内部不缩进
# ===== 行宽与换行 =====
ColumnLimit: 120 # 每行最大120字符
MaxEmptyLinesToKeep: 1 # 最多保留1个空行
KeepEmptyLinesAtTheStartOfBlocks: false # 块开头不保留空行
BreakBeforeBraces: Attach # 大括号跟在上一行(K&R/Google风格:if() {)
AlwaysBreakBeforeMultilineStrings: true # 多行字符串总是在字符串前换行
AlwaysBreakTemplateDeclarations: Yes # template声明总是换行
BreakBeforeBinaryOperators: None # 二元运算符不提前换行(运算符留在行尾)
BreakBeforeTernaryOperators: true # 三元运算符?和:前换行
BreakStringLiterals: true # 允许拆断字符串字面量
BreakConstructorInitializers: BeforeColon # 构造函数初始化列表在:前换行
BreakConstructorInitializersBeforeComma: false # 构造函数初始化列表不在逗号前换行
BreakInheritanceList: BeforeColon # 继承列表在:前换行
BreakBeforeInheritanceComma: false
AllowShortBlocksOnASingleLine: false # 短块(if body)不压缩到一行
AllowShortCaseLabelsOnASingleLine: false # 短case标签不压缩到一行
AllowShortFunctionsOnASingleLine: Empty # 只有空函数体可压缩到一行
AllowShortIfStatementsOnASingleLine: true # 短if语句(无else)可压缩到一行
AllowShortLoopsOnASingleLine: true # 短while/for循环可压缩到一行
# ===== 对齐 =====
AlignAfterOpenBracket: Align # 括号开后的内容对齐
AlignOperands: true # 二元运算符两侧对齐
AlignTrailingComments: true # 行尾注释对齐
SpacesBeforeTrailingComments: 2 # 行尾注释前2个空格
AlignConsecutiveAssignments: false # 不对齐连续赋值
AlignConsecutiveDeclarations: false # 不对齐连续声明
AlignEscapedNewlines: Left # 反斜杠续行的\左对齐
# ===== 参数/模板打包 =====
BinPackArguments: true # 函数调用参数允许打包(同行放多个)
BinPackParameters: true # 函数声明参数允许打包
AllowAllParametersOfDeclarationOnNextLine: true # 允许参数全放到下一行
Cpp11BracedListStyle: true # C++11花括号列表风格
# ===== 大括号(BraceWrapping,仅在BreakBeforeBraces非Attach时生效) =====
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
# ===== 空格 =====
SpaceBeforeParens: ControlStatements # 控制语句(if/for/while)的括号前加空格,函数调用不加
SpaceAfterCStyleCast: false # C风格类型转换后不加空格
SpaceAfterTemplateKeyword: true # template关键字后加空格
SpaceBeforeAssignmentOperators: true # 赋值运算符前加空格
SpaceBeforeCpp11BracedList: false # C++11花括号列表前不加空格
SpaceBeforeCtorInitializerColon: true # 构造函数初始化冒号前加空格
SpaceBeforeInheritanceColon: true # 继承冒号前加空格
SpaceBeforeRangeBasedForLoopColon: true # range-based for的冒号前加空格
SpaceInEmptyParentheses: false # 空括号内不加空格
SpacesInAngles: false # 模板尖括号内不加空格
SpacesInContainerLiterals: true # 容器字面量{内加空格
SpacesInCStyleCastParentheses: false # C风格转换括号内不加空格
SpacesInParentheses: false # 普通括号内不加空格
SpacesInSquareBrackets: false # 方括号内不加空格
PointerAlignment: Right # 指针*靠右(int *p, 不是 int* p)
# ===== 返回类型换行 =====
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
# ===== 注释 =====
ReflowComments: true # 重排注释以适应行宽
FixNamespaceComments: true # 自动修正namespace结尾注释}// namespace ns
CommentPragmas: '^ IWYU pragma:' # IWYU pragma注释不被重排
# ===== Include排序 =====
SortIncludes: false # 不自动排序#include
IncludeBlocks: Preserve # 保持include块原样
IncludeIsMainRegex: '([-_](test|unittest))?$'
IncludeCategories:
- Regex: '^<ext/.*\.h>'
Priority: 2
- Regex: '^<.*\.h>'
Priority: 1
- Regex: '^<.*'
Priority: 2
- Regex: '.*'
Priority: 3
# ===== 宏 =====
ForEachMacros:
- Q_FOREACH
- BOOST_FOREACH
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
MacroBlockBegin: ''
MacroBlockEnd: ''
# ===== 其他 =====
Standard: Auto
CompactNamespaces: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
SortUsingDeclarations: true # using声明按字母排序
# ===== Penalty(影响换行决策的权重,值越大越不愿在该处换行)=====
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000 # 超出行宽代价极高,优先换行
PenaltyReturnTypeOnItsOwnLine: 200
# ===== RawString格式 =====
RawStringFormats:
- Language: Cpp
Delimiters:
- cc
- CC
- cpp
- Cpp
- CPP
- 'c++'
- 'C++'
CanonicalDelimiter: ''
BasedOnStyle: google
- Language: TextProto
Delimiters:
- pb
- PB
- proto
- PROTO
EnclosingFunctions:
- EqualsProto
- EquivToProto
- PARSE_PARTIAL_TEXT_PROTO
- PARSE_TEST_PROTO
- PARSE_TEXT_PROTO
- ParseTextOrDie
- ParseTextProtoOrDie
CanonicalDelimiter: ''
BasedOnStyle: google
# ===== ObjC(本项目不使用,保持默认值)=====
ObjCBinPackProtocolList: Never
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
# ===== BreakAfterJavaFieldAnnotations(Java,本项目不使用)=====
BreakAfterJavaFieldAnnotations: false