夜雨聆风学习资料网

ARTICLE · 1231966

AI加速了编程,Sonar用验证注入信心

AI加速了编程,Sonar用验证注入信心

本文探讨了AI编码工具虽能大幅提升短期生产力,但也带来了技术债务和验证滞后的问题。Sonar提出了跨越智能体循环、CI验证循环和代码维护循环的验证框架,帮助团队在追求开发速度的同时确保代码质量与安全。

译自:AI sped up coding. Sonar instills confidence with verification.[1]

作者:Megan Carnegie

AI 编码工具可以带来惊人的生产力爆发——但这种初期的激增可能无法持久。卡耐基梅隆大学对采用 Cursor 的公共代码仓库进行的一项研究[2]发现,在第一个月内,新增代码行数增加了三到五倍,但这些增幅在大约两个月后便消散了。该研究使用 SonarQube(Sonar 的核心平台)来衡量代码质量,还发现静态分析警告上升了 30%,代码复杂度上升了 41%。因此,短期的速度提升伴随着技术债务的持续增加。

Sonar 的 AI 工程参与总监 Tom Howlett[3] 告诉 The New Stack,尽管编程速度加快了,但许多团队仍然依赖人工代码审查的验证环节却没有跟上。Howlett 告诉 The New Stack,如果开发人员在依赖相同审查流程的同时生成多出 50 倍的代码,花在代码审查上的时间就会增加并成为瓶颈。

还有一个复杂的情况。智能体并不总是知道如何做出交付功能所需的最小改动。如果没有关于代码库的足够上下文,它们可能会进行假设、生成不必要的代码并增加技术债务。正如 Howlett 所言,你最终会得到更复杂、更冗长的代码,从而使问题更加恶化。

对工程领导者的启示是,更快的代码生成并不一定意味着更高的价值。团队还需要确信代码能够交付预期的结果并符合他们的标准。Sonar 通过其代码置信度公式[4]对此进行了描述:意图(intent)× 护栏(guiderails)× 验证(verification)× 证据(evidence)。Howlett 补充说,这种乘法是刻意为之的:如果缺少任何一个元素,置信度就会崩塌。

将该公式付诸实践不仅仅需要最终审查。团队需要将其构建到构成现代开发的三个相互连接的循环中:

  • • 智能体循环,在代码创建之时
  • • CI 验证循环,在更改被测试并准备合并之时
  • • 代码维护循环,在代码库在发布后不断演进之时

这种全天候的方法使团队能够在追求智能体速度的同时,保持可靠开发工作流所需的代码质量、安全性、可靠性和治理标准。

缺失的纪律:工作流中的验证

正如 Howlett 所描述的那样,让生成代码的模型来审查自己的工作,“就像学生给自己的作业打分一样”。编码智能体是出色的程序员,但它们的输出无法保证一致性。Howlett 告诉 The New Stack,因为它们是概率性的而非确定性的,你永远不知道它们会漏掉什么,而且 AI 代码审查不能成为你唯一的防线。

“……就像学生给自己的作业打分一样。”

当合并请求(PR)变得更大、更频繁时,仅靠人工审查是无法扩展的。承受交付压力的开发人员很容易对他们没有时间逐行检查的更改闭眼盖章。

Sonar 的产品和解决方案营销总监 Anirban Chatterjee[5] 告诉 The New Stack,如果你等到那个时候才去验证,智能体可能已经犯了三、四或五次同样的错误。他补充说,目标应该是防止该错误进入 PR 并被重复。

自动化验证可以捕获不同类别的问题,而人类开发人员则继续对质量负责,并专注于高风险的更改。

循环一:智能体循环 — 提高创建时的效率

Sonar 的智能体中心化开发周期(Agent Centric Development Cycle,简称 AC/DC)通过将指导、生成、验证和修复置于智能体工作流中,应用了这一原则。最早介入的机会也是最早的:当智能体仍在编写代码时。在智能体循环[6]中,指导和自动化代码验证与代码生成并存:智能体接收其所需的上下文、进行更改、检查并修复任何问题,然后才继续下一步。

上下文很重要,因为智能体不像经验丰富的开发人员那样从对代码库的深厚知识开始,后者已经了解架构、相关文件和既定的编程实践。如果没有这种理解,智能体可能会做出不必要的假设、触及太多文件或生成超出任务需要的代码。

Chatterjee 告诉 The New Stack,智能体必须在前期做大量的探索并搜索不同的文件,这可能是昂贵的,在更复杂的代码库中更是如此。在项目需要时为智能体提供其准确需要知道的内容(从项目标准到历史问题)可以减少探索性工作,并帮助生成适合现有系统的代码。

然后,AI 代码验证会在智能体进行每次更改时进行,而不是等待 PR。这给了智能体在任务仍然受控时、在同一个错误在其他地方重复之前解决问题的机会。

Chatterjee 说,开发人员社区都知道,越早发现问题,在代码中修复的成本就越低——在智能体世界中也是如此。他补充说,SonarQube 的分析是以计算方式运行的,因此识别问题不需要要求生成式 AI 模型审查其自己的输出并消耗额外的 Token。智能体可以将这些 Token 用于修复已验证的问题,而开发人员则可以获得更干净的更改来评估。

循环二:CI 验证循环 — 在合并时扩展置信度

智能体循环在编写代码的同时捕获并修复问题。然后,CI 验证循环[7]在所提出的更改进入共享代码库或走向生产之前对其进行整体评估。

