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

How can I apply only one clang-format action?

我想使用 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 无法在任何地方生成任何代码。

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

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

首先它运行 clang 词法分析器和解析器,然后它将标记组分成 "unwrapped lines",即 "tokens we would like to put together on a single line if there was no column limit"。然后布局器根据各种约束确定每条展开行的格式并针对各种惩罚进行优化。

所以,我不认为 "one clang-format action" 实际上是一个东西,这个设计对我来说看起来非常单一。

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

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