@我们先来看看, 这个错误是经过了怎样的“工序”, 穿越了多少障碍, 需要多少运气, 最终才能
被“发布”出来
第一道关: 程序员
优秀的代码源于我们对细节的热情和执着
编译器
在这里, 我要提醒你的是, 对于编译器的警告, 我们一定要非常警觉。 能消除掉所有的警告, 你
就应该消除掉所有的警告。 就算实在没有办法消除掉编译警告, 那你也一定要搞清楚警告产生的
原因, 并确认编译警告不会产生任何后续问题
回归测试 ( Regression Testing)
软件测试会尽可能地覆盖关键逻辑和负面清单, 以确保关键功能能够正确执行, 关键
错误能够有效处理。 一般情况下, 无论是开发人员, 还是测试人员, 都要写很多测试代码, 来测试软件是否达到预期的要求。
这些测试代码还有一个关键用途就是做回归测试 。 如果有代码变更, 我们可以用回归测
试来检查这样的代码变更有没有使代码变得更坏
代码评审
代码评审是一个有效的在软件研发过程中抵御人类缺陷的制度。 通过更多的眼睛检查软件代
码, 被忽视的错误更容易被逮住, 更好的设计和实现更容易浮现出来。
那代码评审是怎么实现的呢? 一般情况下, 代码评审是通过阅读代码变更进行的。 而代码变更一般通过某种形式的工具呈现出来。 比如OpenJDK采用的Webrev。 你可以访问我的一个代码评审
使用的代码变更页面 , 感受下这种呈现方式。
第五道关: 代码分析
静态代码分析(Static Code Analysis) 是通过对源代码的检查来发现潜在问题的一种软件质量保
障方式。 有很多静态代码分析工具可以帮助你检查代码缺陷, 比如说商业软件Coverity, 以及开
源软件FindBugs。 你可以试试看, 有哪些工具可以检测到这个“GoTo Fail”问题。
代码覆盖率(Code Coverage) 是一个反映测试覆盖程度的指标。 它不仅仅量化测试的指标, 也
是一个检测代码缺陷的好工具。