它为对质量、安全性、依赖项和可维护性进行一致的检查提供了一个独立的点,通过清晰的质量门禁应用企业的标准。第一个循环应该意味着到达 CI 的问题更少,但第二个循环至关重要,因为它在生成代码的智能体之外提供了另一层审查。

其目的不是取代人类的问责制,而是使问责制在智能体的体量和速度下切实可行。Howlett 告诉 The New Stack,人类开发人员仍然负有责任,但他们需要专注于需要人类判断的决策和风险。他补充说,像以前一样以同样的彻底性审查每一行代码是不现实的,因为代码太多了。借助自动化检查和 AI 辅助审查缩小范围,开发人员可以专注于重要的设计、业务和风险决策,而不必以相同的强度审查每一行代码。

当然,审查应该与失败的后果相匹配。低风险的内部应用程序可能需要更轻量的审查流程,而支持每天移动数十亿美元的银行系统的软件则需要额外的验证层和更多以人为中心的监督。AI 编码工具可以突出显示令人担忧的领域,但应该置于零信任、多层的方法之中。没有任何单一检查(包括生成代码的模型)单靠自身是足够的。

SonarQube 执行自动化代码分析,实时跨所有代码识别漏洞、安全隐患、架构和复杂性问题。Sonar 于 2026 年 5 月收购的 Gitar[8] 增加了 AI 驱动的审查,包括合并请求评论、摘要、演练和图表。这些多层技术共同帮助团队以智能体的速度扩展软件开发,同时对发布的内容注入信心。

循环三:代码维护循环 — 随着时间推移保护投资回报率(ROI)

AI 编码工具不是针对静态代码库运行的。今天生产的代码成为未来智能体学习和工作的上下文,因此质量低劣的代码、不一致的模式和技术债务可能会自我强化。

“今天生产的代码成为未来智能体学习 and 工作的上下文,因此质量低劣的代码、不一致的模式和技术债务可能会自我强化。”

这使得代码库准备就绪成为大规模采用 AI 的先决条件。Chatterjee 建议开始大规模使用 AI 的组织确保代码高质量且没有漏洞。Chatterjee 告诉 The New Stack,确保你的代码健康且最新,以便智能体有更好的基础来工作,并一次试验几个 AI 工具以找到适合你团队的工具。

这三个循环都是必需的,因为每一个都为下一个改善了条件。代码维护循环[9]必须是持续且一致的。后台分析和修复可以在遗留问题、安全漏洞和累积的技术债务阻碍未来开发之前将其识别出来。

没有这项工作,智能体可能会花更多时间在复杂性中导航、消耗更多 Token,并难以生成易于验证的更改。维护保护了有效代码生成和验证的条件。

追求 AI 赋能的速度

对于扩展 AI 编码工具的领导者来说,首先要在整个组织中就优质软件的标准达成共识。由此,团队可以将验证构建到工作流中。

Chatterjee 和 Howlett 的建议是:

  • • 定义意图并设定共享标准。 确立更改应实现的目标,以及它必须满足的质量、安全性、可靠性和可维护性期望。
  • • 准备和维护代码库。 优先处理现有的漏洞、安全隐患、不一致的做法和架构问题,以便智能体拥有更强大的工作基础。将此视为持续的工作,而不是一次性的清理。
  • • 以受控的方式进行试验。 针对相同的独立标准比较 AI 工具和工作流。
  • • 更早进行验证。 将自动化代码验证连接到智能体工作流中,以便在编写代码的同时识别和修复问题。
  • • 根据风险进行指导和治理。 为智能体提供相关的上下文、清晰的约束和升级边界。在失败可能产生严重后果的地方应用额外的验证层、审批和人工审查。

每周开发人员播客 The Next Commit[10] 的主持人 Howlett 建议衡量团队是否完成了更多可管理的合并请求、更频繁地发布以及缩短了周期时间。他警告不要将代码行数作为衡量标准。“如果那个数字大幅上升,那我们就遇到麻烦了。”只有在质量保持稳定或提高的情况下,更多的输出才有意义。

“如果那个数字大幅上升,那我们就遇到麻烦了。”

AI 编码的价值与其说取决于智能体产生多少代码,不如说取决于团队能够多么自信地将这些代码投入使用。这三个验证循环将原始生成转化为值得信赖的速度,在不牺牲质量的情况下实现 AI 驱动的速度。SonarQube 提供独立的验证,将这种纪律应用到他们选择的工具和环境中。

引用链接

[1] AI sped up coding. Sonar instills confidence with verification.: https://thenewstack.io/ai-coding-verification-loops/[2] 研究: https://arxiv.org/html/2511.04427v2[3] Tom Howlett: https://www.linkedin.com/in/tom-howlett-85ab6716/[4] 代码置信度公式: https://thenewstack.io/ai-code-confidence-gap/[5] Anirban Chatterjee: https://www.linkedin.com/in/anirbanc/[6] **智能体循环**: https://docs.sonarsource.com/agent-centric-development-cycle/inside-your-agent-the-agentic-loop/agentic-loop[7] **CI 验证循环**: https://docs.sonarsource.com/agent-centric-development-cycle/in-your-pull-requests-the-ci-verification-loop/ci-verification-loop[8] Gitar: https://www.sonarsource.com/products/gitar/[9] **代码维护循环**: https://docs.sonarsource.com/agent-centric-development-cycle/in-your-long-living-branches-the-code-maintenance-loop/code-maintenance-loop[10] *The Next Commit*: https://thenextcommit.substack.com/

相关学习资料