【发布时间】:2020-08-28 10:20:32
【问题描述】:
使用 clang-format 命令行工具两次格式化同一文件时,两次都会进行更改。
我的理解是,一旦格式化,尝试重新格式化同一个文件不会产生任何变化。
这是我运行的测试:
输入文件
$ cat test.c
//********************************************** AAAAAAA BBBB***************************************************//
- 第一种格式 - 按预期进行的更改
$ clang-format -i test.c
$ cat test.c
//********************************************** AAAAAAA
//BBBB***************************************************//
-
第二种格式 - 第二行出现意外变化(
BBBB之前添加了额外的空格)**
$ clang-format -i test.c
$ cat test.c
//********************************************** AAAAAAA
// BBBB***************************************************//
- 第三种格式 - 最终产生相同的结果。
我正在使用的版本是:Ubuntu 18.04.2 上的10.0.0-++20200323042644+d32170dbd5b-1~exp1~20200323154014.129(请注意,我也设法在clang-format-9 中重现了这种行为)
这是我遇到的错误,还是我最初的假设不正确?
编辑:也可在10.0.1-++20200507062652+bab8d1790a3-1~exp1~20200507163249.158 中重现
【问题讨论】:
-
第一种格式不应做出违反格式规则的更改。您可以将此作为错误提交,但这看起来影响很小(即是否有更具体的生产代码受此影响?)
-
@RossJacobs 问题是我想将 clang-format 集成到我们公司的 CI 流程中(例如检查代码格式是否正确的工作)基本上不管影响有多小,它都是足以破坏构建此外,这只是众多示例中的一个。我们正在尝试重新格式化一个非常大的代码库,它需要 4 次 clang 格式传递,直到它达到稳定状态
标签: c llvm code-formatting clang-format idempotent