几个月前,我开始认真审查 Leverage——一个在生产运行多年的 NestJS Online Judge 平台。零测试。没有 lint 强制执行。没有正式的审查流程。只有在 deadline 压力下一个功能接一个功能长出来的代码。
最终我整理出了 29 个问题。有些是小的风格问题,有六个是那种让你盯着屏幕半天想"这个……一直在跑?"的 bug。
这篇文章讲的是那六个。
审查方法
在深入具体 bug 之前,先说说我的方法论。审查一个大型的、零测试的代码库,靠随机探索是不行的,你会漏掉东西。我用了三个切入点:
1. 用 commit 历史作为 bug 地图。 名字是 fix/issues、hotfix/ranking 这类的分支是金矿。commit message 告诉你开发者知道什么出了问题。倒着读那些 diff——fix 之前的代码就是你要在代码库其他地方寻找的东西。
