UE4/UE5 使用 ClangFormat 对代码自动格式化
当项目越来越复杂的时候,项目中的每一份代码文件有一个统一的风格是很有必要的,尤其是项目在由多个人参与的情况下。每个人都有不同的项目背景和编程风格,手动的去教每个人格式化代码实在是浪费时间。因此,我们可以借助一些自动格式化的工具,例如 ClangFormat。ClangFormat 是一个独立的工具,主要针对 C、C++ 和其他基于 C 的编程语言(如 Objective-C 和 CUDA)的代码格式化。它使用一组详细的配置规则(通常在一个名为 .clang-format 的文件中定义)来自动调整代码的缩进、空格、换行等格式。
ClangFormat 非常灵活,可以与多种编辑器和 IDE 集成。一些编辑器也提供了内置的 clang-format 支持或插件。它主要关注代码的格式化和样式,但不处理其他编辑器相关的配置(例如字符集、换行符等)。
本次使用 Visual Studio 2022, 记录下如何使用 ClangFormat 工具对代码进行自动格式化。格式化的风格参照Coding Standard | Unreal Engine 4.27 Documentation。
根据 LLVM Snapshot Builds 的描述,Visual Studio 从 2017 15.7 Preview 1 开始,已经内置了对 clang-format 的支持,如果你的版本不对应,也可以根据描述中的链接下载一个插件。
创建 .clang-format 文件
首先,使用 VS 创建文件,然后在 Visual C++ 分栏中找到 ClangFormat 文件,点击“打开”。
新创建的文件中会有一些内容,是根据当前 IDE 格式创建出来的内容,不再需要,使用 Ctrl+A 全选将其删除。然后从UE4格式的.clang-format文件中复制其内容,拷贝到刚才创建的ClangFormat文件中。
保存的时候注意,文件的名称就保留成这样就好,会被 clang-format.exe 识别到。
保存完 .clang-format 文件后,对于需要进行格式化的代码化,"设置文档格式(Ctrl+K, Ctrl+D)”或“设置选定内容格式(Ctrl+K, Ctrl+F)”进行格式化,然后 VS 会提示代码库中找到了 clang-format 文件,点击确定即可。
以一个 UPROPERTY 宏后第二行会被缩进的地方为例,使用了以上 .clang-format 格式文件后,会保存成对齐的样式,虚幻引擎源代码中也是这样的样式。
格式化前
格式化后
设置为保存时自动格式化
可以使用插件在每一次 Ctrl+S 随手保存文件时,对代码进行格式化。打开 VS 的 扩展-管理扩展,搜索关键字“format on save”在联机中搜索插件,红框中任意选一个安装即可实现该功能(这两个本人安装使用过,其他的不清楚)。
搜索插件
注意点
[*]编辑的 .clang-format 文件在保存时,名称不要改,留着默认的“.clang-format”。
[*].clang-format 文件放在 UE 工程的与 .sln .uproject 同级目录。
[*]除了上文提到的 UE4格式的.clang-format文件 代码格式,更多格式设置参见 Clang-Format Style Options 。
*注:以上部分内容由 ChatGPT 完成。
参考链接:
[*]TensorWorks/UE-Clang-Format: Unreal Engine Clang-Format configuration and instructions. (github.com)
[*]UE-Clang-Format/.clang-format at main · TensorWorks/UE-Clang-Format (github.com)
[*].clang-format-for-UE4/.clang-format at master · dy-sh/.clang-format-for-UE4 (github.com)
[*]选项,文本编辑器,C/C++,格式设置 - Visual Studio (Windows) | Microsoft Learn
[*]Format document on Save - Visual Studio Marketplace
[*]主流编辑器、IDE 开启 clang-format 自动格式化能力 – My Code
[*](34条消息) UE4 代码规范记录_ue4 editorconfig_sh15285118586的博客-CSDN博客
页:
[1]