如何只应用一个clang-format操作?

How can I apply only one clang-format action?

本文关键字:一个 clang-format 操作 应用      更新时间:2023-10-16

我想使用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格式根本不是为此设计的。规则不是它逐渐应用的东西,相反,程序是围绕解析整个程序并忘记(大部分)旧的空白,并根据您选择的规则生成新的空白而构建的。

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

首先它运行clang词法分析器和解析器,然后它将标记组划分为"未包装行",这些行是"如果没有列限制,我们希望将标记放在一行上"。然后,layouter根据各种约束和针对各种惩罚进行优化,确定每个未换行行的格式。

所以,我不认为"一个clang-format action"实际上是一个东西,在我看来,这个设计相当单一。

clang-format没有这样做的机制。我使用的缓和方法是以两种不同的方式配置我想要更改的内容,我用两种配置运行该工具并对它们进行区分,它会告诉我哪些更改会影响我想要的内容,但通常这至少需要一些手工工作。

clang-format是一个好主意与一个糟糕的实现。它的一些不足之处是无法让它显示更改的原因,XML输出格式不能被任何其他流行的工具使用…