clang-format的使用

打印 上一主题 下一主题

主题 746|帖子 746|积分 2238

clang-format使用



1. clang-format简介

Clang-Format可用于格式化(排版)多种不同语言的代码。
其自带的排版格式主要有:LLVM, Google, Chromium, Mozilla, WebKit等; 利用style参数配置风格。
通过编写 .clang-format 文件,可以实现代码风格的配置。
2. clang-format的使用

2.1 clang-format中.clang-format file

我们可以自定制代码风格约束,通过一下命令进行使用:
  1. clang-format -sytle=file
复制代码
注意:file不是 .clang-format file的路径,就是file关键字;说明使用 the .clang-format file located in the closest parent directory of the input file. clang-format的设置进行代码约束;其他选项:-style=LLVM, Google, Chromium, Mozilla, WebKit
而.clang-format file由一下命令生成:生成google风格的clang-format配置文件
  1. clang-format -style=google -dump-config > .clang-format
复制代码
第二种方法配置:也可以通过设置key:value的方式进行
如:
  1. clang-format -style="{BasedOnStyle: llvm, IndentWidth:8} ..."
复制代码
2.2 示例:配置google的代码风格

  1. #1) 生成.clang-format文件
  2. clang-format -style=google -dump-config > .clang-format
  3. # 2) 配置.clang-format: 参考:https://clang.llvm.org/docs/ClangFormatStyleOptions.html
  4. # 3)通过.clang-format文件,进行代码风格约束
  5. # 格式化结果打印到中断
  6. clang-format -style=file code.cpp
  7. # 直接修改文件
  8. clang-format -style=file -i code.cpp
复制代码
2.3 vscode clang-format配置

3. clang-format 中 .clang-format file配置(yaml格式)

3.1 配置多个语言的约束

  1. ---
  2. # We'll use defaults from the LLVM style, but with 4 columns indentation.
  3. BasedOnStyle: LLVM
  4. IndentWidth: 4
  5. ---
  6. # C++
  7. Language: Cpp
  8. # Force pointers to the type for C++.
  9. DerivePointerAlignment: false
  10. PointerAlignment: Left
  11. ---
  12. Language: JavaScript
  13. # Use 100 columns for JS.
  14. ColumnLimit: 100
  15. ---
  16. Language: Proto
  17. # Don't format .proto files.
  18. DisableFormat: true
  19. ---
  20. Language: CSharp
  21. # Use 100 columns for C#.
  22. ColumnLimit: 100
  23. ...
复制代码
3.2 将某段代码忽略format

  1. int formatted_code;
  2. // clang-format off
  3.     void    unformatted_code  ;
  4. // clang-format on
  5. void formatted_code_again;
复制代码
3.3 对齐方式


3.4 数组的左右对其设置

实际None设置为false;
注意:clang-format的版本,只有13是支持的
13版本前不支持

3.5 连续赋值语句的格式设置,是否等号对齐

根据下面的示例可以清楚的设置不同的格式情况;
注意:clang-format的版本,只有13是支持的
13版本前只支持true/false


3.6 AlignConsecutiveBitFields



3.7 AlignConsecutiveDeclarations

与AlignConsecutiveAssignments一样配置; 将声明语句与赋值语句对齐
3.8 宏的对齐AlignConsecutiveMacros



3.9 AlignEscapedNewlines(对齐选项中的反斜杠转义换行符)


3.10 对齐操作符


3.11 尾部注释格式


3.12 函数调用


3.13 函数对齐


根据需要设定不同的配置:
具体说明:https://clang.llvm.org/docs/ClangFormatStyleOptions.html
参考文献


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表