基本上每个项目的根目录下都会存放.clang-format和.clang-tidy这两个文件,那么它们到底是用来做什么的呢?
.clang-format
Clang-Format可用于格式化(排版)多种不同语言的代码,其自带的排版格式主要有:LLVM, Google, Chromium, Mozilla, WebKit。
如果你使用Visual Studio Code编写代码,VSCode的C/C++插件自带了Clang-Format格式化工具,不仅拥有上述5种排版格式,还定义了自己的Visual Studio排版格式,且此格式是默认的排版格式(Ubuntu下格式化快捷键:Ctrl+Shift+I,Windows下格式化快捷键:Shift+Alt+F),VS Code格式化的具体内容可以参考官网:点击打开链接
但是自带的这几种排版格式可能并不满足个人编码习惯的全部要求,Clang-Format也提供了使用自定义排版格式的功能。
如果在Ubuntu中安装了Clang-Format,则可以使用以下命令导出上述5种自带的排版格式,并且可以对其中某一个导出的文件进行修改,实现自定义格式化:
clang-format -style=格式名 -dump-config > 文件名
其中,格式名的取值可以为llvm, google, chromium, mozilla, webkit中的任一种;文件名可以取任何名字,一般取.clang-format或_clang-format,因为自定义的排版格式文件只有取这两种名字之一,才能被Clang-Format识别。在Ubuntu下以点开头命名的文件是隐藏文件,所以导出为.clang-format后,在文件夹中看不到该文件,可以使用快捷键Ctrl+h显示隐藏文件。
直接将修改后的文件放在和代码文件相同的文件夹中,并且设置格式化选项-style=file,即可以使用自定义的排版格式。VS Code只要将该文件放在和代码文件相同的文件夹中即可,不需要额外的设置。将格式化文件放在代码文件的上一级文件夹中,也可以使用。注意,文件名必须为.clang-format或_clang-format。
.clang-tidy
clang-tidy 是一种工具,用于自动检查C / C ++ / Objective-C代码是否存在样式冲突,编程错误和最佳实践。
与.clang-format文件类似,.clang-tidy文件里也是写上自定义的检测规则,一般放在项目的主目录下,方便对整个项目进行检查。