找回密码
 立即注册
查看: 413|回复: 0

UE4/UE5 使用 ClangFormat 对代码自动格式化

[复制链接]
发表于 2023-4-18 14:53 | 显示全部楼层 |阅读模式
当项目越来越复杂的时候,项目中的每一份代码文件有一个统一的风格是很有必要的,尤其是项目在由多个人参与的情况下。每个人都有不同的项目背景和编程风格,手动的去教每个人格式化代码实在是浪费时间。因此,我们可以借助一些自动格式化的工具,例如 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博客

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-20 09:29 , Processed in 0.091606 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表