前言

本文将介绍一款名为 Clang-format 的代码格式化工具,并详细讲解如何在 Keil MDK5 中使用 Clang-format 插件进行代码格式化,同时展示 Clang-format 对代码的格式化效果。如果您是一名 C/C++ 程序员,本文对您的日常开发工作会有所帮助。


一. Clang-format简介

Clang-format 是一个用于代码格式化的工具,可以帮助开发人员在不同的编程语言和编码风格之间实现一致的代码样式。它支持多种编程语言,包括 C++、Java、JavaScript 和 Objective-C 等,并提供了丰富的代码格式化选项,可以满足不同团队和个人的编码风格需求。

Clang-format 是基于 LLVM(Low Level Virtual Machine,低级虚拟机) 的 Clang 编译器实现的,它使用了 Clang 的解析引擎来理解代码结构,并根据配置文件中指定的规则对代码进行格式化。它可以通过命令行工具或编辑器插件进行使用,非常易于集成到开发环境中。

使用 Clang-format 可以带来很多好处,例如:

  • 提高代码的可读性和一致性。
  • 减少代码审查中关于格式问题的讨论和争议。
  • 使代码更易于维护和修改。

总之,Clang-format 是一个强大、灵活、易于使用的代码格式化工具,可以帮助开发人员在编写和维护代码时提高效率和质量。


二. Clang-format下载

最新版本下载网址:https://github.com/llvm/llvm-project/releases

打开LLVM的Github版本发布页,现在(20230517)的最新版本是16.0.4,点击Show all assets展开所有条目,再找到LLVM-xx-win64.exe,点击下载

下载得到LLVM-xx-win64.exe文件。下面介绍如何从中提取出Clang-format.exe文件

第一步,将文件后缀名.exe改为.zip。

第二步,解压zip文件。

第三步,在解压后的文件夹/bin中,找到Clang-format.exe,这就是我们需要的代码格式化程序。


三. Clang-format配置

Clang-format自带六种配置:

  1. LLVM:这是默认配置,遵循 LLVM 项目的代码风格。

  2. Google:遵循 Google 的 C++ 代码风格。

  3. Chromium:遵循 Chromium 项目的代码风格。

  4. Microsoft:遵循 Microsoft 的 C++ 代码风格。

  5. Mozilla:遵循 Mozilla 项目的代码风格。

  6. WebKit:遵循 WebKit 项目的代码风格。

导出某种风格(以Microsoft为例)的配置的命令为:

F:\Onedrive\myPortableSoftware\Clang-format\clang-format.exe -style="Microsoft" --dump-config > F:\Onedrive\myPortableSoftware\Clang-format\Microsoft.clang-format

推荐基于某种自带的配置去修改,而不是自己从零开始配置。我个人基于Microsoft的风格修改成了我个人满意的代码风格。

想了解如何配置clang format,可参考官方文档:https://clang.llvm.org/docs/ClangFormatStyleOptions.html


四. 在Keil中设置Clang-format

配置Clang-format的方法与配置Astyle一样。

打开Keil,Tools -> Customize Tools Menu…

我的Command:F:\Onedrive\myPortableSoftware\Clang-format\clang-format.exe

我的Arguments如下所示,表示使用指定的xx.clang-format文件配置进行格式化。

-style=file:F:\Onedrive\myPortableSoftware\Clang-format\我的基于Microsoft修改的设置.clang-format -i !E

如果你想使用某种风格(以Microsoft为例)的默认配置,Arguments可为:

-style=Microsoft -i !E

设置完成后可通过Tools -> Clang format Current File调用。注意,必须先Ctrl+S保存修改后再调用格式化程序,程序才起作用。

如果想更方便的调用Clang-format,可以设置快捷键,方法如下:

Edit -> Configuration…,打开配置窗口,在Shorteut Keys界面找到Tools:Astyle Current File,点击Create Shortcut,输入想设置的快捷键即可。


五. Clang-format格式化效果展示


六. 在Vscode中使用Clang-format

Vscode中对C语言代码进行格式化也可以使用Clang-format,方法如下:

在扩展商店中搜索C,找到C/C++ Extension Pack,安装它。如下图所示。

此扩展是Microsoft官方扩展,是C/C++、C/C++ Themes、CMake、CMake Tools的合集,所以,想Vscode支持C语言,安装这一个扩展即可。

打开C/C++扩展设置,选择格式设置,可在Clang format style中指定格式化风格,为保证keil和Vscode对C语言代码的格式化风格一致,可指定同一文件为风格配置的文件,如:

file:F:\Onedrive\myPortableSoftware\Clang-format\我的基于Microsoft修改的设置.clang-format

另一种方式是不单独下载clang-format.exe,就使用Vscode的C/C++扩展中自带的clang-format.exe程序,它一般可以在以下路径中找到:

不过还是推荐去下载clang-format.exe,这样配置路径可以不变,而Vscode中的clang-format.exe路径会因为插件更新而改变。

七. Clang-format程序与设置分享

这里和各位同学分享一下clang-format.exe程序(目前版本16.0.4,持续更新以保持最新)、六种默认风格设置、我的基于Microsoft修改的设置 以及 配置选项注释(对各个配置选项的含义都有注释),可帮助各种同学直接使用clang-format.exe与理解配置选项的含义。

欢迎大家关注我的公众号:徐晓康的博客,回复以下四位数字获取。

1520

建议复制过去不会码错字!


徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