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

Tre*_*key 25 c++ code-formatting clang-format

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

选项是: AlignTrailingComments (bool).

但是当我运行以下内容时:

clang-format-3.6 -i -style='{AlignTrailingComments: true}' <file>
Run Code Online (Sandbox Code Playgroud)

它执行各种其他格式化选项,我想在未指定时具有默认值.

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

拥有所有这些默认值后,很难看到单个格式选项对代码的完整影响.我必须解析所有这些其他更改的差异,并确定它是否是我指定实际执行的选项.


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

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

clang-format-3.6 -i -style='{DisableFormat: true, AlignTrailingComments: true}'
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*eck 8

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

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

首先它运行clang词法分析器和解析器,然后它将标记组分成"未包装的行",这是"如果没有列限制我们想要将它们放在一行上的标记".然后,布局器根据各种约束确定每个展开的线的格式,并针对各种处罚进行优化.

所以,我不认为"一个铿锵格式的动作"实际上是一个东西,设计对我来说看起来非常单一.

  • 不幸的是,这似乎是正确的答案. (5认同)

The*_*Zoo 6

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

clang-format这是一个好主意,但实施得很差。它有许多缺陷,其中一些缺陷是无法指示更改的原因,任何其他流行工具都无法使用 XML 输出格式......