CI+GPT双引擎驱动,开启AI代码评审新纪元
代码评审 Code Review 是提高代码质量、促进团队合作、知识间共享的关键环节,对于系统代码质量和稳定性都至关重要。
| 【人为代码评审(Code Review)】存在很多弊端 |
| 时间消耗大:代码评审是一个耗时的过程,特别对于大型项目和复杂的代码更是如此。 |
| 无档期:评审者无时间会造成研发卡点。 |
| 一致性缺乏:不同的审查者可能会有不同的编码标准和偏好,这可能导致代码审查的反馈缺乏一致性,给开发者带来混淆。 |
| 可能遗漏错误:人为审查的过程中可能会因为疲劳、疏忽或知识限制而遗漏一些错误,尤其是对于难察觉的逻辑错误和性能问题。 |
| 主观性:代码审查很容易受到审查者个人偏好和情绪的影响,有时可能会导致不必要的争议。 |
分析原因
🤔人为代码评审存在的弊端主要源于人力的局限性(如疲劳、无时间、主观偏见、认知局限等)。这些因素共同作用导致审查过程中可能出现的时间效率低、一致性差、错误遗漏和主观性问题。
🗣用五个词语总结:易疲劳主观偏见规范少沟通难知识缺
采取措施
| 提高效率:自动化审查过程大大减少了人工审查所需的时间,加快了开发周期。 |
| 增强准确性:AI模型可以持续学习,减少人为疏漏,提高代码审查的准确性和质量。 |
| 一致性保障:确保代码遵循最佳实践和项目规范,整体一致性。 |
| 即时反馈:开发者可以即时获得反馈,快速修正问题,不卡点。 |
| 知识共享:AI评审过程中的建议可以作为学习资源,帮助开发团队提升编码水平。 |
实践步骤
4.1 接入京东言犀大模型(行业内类ChatGPT大模型均可)
图为京东言犀大模型Chatrhino
4.2 内置AI Review脚本(Git代码库API打通)
3、调用GPT- API(京东大模型)
核心脚本逻辑步骤 如下示例:
void aiCodeReviewByChatrhino() {//1、get mrString mergeRequest = System.getProperty("mergeRequest");if (mergeRequest == null) return;System.out.println("【流水线触发MergeRequest】------------------------------------------------ " + mergeRequest);//2、get coding diffString codeDiff = getCodingDiff(mergeRequest);System.out.println("【coding的diff内容】------------------------------------------------" + codeDiff);//3、gpt code reviewString result = gptReview(codeDiff);System.out.println("【京东言犀大模型评论】------------------------------------------------" + result);//4、output review contentnote(objectMapper.readTree(result).get("choices").get(0).get("message").get("content").asText(), mergeRequest);System.out.println("【coding评审note记录】------------------------------------------------" + noteContent + "-----------------------------------------------");}
✋脚本内设定AI人设 (content字段) :根据自己需求定义prompt
比如你想用于分析本次改动业务语义、或者专注于找bug、亦或者代码写法是否规范等
4.3 搭建CI流水线(持续集成)
① 新建流水线:导入AI流水线脚本模版yaml 创建AI Code Review机制
流水线原子:【下载代码】+【java编译】+【咚咚通知】
【咚咚通知原子】默认配置即可,📢 提交代码研发
✍️ 同部门下建议独立脚本代码库,projectID动态传入,不同应用可实现《一键式接入》(只需导入流水线即可实现AI评审)-DprojectId=${globalParams.user.WEBHOOK_ATTR_PROJECT_ID}
${globalParams.user.BRANCH} 相对目录(脚本放置位置):${globalParams.system.APP_IDENTIFIER}mvn test -Dtest=com.jdwl.wms.common.AiCodeReview -DmergeRequest=${globalParams.user.WEBHOOK_ATTR_MERGE_REQUEST_ID} -DfailIfNoTests=false -Dmaven.test.failure.ignore=true③【触发设置】绑定自己代码库,MR Create/Updated 事件(原因:coding的push操作统一触发mr create/update操作)
4.4 配置coding(Webhook联合CI)
流水线生成的webhook链接(Push + Merge Resuest)③ 代码评审机制:* 所有分支push时 自动创建MR 阻塞合入
05 达成效果理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将
5.1 Coding AI评审记录
自动创建Merge Request触发code review流水线,自动AI架构师-代码评审记录!
5.2 流水线运行
效能提升
6.1 人效提升,降低研发人力成本,减少研发阶段占比
自动2024-13周落地实践后,开发阶段占比阶段性降低,从需求周期的 62% 降低至 52%,大约降低了10%的比例(多数为代码push后评审的耗时,评审时间、沟通时间、返工时间、修复时间 ......)
6.2 需求交付提升,缩短需求交付周期
6.3 过程质量提升,有效减少BUG数
自从2024-13周落地实践后,AI评审代码后,新增bug数呈现下降趋势,从之前的14个/人减少到目前 6个/人。
简要总结
🤖AI Code Review 机制通过CI流水线自动化评审代码,显著提升了 研发效率 和 代码质量,使研发能够更专注于创新和核心业务的开发,进而 优化用户体验 和 提升需求交付速率。
👏 欢迎大家在评论区共同交流!
▪功能支撑:会员成长体系、等级计算策略、权益体系、营销底层能力支持
▪用户活跃:会员关怀、用户触达、活跃活动、业务线交叉获客、拉新促活