【问题标题】:Code formatting before commit to GIT提交到 GIT 之前的代码格式化
【发布时间】:2017-02-13 21:43:05
【问题描述】:

据我了解,当两个开发人员在同一个项目上工作,但使用不同的编码风格时,GIT 中没有内置的方式来统一提交的源代码。如果我错了,请纠正我。

我是否应该要求所有开发人员使用相同的样式格式化代码?

我可以要求 GIT 以某种方式按照相同的样式格式化代码吗? BitBucket可以实现自动编码格式吗?

【问题讨论】:

  • "我是否应该要求所有开发人员使用相同的样式格式化代码?"绝对没错。选择一个风格指南并在项目中坚持下去。如果您进行代码审查,请将代码样式作为审查的一部分。如果有一个工具可以根据您的语言的某些标准自动检查代码,请使用它。

标签: git bitbucket code-formatting


【解决方案1】:

据我所知,BitBucket 不具备此功能。

但我认为找到一种通用的样式是个好主意,以提供快速的交换。

为此,如果可能的话,有时使用具有集成格式功能的 IDE 并共享设置很有用。 我认为 Eclipse 会是一个很好的解决方案,因为支持的语言很多。

在我的团队中,我们使用的是 MS Visual Studio 和 Allmann Style,因为它本身就受到自动格式化的支持。

【讨论】:

    【解决方案2】:

    您可以在每台开发人员机器上安装 pre-commit-hook 并运行您选择的 linter,以防止开发人员在源代码不符合团队标准时提交。

    缺点是开发人员可以通过简单地不在本地安装钩子来超越这种机制。

    另外,linter 应该作为构建过程的一部分运行,如果代码格式不正确,则构建失败。

    【讨论】:

      【解决方案3】:

      我是否应该要求所有开发人员使用相同的样式格式化代码?

      是的,这是个好主意。

      项目通常都有编码风格指南,以减少出现问题的可能性。这些范围可以从非常宽松到非常严格。指南包括但不限于布局和格式。

      与我合作过的大多数开发人员都非常乐意采用手头项目的风格,即使这不是他们的个人风格。这是为了更大的利益。它有助于提高可读性并减少“格式化修复”与实际更改混在一起的机会。如果我正在编辑没有指定样式指南的代码,我会尽量遵守现有的样式。

      您的开发人员可以做的最糟糕的事情是在提交之前通过具有自己的布局规则的自动格式化程序运行整个源文件。这可能会导致与他们所做的工作实际上不相关的地方发生彻底的变化,并且当您在多个分支中工作时总是会导致痛苦的合并冲突。

      我可以要求 GIT 以某种方式按照相同的样式格式化代码吗? BitBucket可以实现自动编码格式吗?

      我将通过质疑您为什么要这样做来回答这个问题。小心使用基于“不正确”样式进行自动格式化或拒绝提交的提交挂钩。

      这就是代码审查的目的,并且在代码中总是存在人类会做得更好的例外情况(例如,在 C++ 领域,clang-format 大部分工作都做得很好,但几乎所有涉及非平凡初始化程序的事情都很糟糕列表)。强迫每个人都接受机器的解释很可能只是阻碍。

      【讨论】:

      • 不,这是个糟糕的主意。尚未设计出完美的解决方案(商机,伙计们),但理想的解决方案将是双向格式化程序 - 当您签出某些内容时,它会格式化为您想要的设置,当您重新签入时,它会将其设置为公司标准。明显的解决方案,不涉及代码纳粹主义。
      【解决方案4】:

      我是否应该要求所有开发人员使用相同的样式格式化代码?

      是的,可能有几个工具可以帮助您。

      Som 编辑器和环境支持名为 .editorconfig 的文件格式,您可以在其中指定编码风格。例如制表符或空格,如果空格,一个代码缩进多少个空格。 https://editorconfig.org/

      我在 it works very well 的 Visual Studio 中使用它。其他环境或编辑器可能会要求您在支持插件之前添加插件(如可视化代码),或者在项目中有自己定义代码样式的方式。

      我可以要求 GIT 以某种方式按照相同的样式格式化代码吗? BitBucket可以实现自动编码格式吗?

      如果您想强制执行代码样式而不是仅仅同意它(.editorconfig),那么您可能需要查看 git 挂钩。

      我个人对它们没有任何经验,但给出的示例之一是“执行项目编码标准”。所以你可能想调查一下。

      https://githooks.com/

      【讨论】:

        猜你喜欢
        • 2014-05-16
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        • 2012-03-13
        • 2013-04-28
        • 2011-07-03
        • 1970-01-01
        相关资源
        最近更新 更多