一、背景描述
- 一句话介绍就是:基于开源大模型 + 知识库的 Code Review 实践,类似一个代码评审助手(CR Copilot)。
- 信息安全合规问题:公司内代码直接调 ChatGPT / Claude 会有安全/合规问题,为了使用 ChatGPT / Claude 需要对代码脱敏,只提供抽象逻辑,这往往更花时间。
- 低质量代码耗费时间:业务每天至少 10~20 个 MR 需要 CR,虽然提交时 MR 经过 单测 + Lint 过滤了一些低级错误,但还有些问题(代码合理性、经验、MR 相关业务逻辑等)需要花费大量时间,最后可以先经过自动化 CR,再进行人工 CR,可大大提升 CR 效率!
- 符合公司安全规范,所有代码数据不出内网,所有推理过程均在内网完成
- 团队 Code Review 规范缺少执行:大部分团队的 Code Review 停留在文档纸面上,成员之间口口相传,并没有一个工具根据规范来严格执行。
- 🌈 开箱即用:基于 Gitlab CI,仅 10 几行配置完成接入,即可对 MR 进行 CR。
- 🔒 数据安全:基于开源大模型做私有化部署,隔离外网访问,确保代码 CR 过程仅在内网环境下完成。
- ♾ 无调用次数限制:部署在内部平台,只有 GPU 租用成本。
- 📚 自定义知识库:CR 助手基于提供的飞书文档进行学习,将匹配部分作为上下文,结合代码变更进行 CR,这将大大提升 CR 的准确度,也更符合团队自身的 CR 规范。
- 🎯 评论到变更行:CR 助手将结果评论到变更代码行上,通过 Gitlab CI 通知,更及时获取 CR 助手给出的评论。
二、基于大模型与知识库的Code Review实践
基于大模型与知识库的Code Review实践,具体实施细节可以归纳如下:
一、选择合适的大模型与知识库
- 大模型选择:
- 优先选择具有广泛训练数据和强大语言理解能力的模型,如GPT系列(如GPT-3.5或更高版本)。
- 考虑模型的领域适应性,选择对编程语言和代码结构有深入理解的模型。
- 评估模型的性能,包括处理速度、准确性和可扩展性。
- 知识库构建:
- 收集行业标准和最佳实践,确保知识库内容的权威性和准确性。
- 整合常见的代码问题和解决方案,构建易于查询和检索的知识库。
- 不断更新和维护知识库,确保其内容的时效性和完整性。
二、集成大模型与知识库到Code Review流程
- 自动化工具开发:
- 利用大模型开发自动化代码分析工具,如静态代码分析器、代码风格检查器等。
- 这些工具可以自动检测代码中的潜在问题,如语法错误、逻辑错误、性能问题等。
- 工具的输出结果可以作为Code Review的参考依据。
- 代码注释和文档生成:
- 利用大模型的文本生成能力,为代码片段自动生成注释和文档。
- 这可以提高代码的可读性和可维护性,便于其他团队成员理解和使用代码。
- 集成知识库:
- 在Code Review过程中,集成知识库作为参考资源。
- 审查者可以通过查询知识库来快速获取相关的行业标准和最佳实践等信息。
- 审查者可以利用这些信息来更准确地评估代码的质量和可靠性。
三、结合人工审查
- 审查者角色:
- 审查者需要具备一定的编程能力、自然语言处理能力和领域知识。
- 审查者需要关注模型的输出结果,判断其是否准确可靠,并根据实际情况做出调整。
- 审查者还需要关注代码的逻辑、业务逻辑等方面的问题,确保代码的正确性和可靠性。
- 审查流程:
- 审查者首先使用自动化工具对代码进行初步分析。
- 然后,审查者可以结合知识库中的信息对代码进行深入审查。
- 审查者需要记录审查过程中的问题和建议,并与开发人员进行沟通和讨论。
四、持续优化与改进
- 数据收集与反馈:
- 收集Code Review过程中的数据和反馈,包括审查结果、审查者建议等。
- 分析这些数据,了解Code Review的效果和存在的问题。
- 模型优化:
- 根据收集的数据和反馈,对大模型进行优化和改进。
- 例如,可以更新模型的训练数据、调整模型的参数设置等,以提高模型的性能和准确性。
- 知识库更新:
- 定期更新和维护知识库,确保其内容的时效性和完整性。
- 整合新的行业标准和最佳实践到知识库中,为审查者提供更全面的参考资源。
通过以上具体实施细节,可以确保基于大模型与知识库的Code Review实践能够高效、准确地评估代码的质量和可靠性,提高开发效率。
参考资料
基于大模型 + 知识库的 Code Review 实践_大模型进行codereview结果对比-CSDN博客
AIGC 重塑软件工程 Code Review 篇:IDE 插件 + DevOps 平台协同组合-CSDN博客
🚀 CI+GPT双引擎驱动,🤖 开启AI代码评审新纪元 - 知乎 (zhihu.com)
GitHub - mimo-x/Code-Review-GPT-Gitlab: 🤖 GPT Code Review for Gitlab (针对于 Gitlab 的 LLM 辅助 Code Review 工具)项目详细文档 👇🏻
CodeReview with LLM in Gitlab
基于大模型的 Code Review 实践 - 掘金 (juejin.cn)
玩转 ChatGPT+极狐GitLab|自动化的MR 变更评审来了 - 知乎 (zhihu.com)