用clang-format统一代码风格¶
引言¶
有不少工具用于统一项目编码风格,比如Go语言自带fmt
模块统一编码风格,又比如C++有astyle
这样的工具,但这里要介绍的是clang-format
工具。
安装:
如果是源码安装,在llvm-project/clang/
目录下:
同时还提供了其它工具对应的版本:
llvm-project/clang/tools/clang-format/clang-format-bbedit.applescript
llvm-project/clang/tools/clang-format/clang-format-diff.py
llvm-project/clang/tools/clang-format/clang-format-sublime.py
llvm-project/clang/tools/clang-format/clang-format-test.el
llvm-project/clang/tools/clang-format/clang-format.el
llvm-project/clang/tools/clang-format/clang-format.py
llvm-project/clang/tools/clang-format/git-clang-format
生成风格配置文件¶
以llvm和google为例:
$ clang-format -style=llvm -dump-config > .clang-format
$ clang-format -style=google -dump-config > .clang-format
有了.clang-format
风格配置文件,命令clang-format
就会自动读取此配置文件,编辑器vscode
只要安装了vs-clang-format
插件也会自动读取此配置。
修改文件风格¶
git自动clang-format¶
需要依赖git-clang-format
:
它会自动对暂存区的文件进行风格转换,也可以配置git-hooks让执行git commit
的时候自动进行转换。
添加文件.git/hooks/pre-commit
:
这样就不怕忘记执行clang-format了。
部分代码不想被格式化¶
int formatted_code;
// clang-format off
void unformatted_code ;
// clang-format on
void formatted_code_again;
通过注释的方式告诉clang-format
不要因为代码风格而改动这部分代码。
.clang-format配置项¶
- 文档: https://clang.llvm.org/docs/ClangFormatStyleOptions.html
- 例子: https://github.com/godotengine/godot/blob/master/.clang-format
几个配置:
BasedOnStyle: LLVM # 基于LLVM风格
AlignAfterOpenBracket: Align # 括号后跨行对齐
ColumnLimit: 0 # 行字符数量无限制
IndentCaseLabels: true # case缩进
IndentWidth: 4 # 4格缩进
NamespaceIndentation: All # 名字空间缩进
TabWidth: 4 # TAB长度
UseTab: Never # 不使用TAB
Language: Cpp
Standard: c++17
不管使用什么风格,只要保持一致即可。
- 微信搜索: 「 MinYiLife 」, 关注公众号!
- 本文链接: https://www.lesliezhu.com/blog/2022/12/20/git_clang_format/
- 版权声明: 原创文章,如需转载请注明文章作者和出处。谢谢!