🚀 CI+GPT 双引擎驱动,🤖 开启 AI 代码评审新纪元
一. 现状问题
代码评审 Code Review 是提高代码质量、促进团队合作、知识间共享的关键环节,对于系统代码质量和稳定性都至关重要。
二. 分析原因
🤔人为代码评审存在的弊端主要源于人力的局限性(如疲劳、无时间、主观偏见、认知局限等)。这些因素共同作用导致审查过程中可能出现的时间效率低、一致性差、错误遗漏和主观性问题。
🗣用五个词语总结: 易疲劳
****主观偏见
****规范少
****沟通难
****知识缺
三. 采取措施
![](https://static001.geekbang.org/infoq/af/af4f4fc7027ed61cd3e17709c4838e5a.png)
🤖 利用 AI 大模型进行代码评审,可以显著提高效率、减少人为错误,通过自动化分析和建议,弥补人为评审的局限性。同时还能促进代码一致性和质量,但需要适当的人机协作模式以充分发挥其潜力。
底层依赖: 京东言犀大模型、行云流水线(云原生)、单元测试脚本、coding 代码评审机制(webhook)
【简易版📌】AI 代码评审接入手册 👉 见评论 已成型机制,京东内部一键式接入!
![]()
群号见评论区哦!
![](https://static001.geekbang.org/infoq/17/176661204221f897dfbdcd5ccad3b527.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
四. 实践步骤
4.1 接入京东言犀大模型(行业内类 ChatGPT 大模型均可)
![](https://static001.geekbang.org/infoq/c7/c787965250a83d693da82c34d1e00e09.png)
言犀大模型文档 (JD 内部免费-代码安全)
申请接入 GPT( 评论区加群 or 私信我 审批连接):填写申请原因和基础信息。 🖐(行业内类 ChatGPT 大模型均可~)
![](https://static001.geekbang.org/infoq/b5/b565bc32c60d48d3f169e6c8196159ba.png)
审批完成会收到 API key (chatrhino-14B 暂时输入内容的最大长度为 45000 字符,通常代码修改可以满足)
![](https://static001.geekbang.org/infoq/5d/5d6442c18666386060185d9a6d19e3c1.png)
4.2 内置 AI Review 脚本(Git 代码库 API 打通)
1、调用 coding API(获取 MR 的 commit 起止点) 2、调用 coding API(获取本次代码 diff) 3、调用 GPT- API(京东大模型)
脚本链接汇总(评论区加群 or 私信我 获取): 目前支持的模型有 Chatrhino-14B(最新版本-选择此模型) 、Chatrhino、Chatrhino-JingYan 其它模型持续集成中。
![](https://static001.geekbang.org/infoq/85/8568109df1aec5a46988f062dbe57e5c.png)
AiCodeReview.java 脚本案例(java 语言-junit5 版本)粘贴到自己代码库中即可
📢注意:不必须依赖 junit5,可以自行切换 junit4,demo 只是提供框架思路,落地后可根据代码库场景优化脚本!
替换 2 个变量:
① API Token
•建议申请协同虚拟账号(优势:很稳定,不会随个人账号离职等变化):部门公共 AI 架构师评审,设置 API Token
【流程中心-协同办公-协同(虚拟)账号管理】👉 别忘了 coding 给他加个权限!
![](https://static001.geekbang.org/infoq/42/423c21ffbfa357db06e5ae30c622d574.png)
![](https://static001.geekbang.org/infoq/c9/c9374d6cd0fdd92fdaf70987aeae137c.png)
② PROJECT_ID:替换为您的 Git 应用 id(如下查看)
![](https://static001.geekbang.org/infoq/20/20f077a8b15a533449254d5c46a48e66.png)
③ 大模型 api-key:替换为您的 key(查看 4.1 部分)
![](https://static001.geekbang.org/infoq/e2/e260d49f8a171fa19021106353ac2cb5.png)
•核心脚本逻辑步骤 如下示例:
✋脚本内设定 AI 人设 (content 字段) :根据自己需求定义 prompt
比如你想用于分析本次改动业务语义、或者专注于找 bug、亦或者代码写法是否规范等
![](https://static001.geekbang.org/infoq/47/474f32462fe09e4b649b13c9022e7ece.png)
4.3 搭建 CI 流水线(持续集成)
① 新建流水线:导入 AI 流水线脚本模版 yaml 创建 AI Code Review 机制
![](https://static001.geekbang.org/infoq/c1/c166e948202c0d6488bcfba2e47a48e0.png)
流水线原子:【下载代码】+【java 编译】+【咚咚通知】
![](https://static001.geekbang.org/infoq/e2/e2edaafcfcd9da229774fc5772153242.png)
② 原子参数配置修改:【下载代码原子】+【maven 编译原子】改为自己代码库和脚本路径
•【咚咚通知原子】默认配置即可,📢 提交代码研发
✍️ 同部门下建议独立脚本代码库,projectID 动态传入,不同应用可实现《一键式接入》(只需导入流水线即可实现 AI 评审)-DprojectId=${globalParams.user.WEBHOOK_ATTR_PROJECT_ID}
![](https://static001.geekbang.org/infoq/67/67666571f94ec868a1eb7de5774a7fad.png)
![](https://static001.geekbang.org/infoq/ef/ef4f0835028be321ce92a2d390f1d628.png)
分支:${globalParams.user.BRANCH}
相对目录(脚本放置位置):${globalParams.system.APP_IDENTIFIER}
③【触发设置】绑定自己代码库,MR Create/Updated 事件(原因:coding 的 push 操作统一触发 mr create/update 操作)
![](https://static001.geekbang.org/infoq/8b/8bdfc05af2c0221a8b6893e7cee5dc5f.png)
4.4 配置 coding(Webhook 联合 CI)
① 增加【持续集成】账号 master 权限
![](https://static001.geekbang.org/infoq/25/250dc650eddff26be31ee2f84c19302c.png)
② webhook: 流水线生成的webhook链接(Push + Merge Resuest)
![](https://static001.geekbang.org/infoq/c2/c206296a4065b113e8038476b40c696a.png)
![](https://static001.geekbang.org/infoq/7f/7fff1ee32e01cd3c6c34989e743bb291.png)
③ 代码评审机制: 所有分支 push 时 自动创建 MR 阻塞合入*
![](https://static001.geekbang.org/infoq/21/21541c75458a3f64c2e6c0acccd14128.png)
五. 达成效果
5.1 Coding AI 评审记录
👉 不同系统根据自己需求来设定 AI 人设:有的可能用于分析本次改动业务语义、有的专注于找 bug、有的看代码写法规范度等
1.代码 push 稍等片刻 收到咚咚通知: AI 代码评审完成
◦自动创建 Merge Request 触发 code review 流水线,自动 AI 架构师-代码评审记录!
![](https://static001.geekbang.org/infoq/a3/a3bee68ce9243265948624eaa009420f.png)
![](https://static001.geekbang.org/infoq/c6/c6aa8ebdda5222f773c76b882563eead.png)
![](https://static001.geekbang.org/infoq/82/82f27b3552d47724a3e933950b02679b.png)
![](https://static001.geekbang.org/infoq/13/13921b1897ecf236c2551fb662f8e7f1.png)
👉 可以针对代码中【潜在 bug】和【不规范写法】可以指出优化建议!
![](https://static001.geekbang.org/infoq/62/62a0aca137fbcd9d17635827979daca5.png)
👉 可以分析代码变动,警示研发一些注意事项!
![](https://static001.geekbang.org/infoq/51/51c9ca35e7faa21ac23125b74142f01d.png)
5.2 流水线运行
![](https://static001.geekbang.org/infoq/05/05d039869cd2de592e088bcca520d286.png)
![](https://static001.geekbang.org/infoq/c0/c057d25ad52be39ce8f7456e649d6fd3.png)
![](https://static001.geekbang.org/infoq/e9/e9bc52edee2edc2f3e71d62bbd432ce8.png)
六. 效能提升
6.1 人效提升,降低研发人力成本,减少研发阶段占比
自动替代人为评审,每次 push 都会自动评审,活跃代码库 评审需求量>10 次/天,减少了 提交人和评审人的沟通 时间成本总和。
![](https://static001.geekbang.org/infoq/a9/a9081620ecffc615225122ff2fee18d9.png)
自动 2024-13 周落地实践后,开发阶段占比阶段性降低,从需求周期的 62% 降低至 52%,大约降低了 10%的比例(多数为代码 push 后评审的耗时,评审时间、沟通时间、返工时间、修复时间 ......)
![](https://static001.geekbang.org/infoq/da/da37a8bc529fa2d6640e28a3d1245477.png)
6.2 需求交付提升,缩短需求交付周期
自从 2024-13 周落地实践后,研发节省大量人力成本在每一次 push 的代码评审,只是辅助评审,则更多精力在需求研发设计交付上,需求交付周期之前的 26.57 天 缩短至目前 17.14 天。
![](https://static001.geekbang.org/infoq/10/10a1e9b29493ec1bd38bb9c8df5baa8d.png)
6.3 过程质量提升,有效减少 BUG 数
自从 2024-13 周落地实践后,AI 评审代码后,新增 bug 数呈现下降趋势,从之前的 14 个/人减少到目前 6 个/人。
![](https://static001.geekbang.org/infoq/b1/b1cdcd9c6ac649d395756b2b693ff480.png)
七. 简要总结
🤖 AI Code Review 机制通过 CI 流水线自动化评审代码,显著提升了 研发效率 和 代码质量,使研发能够更专注于创新和核心业务的开发,进而 优化用户体验 和 提升需求交付速率。
👏 很荣幸推动了 JD 的 AI 代码评审生态,机制还有很多优化之处,欢迎大家共同交流! 群在评论区。
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/91c652a54c389ff5752d5743a】。文章转载请联系作者。
评论