我怎样才能只应用一个clang格式的动作?

时间:2015-06-10 17:58:41

标签: c++ code-formatting clang-format

我想使用 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不能在任何地方制作任何代码。

2 个答案:

答案 0 :(得分:6)

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

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

首先它运行clang lexer和parser,然后它将标记组分成&#34;未包装的行&#34;如果没有列限制,那么我们希望将这些令牌放在一行上#34;然后,layouter根据各种约束确定每个展开行的格式,并针对各种惩罚进行优化。

所以,我不会想到&#34;一个铿锵的格式动作&#34;实际上是一件事,设计对我来说看起来非常单一。

答案 1 :(得分:1)

clang-format没有执行此操作的机制。 我使用的姑息方法是通过两种不同的方式配置要更改的内容,同时使用两种配置运行该工具并进行比较,以告诉我影响到所需内容的更改,但总的来说,这至少需要一些手动工作。 / p>

clang-format是一个好主意,但实现不佳。它有许多缺陷,其中有些是无法选择指示更改原因的,XML输出格式不能由任何其他流行的工具使用。