42

我想使用clang-format来对齐我的评论,但没有别的。

选项是: AlignTrailingComments (bool)

但是当我运行以下命令时:

clang-format-3.6 -i -style='{AlignTrailingComments: true}' <file>

它执行我认为在未指定时具有默认值的各种其他格式选项。

如何在代码库上只执行一个 clang 格式化规则?

拥有所有这些默认值使得很难看到单个格式化选项对代码的全部影响。我必须解析所有这些其他更改的差异,并确定它是否是我指定的选项实际上做了它。


我注意到有一个DisableFormat选项,但无论我如何使用它,它都会阻止任何格式的发生。

clang-format-3.6 -i -style='{AlignTrailingComments: true, DisableFormat: true}'

clang-format-3.6 -i -style='{DisableFormat: true, AlignTrailingComments: true}'

两者都导致 clang-format 在任何地方都不能生成任何代码。

4

2 回答 2

20

我认为 clang 格式根本不是为此而设计的。规则不是它增量应用的东西,而是围绕程序构建,解析整个程序并忘记(大部分)旧空白,并根据您选择的规则生成新空白。

您可以在此处查看架构的一些概述:http ://www.llvm.org/devmtg/2013-04/jasper-slides.pdf

首先,它运行 clang 词法分析器和解析器,然后将标记组划分为“展开的行”,即“如果没有列限制,我们希望将标记放在一行中”。然后布局器根据各种约束和优化各种惩罚来确定每个展开行的格式。

所以,我不认为“一个clang格式的动作”实际上是一件事,这个设计对我来说看起来非常单一。

于 2015-08-24T20:28:54.007 回答
5

clang-format没有这样做的机制。我使用的姑息方法是以两种不同的方式配置我想要更改的内容,我使用两种配置运行该工具并对其进行比较,这告诉我影响我想要什么的更改,但总的来说,这至少需要一些手动工作。

clang-format是一个实施不佳的好主意。它的许多缺陷中的一些是没有选项让它指示更改的原因,XML 输出格式不能被任何其他流行工具使用......

于 2020-09-03T23:10:51.803 回答