1、代码评审的智能化革命:大语言模型赋能CodeReview罗森趣丸科技AIOps开发工程师罗森趣丸科技 AIOps开发工程师主要负责趣丸科技智能运维(AIOps)领域。熟悉异常检测,根因定位,容量预测与LLM应用开发,曾主导落地10余个AIOps项目。毕业后曾就职于虎牙科技,目前专注于LLM与研发效能结合应用的开发。目录C O N T E N T S1.Code Review 的困难与挑战2.LLM 为什么可以赋能 Code Review3.趣丸科技 AI Code Review 实践4.展望未来CODE REVIEW 的困难与挑战CodeReview 介绍CodeReview 是软件开发中对编
2、写的代码进行检查、评审和修改的过程。它是软件开发中一项非常重要的质量保障工作,可以帮助程序员发现潜在的错误、漏洞和缺陷,提高代码质量,降低软件维护成本和运行风险。CodeReview 涉及的内容CodeReview 的重要性CodeReview 的价值沉淀高质量代码资产降低后期成本Code Review 可以在代码合并前,有效地检查出代码漏洞并及时修复。这在很大程度上,可以降低后期修复问题的难度与维护代码仓库的成本通用代码沉淀通用算法和数据结构复用,提高整体开发效率。CodeReview 的价值提升团队能力,实现知识流转CodeReview 的一个重要功能就是让知识在团队里高效流通助力开发者快
3、速成长开发者可以收到高质量的反馈并及时调整,从中快速成长并得到良好的实践体验。助力新人融入团队可以拉齐团队技术认知的同时,帮助新加入的开发者快速融入团队。CodeReview 的挑战代码提交 代码审核代码合并缺失的 CodeReviewCode Review 是一种通过及早发现并解决代码中的潜在问题 从而保证代码质量的最佳实践在实际研发过程中,由于缺乏自动化工具,或者业务难以忍受人工 CodeReview 带来的额外成本,企业可能会选择直接忽CodeReview 环节,等到问题暴露再进行返工。CodeReview 的挑战流于形式的 Code Review企业是推崇Code Review 的,但
4、是缺乏有效的流程将 Code Review 推行起来,因此经常会出现:直接通过:评审者时间不足,或者是碍于面子,很可能直接执行合并。自行合并:找不到评审者,而开发者有合并权限,则会出现自提自合的情况。在这种情况下,Code Review 往往流于形式,很难真正实践 落地,发挥作用。CodeReview 的挑战质量不高的 CodeReview评审者是人而不是工具,无法像工具一样稳定。标准不一:不同的评审者标准不一样,即使同一个人的标准也无法保持一致。情感因素:可能碍于社交关系和交情,无法客观提出意见。特别涉及需要返工的情况,更加无法客观推行下去。LLM 赋能 CodeReview 面对这些困难和
5、挑战,我们应该如何破局?借助大模型的能力,赋能 Code Review 环节,让我们能够去做这些正确但困难的事情为什么 LLM 可以赋能 CODEREVIEWLLM 能为我们做什么总结总结代码变更的内容,加速Reviewer 理解代码内容建议梳理基于代码变更,给出修改建议,提供更多面的参考意见将代码分类整理,方便 Reviewer审核时查看关联代码LLM 进行 Code Review 的优势LLM 可以赋能的角色趣丸科技 AI CODEREVIEW 实践基于 Gitlab 的 AI CodeReview 实现AI Review实现细节Unified Code Diff 格式能够加深大模型对变更
6、代码的理解以及 减少大模型的”懒惰“行为。AI Review实现细节通过排除(Filter)无效文件或代码,有效减少大型模型的输入冗余。AI Review实现细节变更代码数太多,超出token数如何解决?根据所使用的编程语言对代码进行分组,并统计每种语言的代码量占比。这一占比将作为衡量各编程语言重要性的依据。设定一个迭代次数,若代码总量超出了模型的最大输入限制(即迭代次数与模型单次最大输入token数的乘积),则需根据各编程语言的重要性进行选择性裁剪。在此过程中,应优先剔除变更记录中标记为“-”的代码行。AI Re