首页 > 解决方案 > 有没有办法使用 clang-format 来做“只缩进”?

问题描述

我想避免格式化代码在某种程度上变得更糟的情况,因此人们避免将来尝试通过诸如 clang-format 之类的方式使我们的代码库变得更好。在我们的例子中,至少我们可以就空格达成一致,制表符是 4 个空格。所以只改进压痕只能是一件好事。

Eclipse 具有“更正缩进”的功能(通过菜单 --> 源 --> 更正缩进):

Eclipse 的“正确缩进”只是缩进,但它不是一个 shell 命令,我想要/需要一个 shell 命令,以便我可以在所有源代码文件上运行该命令。

有没有办法使用 clang-format 来做“只缩进”?如果是,如何?

例如,只有空格,4 个空格。

标签: c++cautomationclang-format

解决方案


Clang-format 始终使用默认格式。您可以自定义它。如果您不指定样式,则选择默认的 clang 格式。[1],[2]

不幸的是,您不一定只修复缩进。

在对您的问题的评论中,KamilCuk 建议使用indent可能指的是https://www.gnu.org/software/indent/

我考虑过配置一个只做缩进的自定义样式,但是,在查看样式选项时,不幸的是,有些可能会改变代码库,具体取决于它的外观,比如AllowShortIfStatementsOnASingleLine This disallows the co-existence of

if (a)
  return ;
else {
  return;
}
if (b) return ;
else {
  return;
}

因此,您可能会找到适用于您的代码库的特定配置,但这将是高度具体且脆弱的。

[1]

配置文件可以由几个部分组成,每个部分具有不同的语言:参数表示该配置部分所针对的编程语言。有关支持的语言列表,请参阅下面的语言选项说明。第一部分可能没有设置语言,它将为所有语言设置默认样式选项。特定语言的配置部分将覆盖默认部分中设置的选项。

https://clang.llvm.org/docs/ClangFormatStyleOptions.html#configuring-style-with-clang-format

[2]

本节列出了支持的样式选项。为每个选项指定值类型。对于枚举类型,可能的值既可以指定为 C++ 枚举成员(带有前缀,例如 LS_Auto),也可以指定为配置中可用的值(不带前缀:Auto)。

BasedOnStyle (string) 用于未在配置中专门设置的所有选项的样式。

https://clang.llvm.org/docs/ClangFormatStyleOptions.html#configurable-format-style-options


推荐阅读