QCon AI 纽约 2025:AI冲击SDLC,PR失效?探究AI开发困境与解决方案
CircleCI 首席工程师 Michael Webster 在首届 QCon AI New York 2025 大会上发表了题为 “AI 有效,但拉取请求无效:AI 如何颠覆 SDLC 以及应对之策” 的演讲。
Webster 以 AI 时间轴和我们当前所处的位置拉开了演讲序幕:
[LOADING...]
越来越多的组织将 AI 整合到其开发工作流程中,导致代码生成量增加。
一项由卡内基梅隆大学软件工程博士生 Hao He 领导的 AI 辅助编码研究,重点关注了 2000 多个开源项目的长期影响,比较了那些集成了代理式 AI 编码助手 Cursor 的项目与一组未集成 Cursor 的匹配项目。研究得出结论,Cursor 生成的静态分析警告和代码复杂性持续增加,从而提高了开发速度和软件质量。然而,这种提升只是暂时的,仅持续了大约一个月,之后观察到开发速度有所下降。
同样,DORA 进行的 AI 辅助软件开发现状研究得出结论,AI 辅助编码是一种放大器,可以提高开发速度,但同时也观察到不稳定性增加。
关于代码审查,代码增加量通常是代码删除量的 25 倍,这对任何组织都是一个挑战。根据 Graphite 发布的这份 代码审查现状报告,小型组织合并一个拉取请求大约需要四个小时,而大型组织则需要大约 13 个小时。然而,研究发现这种差异是由于小型组织跳过正式代码审查的可能性是大型组织的四倍以上。
Webster 讨论了 AI 对 CircleCI 的软件开发生命周期 (SDLC) 和持续集成/持续交付 (CI/CD) 流程的影响。
在其 SDLC 中使用 AI,在观察到持续的技术债务积累之前,开发速度提升了三到五倍,持续了大约一个月。
排队论是等待线的数学研究,通过分析到达率、服务时间和系统容量来预测队列的长度和等待时间。一个例子是利特尔法则 (Little's Law),其定义为 L = λW,其中:
- L = 系统中项目的平均数量
- λ = 平均到达率 = 退出率 = 吞吐量
- W = 项目在系统中的平均等待时间(内部持续时间)
Webster 利用排队论的一种形式,将延迟定义为到达率大于处理率的情况。
传统的测试方法是运行完整的测试套件。使用代码覆盖率可以通过以下方式减少测试时间:构建用于测试的代码映射;运行带有依赖项的测试;以及定期重建。
测试影响分析 (TIA) 是一种测试策略,它仅识别并运行受最新代码更改影响的测试,从而避免运行整个测试套件,以提高 CI/CD 吞吐量并最终降低成本。测试通过代码覆盖率数据进行映射。
Webster 展示了 CircleCI 使用的 TIA 策略,其中包含一个从已定义端点到相关 TypeScript 测试文件的映射。在最近一项涉及 7500 个测试的研究中,使用这种 TIA 策略将测试时间从 30 分钟缩短到 1.5 分钟。他认为同样的原则也可以应用于代码审查,因为并非所有代码都需要相同级别的审查。
Webster 通过介绍 CircleCI 开发的 AI 代理 Chunk 结束了他的演讲,该代理声称“以 AI 速度验证代码”。其流程是:首先进行验证;使用开发人员已在使用的流水线和环境;通过修复不稳定测试并提供正确的测试和代码覆盖率,使软件产品随时可投入生产;以及从合并、回滚、撤销和评论中学习。