ClangFormat 作为替代格式化器
ClangFormat 是一种流行的代码格式化工具,可帮助团队成员和 IDE 之间保持统一的代码样式。 它提供了一种选项,可以将格式化设置存储在特殊的 YAML 文件中,文件名为 .clang-format 或 _clang-format 。 在 CLion 中,您可以使用 ClangFormat 作为内置代码格式化器的替代。
.clang-format 配置文件
具有格式规范的 .clang-format 文件应放置在项目树中。 每一个文件都适用于同一级别和子目录下的代码文件。 对于单个项目,拥有多个 .clang-format 文件可让您在需要时为不同的代码文件夹使用不同的样式。
ClangFormat 提供了许多 样式选项 ,您可以将其组合以创建最适合团队需求的规则集。 它还为 C/C++ 提供了几个内置样式: LLVM、 Google、 WebKit、 Chromium 和 Mozilla。 这些预定义样式可以按原样使用,也可以作为您的自定义样式定义集的基础。
要生成具有例如 LLVM 代码样式的 .clang-format 文件,请运行以下命令(确保已 安装 ClangTools):
在 CLion 中使用 ClangFormat
CLion 在项目根目录下有 .clang-format 文件时会自动启用 ClangFormat 并应用其设置。 您还可以通过以下选项之一启用或禁用 ClangFormat:
在 .h 、 .c 或 .cpp 文件中时,点击状态栏中的代码格式化切换器 启用 ClangFormat:

或者,在 中选中 启用 ClangFormat 复选框:

如果项目根目录下没有 .clang-format 文件,CLion 将建议根据当前的 IDE 代码样式设置创建一个。 如果您拒绝,ClangFormat 将启用默认的 LLVM 样式。

当您创建一个启用了 ClangFormat 的新项目时,CLion 会根据当前代码样式自动生成一个 .clang-format 文件。
启用 ClangFormat 后,将在以下情况下应用适当的格式化:
在编辑器中输入时(包括 Enter 或 退格 之后的缩进、自动补全、代码生成、重构和快速修复);
调用 代码 | 格式化代码 Ctrl+Alt+L ,此操作还允许您重新格式化选定的代码而不是整个文件;
提交更改时选择 重新格式化代码 作为 提交前 操作:

更改 clang-format 可执行文件(CLion Nova)
转到 并打开 通用 选项卡。
在 Clang-Format 部分中设置 使用外部 clang-format 替代内置版本 并提供路径:

检查一个文件的 ClangFormat 设置
在编辑器中打开文件并从工具栏切换器中点击 显示 ClangFormat 选项以用于 ...:

CLion 将显示从相应 .clang-format 文件中取出的设置列表:

此列表目前为只读。 要编辑设置,请直接在 .clang-format 文件中更改它们。
编辑 .clang-format 文件
在编辑器中打开所需的源文件,并从工具栏切换器中点击 打开 '.clang-format' 以用于 ...:

为了帮助您编辑 .clang-format 配置,CLion 提供了代码辅助功能,通过针对专门为 ClangFormat 构建的 JSON Schema 验证文件内容。 代码辅助功能包括:
选项和值的补全,并在弹出窗口中显示选项描述:

检查选项值是否与允许值集一致:

快捷文档弹出窗口 Ctrl+Q ,帮助您探索选项详情:

将格式化器设置导出到 .clang-format 文件
当您需要保存或共享内置代码格式化器的设置时,可以将它们导出到 .clang-format 文件中:
转到 。
点击
,位于 方案 字段旁边,并选择 导出 | .clang-format 文件:

在打开的对话框中,指定文件名和位置。 默认情况下,CLion 建议使用 .clang-format 和当前项目根目录。