介绍

平时团队进行合作的时候需要注意代码的格式,虽然很难统一每个人的编码风格,但是通过工具能够很好的管理代码格式。这里介绍下clang-format,它是基于clang的一个命令行工具,能够自动化格式C/C++/Obj-C代码,支持多种代码风格:Google, Chromium, LLVM, Mozilla, WebKit,也支持自定义风格(通过编写.clang-format文件)很方便的同意代码格式。

使用方法

  • Linux下下安装Clang-format : sudo apt-get install clang-format
  • 以LLVM代码风格格式化main.cpp, 结果直接写到main.cpp

    clang g-format -i main.cpp -style=LLVM

  • 当然也支持对指定行格式化,格式化main.cpp的第1,2行

    clang-format -lines=1:2 main.cpp

  • vim 中也可以集成该插件1

  • 它提供一个clang-format-diff.py脚本,用来格式化patch,code review提交代码2

配置文件说明

  • 配置文件.clang-format详细说明
# 基于那个配置文件
BasedOnStyle: LLVM
# 访问说明符的偏移(public private)
AccessModifierOffset: -4
# 括号之后,水平对齐参数: Align DontAlign AlwaysBreak
AlignAfterOpenBracket: Align
# 连续的赋值时,对齐所有的等号
AlignConsecutiveAssignments: true
# 连续声明时,对齐所有声明的变量名
AlignConsecutiveDeclarations: true
# 左对齐换行(使用反斜杠换行)的反斜杠
AlignEscapedNewlinesLeft: true
# 水平对齐二元和三元表达式的操作数
AlignOperands: true
# 对齐连续的尾随的注释
AlignTrailingComments: true
# 允许函数声明的所有参数在放在下一行
AllowAllParametersOfDeclarationOnNextLine: true
# 允许短的块放在同一行
AllowShortBlocksOnASingleLine : false
# 允许短的case标签放在同一行
AllowShortCaseLabelsOnASingleLine: false
# 允许短的函数放在同一行: None, InlineOnly(定义在类中), Empty(空函数), Inline(定义在类中,空函数), All
AllowShortFunctionsOnASingleLine: Empty
# 是否允许短if单行 If true, if (a) return; 可以放到同一行
AllowShortIfStatementsOnASingleLine: false
# 允许短的循环保持在同一行
AllowShortLoopsOnASingleLine: false
# 总是在定义返回类型后换行(deprecated)
AlwaysBreakAfterDefinitionReturnType: None
# 每行字符的限制,0表示没有限制
ColumnLimit: 100
# 描述具有特殊意义的注释的正则表达式,它不应该被分割为多行或以其它方式改变
CommentPragmas: '^ IWYU pragma:'
# 语言: None Cpp Java Objc Protp
Language: Cpp
#指针的*的挨着哪边
PointerAlignment: Right
#缩进宽度
IndentWidth: 4
# 连续的空行保留几行
MaxEmptyLinesToKeep: 1
# 在 @property 后面添加空格, \@property (readonly) 而不是 \@property(readonly).
ObjCSpaceAfterProperty: true
# OC block后面的缩进
ObjCBlockIndentWidth: 4
# 是否允许短方法单行
AllowShortFunctionsOnASingleLine: false
# 换行的时候对齐操作符
#AlignOperands: true
# 中括号两边空格 []
SpacesInSquareBrackets: true
# 小括号两边添加空格
SpacesInParentheses : false
#等号两边的空格
SpaceBeforeAssignmentOperators: true
# 容器类的空格 例如 OC的字典
SpacesInContainerLiterals: true
#缩进
IndentWrappedFunctionNames: true
#在block从空行开始
KeepEmptyLinesAtTheStartOfBlocks: true
#在构造函数初始化时按逗号断行,并以冒号对齐
BreakConstructorInitializersBeforeComma: true
#括号后添加空格
SpaceAfterCStyleCast: false
# 允许排序#include, 造成编译错误
# SortIncludes: true
# 缩进case 标签
IndentCaseLabels: true
#tab键盘的宽度
TabWidth: 4
UseTab: Never
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73

参考

  • Clang 8 documentation
  • 使用clang-format格式化你的代码
  • Clang-Format格式化选项介绍
  • clang-format 格式化工具简易配置
  • vim安装插件以后启动变慢怎么解决?

  1. vim代码格式化插件clang-format ↩
  2. clang-format-diff.py ↩

