您的位置:

对clang-format的多方面详解

一、clang-format配置

clang-format是Clang工具家族中一款强大的C/C++/Objective-C代码格式化工具,它可以将代码按照一定的规则进行格式化,并且可以自定义规则来满足用户的需求。它的配置有以下几种方式。

1、在命令行中使用--style选项指定格式化样式

clang-format --style=Google test.cpp

2、使用配置文件

# EditorConfig file for C/C++ projects root = true [*] indent_style = space indent_size = 2 charset = utf-8 [*.cpp] indent_size = 4

3、使用编辑器或IDE中的补全或插件

无论哪种方法,都需要了解clang-format样式的基本格式以及一些重要选项的含义,例如IndentWidth,TabWidth、UseTab等,这些选项会直接影响每个人的使用。

二、clang-format vs其他代码格式化工具

与其他代码格式化工具相比,clang-format有很多优势:

1、与Clang解析器共享AST,保证代码格式化与语法结构一致。

2、可以自定义规则,而且规则清晰明了易于掌握。

3、支持多种格式:

LLVM, Google, Chromium, Mozilla, WebKit

4、支持多种语言:

C, C++, Objective-C, Objective-C++, ProtoBuf, JavaScript, Typescript, CUDA, OpenCL, RenderScript, Swift

三、clang-format头文件排序

头文件的排序是一个有些争议的问题,对于大型项目而言,维护依赖和头文件是非常重要的,clang-format可以自动排序。

一个常用的头文件排序方法是,按照语言标准头文件 -> 项目内头文件 -> 第三方库头文件的顺序排列。如果clang-format不符合你的要求,可以通过使用StyleOption的IncludeCategories来自定义规则,例如:

#include <string> #include <iostream> #include "project/header1.hpp" #include "project/header2.hpp" #include <boost/algorithm/string.hpp> #include <boost/tuple/tuple.hpp> 

四、vscode clang调试

vscode是一个高度定制化的文本编辑器,集成了很多功能,其中一种就是clang的调试支持。你可以使用clangd来为你的C++项目提供智能补全、重构工具等等:

1、在你的项目根目录下安装clangd

# macOS sudo brew install llvm  # Arch Linux sudo pacman -S llvm # Fedora and CentOS sudo dnf install clang # Ubuntu and Debian sudo apt install clangd

2、在vscode中安装C/C++插件

3、修改settings.json中的配置。示例

{"clangd.path": "/usr/bin/clangd", "clangd.arguments": ["--background-index"], "clangd.trace.server": "verbose"}

五、vscode配置clang选取

1、在你的C++文件中右键->打开Clang Command Palette

2、选择Clang: Select a Clang Version,可以根据自己的项目特性选择某个版本。

3、选择后,可以看到vscode的C/C++插件会自动的更新,编译器会相应的发生改变。

4、此外,你也可以选择外部的Clang-tidy,这样可以让你的代码风格更加符合标准。

六、总结

总体而言,clang-format是Clang工具家族中一个非常强大的工具,可以为我们的代码工作流增添很多便捷性。在使用的过程中,我们需要深入了解clang-format的基本配置,以及与其他工具的比较,这样我们才可以在工作中发挥出它的真正能力。