.clang-format 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. ---
  2. # 语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto
  3. Language: Cpp
  4. # BasedOnStyle: LLVM
  5. # 访问说明符(public、private等)的偏移
  6. AccessModifierOffset: -4
  7. # 开括号(开圆括号、开尖括号、开方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行)
  8. AlignAfterOpenBracket: Align
  9. # 对齐数组列
  10. AlignArrayOfStructures: None
  11. # 对齐连续宏定义
  12. AlignConsecutiveMacros: true
  13. # 连续赋值时,对齐所有等号
  14. AlignConsecutiveAssignments: true
  15. # 对齐连续位字段
  16. AlignConsecutiveBitFields: true
  17. # 连续声明时,对齐所有声明的变量名
  18. AlignConsecutiveDeclarations: true
  19. # 左对齐逃脱换行(使用反斜杠换行)的反斜杠
  20. AlignEscapedNewlines: Right
  21. # 水平对齐二元和三元表达式的操作数
  22. AllowAllArgumentsOnNextLine: true
  23. AllowAllConstructorInitializersOnNextLine: true
  24. AlwaysBreakAfterDefinitionReturnType: None
  25. AlignOperands: Align
  26. # 对齐连续的尾随的注释
  27. AlignTrailingComments: true
  28. # 允许函数声明的所有参数在放在下一行
  29. AllowAllParametersOfDeclarationOnNextLine: true
  30. # 允许短的枚举放在同一行
  31. AllowShortEnumsOnASingleLine: true
  32. # 允许短的块放在同一行
  33. AllowShortBlocksOnASingleLine: Never
  34. # 允许短的case标签放在同一行
  35. AllowShortCaseLabelsOnASingleLine: false
  36. # 允许短的函数放在同一行
  37. AllowShortFunctionsOnASingleLine: All
  38. # 允许短的匿名函数放在同一行
  39. AllowShortLambdasOnASingleLine: All
  40. # 允许短的if语句保持在同一行
  41. AllowShortIfStatementsOnASingleLine: Never
  42. # 允许短的循环保持在同一行
  43. AllowShortLoopsOnASingleLine: false
  44. # 总是在返回类型后换行
  45. AlwaysBreakAfterReturnType: None
  46. # 总是在多行string字面量前换行
  47. AlwaysBreakBeforeMultilineStrings: false
  48. # 总是在template声明后换行
  49. AlwaysBreakTemplateDeclarations: MultiLine
  50. AttributeMacros:
  51. - __capability
  52. # false表示函数实参要么都在同一行,要么都各自一行
  53. BinPackArguments: true
  54. # false表示所有形参要么都在同一行,要么都各自一行
  55. BinPackParameters: true
  56. # 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效
  57. BraceWrapping:
  58. AfterCaseLabel: false
  59. AfterClass: false
  60. AfterControlStatement: Never
  61. AfterEnum: false
  62. AfterFunction: false
  63. AfterNamespace: false
  64. AfterObjCDeclaration: false
  65. AfterStruct: false
  66. AfterUnion: false
  67. AfterExternBlock: false
  68. BeforeCatch: false
  69. BeforeElse: false
  70. BeforeLambdaBody: false
  71. BeforeWhile: false
  72. IndentBraces: false
  73. SplitEmptyFunction: true
  74. SplitEmptyRecord: true
  75. SplitEmptyNamespace: true
  76. # 在二元运算符前换行
  77. BreakBeforeBinaryOperators: None
  78. # 在concept前换行
  79. BreakBeforeConceptDeclarations: true
  80. # 在大括号前换行: Attach(始终将大括号附加到周围的上下文)
  81. BreakBeforeBraces: Allman
  82. BreakBeforeInheritanceComma: false
  83. # 继承列表样式
  84. BreakInheritanceList: AfterComma
  85. # 在三元运算符前换行
  86. BreakBeforeTernaryOperators: true
  87. # 构造函数初始值设定项换行样式
  88. BreakConstructorInitializers: BeforeComma
  89. # 在java字段的注释后换行
  90. BreakAfterJavaFieldAnnotations: false
  91. # 每行字符的限制,0表示没有限制
  92. ColumnLimit: 0
  93. # 描述具有特殊意义的注释的正则表达式,它不应该被分割为多行或以其它方式改变
  94. CommentPragmas: '^ IWYU pragma:'
  95. # 在新行上声明每个命名空间
  96. CompactNamespaces: false
  97. # 构造函数的初始化列表的缩进宽度
  98. ConstructorInitializerIndentWidth: 4
  99. # 延续的行的缩进宽度
  100. ContinuationIndentWidth: 4
  101. # 去除C++11的列表初始化的大括号{后和}前的空格
  102. Cpp11BracedListStyle: true
  103. # 继承最常用的换行方式
  104. DeriveLineEnding: true
  105. # 继承最常用的指针和引用的对齐方式
  106. DerivePointerAlignment: false
  107. # 关闭格式化
  108. DisableFormat: false
  109. # 删除访问修饰符后的所有空行
  110. EmptyLineAfterAccessModifier: Never
  111. # 仅当访问修饰符开始一个新的逻辑块时才添加空行
  112. EmptyLineBeforeAccessModifier: LogicalBlock
  113. # 自动检测函数的调用和定义是否被格式为每行一个参数(Experimental)
  114. ExperimentalAutoDetectBinPacking: false
  115. # 自动补充namespace注释
  116. FixNamespaceComments: true
  117. # 需要被解读为foreach循环而不是函数调用的宏
  118. ForEachMacros:
  119. - foreach
  120. - Q_FOREACH
  121. - BOOST_FOREACH
  122. IfMacros:
  123. - KJ_IF_MAYBE
  124. # 多个#include块合并在一起并排序为一个
  125. IncludeBlocks: Merge
  126. # 可以定义负数优先级从而保证某些#include永远在最前面
  127. IncludeCategories:
  128. - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
  129. Priority: 2
  130. SortPriority: 0
  131. CaseSensitive: false
  132. - Regex: '^(<|"(gtest|gmock|isl|json)/)'
  133. Priority: 3
  134. SortPriority: 0
  135. CaseSensitive: false
  136. - Regex: '.*'
  137. Priority: 1
  138. SortPriority: 0
  139. CaseSensitive: false
  140. IncludeIsMainRegex: '(Test)?$'
  141. IncludeIsMainSourceRegex: ''
  142. # 缩进访问修饰符
  143. IndentAccessModifiers: false
  144. # 缩进case标签
  145. IndentCaseLabels: false
  146. # case 标签后面的块使用与 case 标签相同的缩进级别
  147. IndentCaseBlocks: false
  148. # 缩进goto标签。
  149. IndentGotoLabels: false
  150. # 缩进预处理器指令
  151. IndentPPDirectives: None
  152. # 向后兼容缩进外部块
  153. IndentExternBlock: AfterExternBlock
  154. # 缩进模板中的requires子句
  155. IndentRequires: false
  156. # 缩进宽度
  157. IndentWidth: 4
  158. # 函数返回类型换行时,缩进函数声明或函数定义的函数名
  159. IndentWrappedFunctionNames: false
  160. # 插入尾随逗号
  161. InsertTrailingCommas: None
  162. # 保留JavaScript字符串引号
  163. JavaScriptQuotes: Leave
  164. # 包装 JavaScript 导入/导出语句
  165. JavaScriptWrapImports: true
  166. # 保留在块开始处的空行
  167. KeepEmptyLinesAtTheStartOfBlocks: true
  168. # 相对于 lambda 签名对齐 lambda 主体
  169. LambdaBodyIndentation: Signature
  170. # 开始一个块的宏的正则表达式
  171. MacroBlockBegin: ''
  172. # 结束一个块的宏的正则表达式
  173. MacroBlockEnd: ''
  174. # 连续空行的最大数量
  175. MaxEmptyLinesToKeep: 1
  176. # 命名空间的缩进
  177. NamespaceIndentation: None
  178. ObjCBinPackProtocolList: Auto
  179. # 使用ObjC块时缩进宽度
  180. ObjCBlockIndentWidth: 4
  181. ObjCBreakBeforeNestedBlockParam: true
  182. # 在ObjC的@property后添加一个空格
  183. ObjCSpaceAfterProperty: false
  184. # 在ObjC的protocol列表前添加一个空格
  185. ObjCSpaceBeforeProtocolList: true
  186. PenaltyBreakAssignment: 2
  187. PenaltyBreakBeforeFirstCallParameter: 19
  188. PenaltyBreakComment: 300
  189. PenaltyBreakFirstLessLess: 120
  190. PenaltyBreakString: 1000
  191. PenaltyBreakTemplateDeclaration: 10
  192. PenaltyExcessCharacter: 1000000
  193. PenaltyReturnTypeOnItsOwnLine: 60
  194. PenaltyIndentedWhitespace: 0
  195. # 指针的对齐: Left, Right, Middle
  196. PointerAlignment: Right
  197. # 缩进预处理器语句的列数
  198. PPIndentWidth: -1
  199. # 引用的对齐
  200. ReferenceAlignment: Pointer
  201. # 允许重新排版注释
  202. ReflowComments: true
  203. # 短命名空间跨越的最大展开行数
  204. ShortNamespaceLines: 1
  205. # 允许排序#include
  206. SortIncludes: true
  207. # java静态导入放在非静态导入之前
  208. SortJavaStaticImport: Before
  209. # 对using声明排序
  210. SortUsingDeclarations: true
  211. # 在C风格类型转换后添加空格
  212. SpaceAfterCStyleCast: false
  213. # 在!后添加空格
  214. SpaceAfterLogicalNot: false
  215. # 在Template关键字后添加空格
  216. SpaceAfterTemplateKeyword: true
  217. # 在赋值运算符之前添加空格
  218. SpaceBeforeAssignmentOperators: true
  219. # 不在case冒号之前添加空格
  220. SpaceBeforeCaseColon: false
  221. # 不在C++11大括号列表之前添加空格
  222. SpaceBeforeCpp11BracedList: false
  223. # 在构造函数初始化器冒号之前添加空格
  224. SpaceBeforeCtorInitializerColon: true
  225. # 在继承冒号前添加空格
  226. SpaceBeforeInheritanceColon: true
  227. # 开圆括号之前添加一个空格: Never, ControlStatements, Always
  228. SpaceBeforeParens: ControlStatements
  229. # 不要确保指针限定符周围有空格,而是使用 PointerAlignment
  230. SpaceAroundPointerQualifiers: Default
  231. # 在基于范围的for循环冒号之前添加空格
  232. SpaceBeforeRangeBasedForLoopColon: true
  233. # {}中间不添加空格
  234. SpaceInEmptyBlock: false
  235. # 在空的圆括号中添加空格
  236. SpaceInEmptyParentheses: false
  237. # 在尾随的评论前添加的空格数(只适用于//)
  238. SpacesBeforeTrailingComments: 1
  239. # 在尖括号的<后和>前添加空格
  240. SpacesInAngles: Never
  241. # 不在if/for/switch/while条件周围插入空格
  242. SpacesInConditionalStatement: false
  243. # 在容器(ObjC和JavaScript的数组和字典等)字面量中添加空格
  244. SpacesInContainerLiterals: true
  245. # 在C风格类型转换的括号中添加空格
  246. SpacesInCStyleCastParentheses: false
  247. # 行注释开头允许有多少个空格。要禁用最大值,请将其设置为-1,除此之外,最大值优先于最小值
  248. SpacesInLineCommentPrefix:
  249. Minimum: 1
  250. Maximum: -1
  251. # 在圆括号的(后和)前添加空格
  252. SpacesInParentheses: false
  253. # 在方括号的[后和]前添加空格,lamda表达式和未指明大小的数组的声明不受影响
  254. SpacesInSquareBrackets: false
  255. # 不在[前添加空格
  256. SpaceBeforeSquareBrackets: false
  257. # 位域:每边都添加空格
  258. BitFieldColonSpacing: Both
  259. # 标准
  260. Standard: Latest
  261. # 在语句前面被忽略的宏定义,就好像它们是一个属性一样
  262. StatementAttributeLikeMacros:
  263. - Q_EMIT
  264. # 应该被解释为完整语句的宏定义
  265. StatementMacros:
  266. - Q_UNUSED
  267. - QT_REQUIRE_VERSION
  268. # tab宽度
  269. TabWidth: 4
  270. # 使用\n换行
  271. UseCRLF: false
  272. # 使用tab字符:ForIndentation——仅将制表符用于缩进
  273. UseTab: Never
  274. # 对空格敏感的宏定义
  275. WhitespaceSensitiveMacros:
  276. - STRINGIZE
  277. - PP_STRINGIZE
  278. - BOOST_PP_STRINGIZE
  279. - NS_SWIFT_NAME
  280. - CF_SWIFT_NAME