代码格式化工具 Clang-format相关推荐

  1. python格式化代码工具_python 代码格式化工具:YAPF

    背景 现在的大多数 Python 代码格式化工具(比如:autopep8 和 pep8ify)是可以移除代码中的 lint 错误.这显然有些局限性.比如:遵循 PEP 8 指导的代码可能就不会被格式化 ...

  2. 五彩斑斓的 Black —— Python代码格式化工具

    良好的 Python 代码应有良好的格式规范(不止于遵守 PEP 8 ),使用一个更强大更专业的代码格式化工具,来替代编辑器自带的「格式化代码」功能是有一定必要的,这还可以使团队成员即使在不同编辑器下 ...

  3. 超人气代码格式化工具prettier

    一.prettier 介绍 官方自己介绍说,prettier是一款强势武断的代码格式化工具,它几乎移除了编辑器本身所有的对代码的操作格式,然后重新显示.就是为了让所有用这套规则的人有完全相同的代码.在 ...

  4. clang format 官方文档自定义参数介绍(中英文)

    官方文档:http://clang.llvm.org/docs/ClangFormatStyleOptions.html 中文 在代码中配置样式当使用 clang::format::reformat( ...

  5. vscode 配置代码格式化工具calng-format,windows/linux都支持

    1.安装clang-format工具 linux (ubuntu) sudo apt-get install clang-format-11 windows 下载clang-format.exe,并将 ...

  6. STM32CubeMX安装包和JDK环境以及Keil代码格式化工具

    STM32Cube生态系统是针对STM32微控制器和微处理器的完整软件解决方案, 它既适合寻求STM32的完整,免费开发环境的用户,也适合已经拥有IDE(包括Keil或iAR)的用户,在其中可以轻松集 ...

  7. 代码格式化工具AStyle简要说明

    一 安装 1.1 windows下安装 astyle是代码格式化工具,可以配合vs code的插件进行代码的方便格式化,也可以作为命令行工具单独运行: 下载地址: https://sourceforg ...

  8. clang format

    clang format入门 一:VsCode下载 二:ubuntu下载 三:使用(common) 导出 .clang-format 格式化文件 自己找了一些资料,感觉不是太完整,零零碎碎自己来总结一 ...

  9. 推荐一个小而美的Python代码格式化工具

    代码可读性是评判代码质量的标准之一,有一个衡量代码质量的标准是 Martin 提出的 "WFT" 定律,即每分钟爆出 "WTF" 的次数.你在读别人代码或者做 ...

  10. Prettier 1.15代码格式化工具新增Angular和Vue.js支持

    Prettier 1.15代码格式化工具新增HTML.Vue.js.Angular.MDX支持以及多项语法优化和改进. 对于Angular和Vue,Prettier现在可以格式化这些扩展HTML的框架 ...

最新文章

  1. ubuntu 下利用ndiswrapper安装无线网卡驱动
  2. 13个月才跑通GitHub模型,机器学习科研入门太难了吧
  3. 定义文字用em、rem,效果和px一样
  4. 计算机操作系统_计算机理论(操作系统概念及常见操作系统类型)
  5. antd vue表单上传文件_vue+axios+antD的上传图片踩坑
  6. ASP。NET的设计思想
  7. [LeetCode 题解]: Roman to Interger
  8. Spring集成Quartz定时任务
  9. 【LeetCode】49. Group Anagrams
  10. linux 跟踪运行的进程,使用 Linux 的 strace 命令跟踪/调试程序的常用选项
  11. 学习FLTK 使用Fl_Menu_Bar
  12. 浅谈微信与微博的区别
  13. 小乐乐上台阶【斐波那契】
  14. 数学 {n次方根,根号,平方根}
  15. Javase杂谈(十)
  16. 淘宝经典差评中评好评和回复
  17. jQuery根据ID、CLASS、等获取对象
  18. Vue联动下拉框默认选中
  19. java大小写敏感_Java是大小写敏感的语言。
  20. socket 通信 error:88

热门文章

  1. hive if函数_数据仓库,Hive中使用 != 或 lt;gt;; 符号进行条件过滤时的坑
  2. 在线答题java背景_答题功能java
  3. opencv中Mat、CvMat和IplImage的相互转化
  4. Qt 统计文件夹的文件总大小
  5. Oracle 11g及PLSQL可视化界面的安装与使用(内附软件)
  6. 计算机三四级网络技术,全国计算机等级考试四级网络技术论述题真题(2-3)
  7. MFC 单文档、多文档和对话框
  8. 海康VisionMaster的使用
  9. 实体词典 情感词典_情感词典最全版
  10. Linux之vim详解