.clang-format 9.2 KB

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