2012 年 Google 重新格式化 10 万个文件的故事

神秘的会面 2012 年 9 月,我当时是谷歌的一名初级工程师,负责 巴塞尔 (Google 的构建工具,内部称为 Blaze)。有一天,我的收件箱里收到了一封神秘的日历邀请。这是由美国的两名工程师发送的,我和我的团队负责人一起收到了邀请。 我很快就认出了他们的名字:Rob Pike 和 Russ Cox。虽然我没有和他们合作过,但我对他们的名声很熟悉: 拉斯·考克斯 因为我喜欢读他的博客文章, 罗布·派克 因为,嗯……他很有名。在会议期间,Rob 和 Russ 分享了他们的雄心勃勃的计划:重新格式化 Google 代码库中的每个 Bazel BUILD 文件,并使用预提交脚本强制执行此格式。 代码格式 当时,代码格式化程序还不那么常见。Python 的 Black、Clang Format 或 Prettier 等流行工具还不存在。到处强制执行的格式化程序的主要示例是 戈夫姆特。由于 Russ 和 Rob 在 Go 团队工作,他们希望在 Bazel 的 BUILD 文件中复制这一成功。 BUILD 文件的格式不一致,混合了各种缩进样式,没有标准指南。复制粘贴的代码块通常很容易被发现,因为它们的格式很突出。过去关于样式指南的讨论表明,工程师之间存在很多分歧。之前编写格式化工具的尝试被采用的程度有限。它存在一些问题,很难被采用。 Russ 已经使用 Go 开发了该工具的新版本,称为 Buildifier。 编写格式化程序可能非常困难 在某些情况下,但复杂性取决于以下几点: 如何处理评论?Buildifier […]