【问题标题】:Reasons to fail a build构建失败的原因
【发布时间】:2011-01-15 09:57:09
【问题描述】:

作为一名构建工程师,我一直在寻找新的有趣的方法来改进我们的构建过程,其中包括寻找新的有趣的方法来使我们的构建失败!

我还没有找到一个规范的构建失败原因列表......所以我认为是时候创建一个了。考虑到这一点:

哪些构建时检查——明显的和创造性的——你见过失败的构建吗?

【问题讨论】:

  • 可能 ;-) 维基吧!

标签: build-process build continuous-integration build-automation


【解决方案1】:
  • 编译失败
  • 单元测试
  • 集成测试
  • 系统测试
  • 命名约定
  • 代码质量
  • 回归测试

【讨论】:

    【解决方案2】:
    • 编译失败
      • 生产代码
      • 测试类
    • 任何类型的测试失败:
      • 单元测试
      • 集成测试
      • 功能测试
      • 性能测试
    • 不符合质量检查:
      • 编码约定(Checkstyle)
      • 测试覆盖率(Clover、Cobertura 等)
      • 错误模式检测(FindBugs、PMD、Hammurapi)
      • 复制粘贴检测(CPD、Symian)
      • 二进制兼容性 (Clirr)

    【讨论】:

      【解决方案3】:

      构建中未批准的签入。诸如签入代码之类的东西与工作项或错误修复无关。

      【讨论】:

      • +1:经常被忽视,但在支持是日常工作的团队环境中非常有用。
      【解决方案4】:

      代码未通过自动质量检查(FxCop 等)。

      【讨论】:

        【解决方案5】:

        单元测试失败。

        【讨论】:

          【解决方案6】:

          在他介绍 Continuous Integration 的文章中,Martin Fowler 将 failure to run the application's suite of unit tests 作为构建失败的一个令人信服的理由。

          【讨论】:

            【解决方案7】:

            编译失败警告

            【讨论】:

              【解决方案8】:

              在模块之间引入循环依赖(例如 java 包)。

              【讨论】:

                【解决方案9】:

                我的公司实际上并没有这样做,但是对于像我们这样的大型遗留代码库,最好在未记录的更改上失败。如果没有某种错误单,我们的 QA 部门就不会知道要测试这些更改,这太可怕了!

                【讨论】:

                  【解决方案10】:

                  检查不同 jar 文件 (Java) 中的重复类(相同的包和类名)。

                  【讨论】:

                    【解决方案11】:

                    代码覆盖率降低或低于可接受的阈值。

                    【讨论】:

                      【解决方案12】:

                      像检查编译失败这样简单的事情应该被认为是强制性的,nuff 说

                      导致构建损坏的签入应该是不可接受的,尽管可悲的事实是许多组织确实接受这种情况。

                      如果编译失败:

                      • …您将没有要使用或运行的二进制文件。
                      • ...您无法运行测试和分析来确保其正常工作。
                      • ...您无法进行构建项目所需的任何其他检查。
                      • ……你无法取悦你的客户,因为你没有什么可展示的。

                      为什么? 因为构建已损坏

                      【讨论】:

                      • @Pascal Thivent:我很确定我很清楚这一点;我提到了一个检查,如果它没有编译,那么它显然没有工作。 IE。 (!Compiling == !Working)此时没有要求其他任何东西,因为操作员要求检查。我很确定这是显而易见的基础知识。
                      • 已编辑...至少现在我希望我能更好地解释它。如果您至少不检查编译失败,那么什么都不会起作用。呸! :P
                      猜你喜欢
                      • 2020-03-21
                      • 2011-07-16
                      • 2014-11-18
                      • 1970-01-01
                      • 2016-05-16
                      • 2016-06-08
                      • 2017-08-23
                      • 1970-01-01
                      • 2022-07-07
                      相关资源
                      最近更新 更多