【AIGC】基于大模型+知识库的Code Review实践

一、背景描述

  • 一句话介绍就是:基于开源大模型 + 知识库的 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实践,具体实施细节可以归纳如下:

一、选择合适的大模型与知识库

  1. 大模型选择
    • 优先选择具有广泛训练数据和强大语言理解能力的模型,如GPT系列(如GPT-3.5或更高版本)。
    • 考虑模型的领域适应性,选择对编程语言和代码结构有深入理解的模型。
    • 评估模型的性能,包括处理速度、准确性和可扩展性。
  2. 知识库构建
    • 收集行业标准和最佳实践,确保知识库内容的权威性和准确性。
    • 整合常见的代码问题和解决方案,构建易于查询和检索的知识库。
    • 不断更新和维护知识库,确保其内容的时效性和完整性。

二、集成大模型与知识库到Code Review流程

  1. 自动化工具开发
    • 利用大模型开发自动化代码分析工具,如静态代码分析器、代码风格检查器等。
    • 这些工具可以自动检测代码中的潜在问题,如语法错误、逻辑错误、性能问题等。
    • 工具的输出结果可以作为Code Review的参考依据。
  2. 代码注释和文档生成
    • 利用大模型的文本生成能力,为代码片段自动生成注释和文档。
    • 这可以提高代码的可读性和可维护性,便于其他团队成员理解和使用代码。
  3. 集成知识库
    • 在Code Review过程中,集成知识库作为参考资源。
    • 审查者可以通过查询知识库来快速获取相关的行业标准和最佳实践等信息。
    • 审查者可以利用这些信息来更准确地评估代码的质量和可靠性。

三、结合人工审查

  1. 审查者角色
    • 审查者需要具备一定的编程能力、自然语言处理能力和领域知识。
    • 审查者需要关注模型的输出结果,判断其是否准确可靠,并根据实际情况做出调整。
    • 审查者还需要关注代码的逻辑、业务逻辑等方面的问题,确保代码的正确性和可靠性。
  2. 审查流程
    • 审查者首先使用自动化工具对代码进行初步分析。
    • 然后,审查者可以结合知识库中的信息对代码进行深入审查。
    • 审查者需要记录审查过程中的问题和建议,并与开发人员进行沟通和讨论。

四、持续优化与改进

  1. 数据收集与反馈
    • 收集Code Review过程中的数据和反馈,包括审查结果、审查者建议等。
    • 分析这些数据,了解Code Review的效果和存在的问题。
  2. 模型优化
    • 根据收集的数据和反馈,对大模型进行优化和改进。
    • 例如,可以更新模型的训练数据、调整模型的参数设置等,以提高模型的性能和准确性。
  3. 知识库更新
    • 定期更新和维护知识库,确保其内容的时效性和完整性。
    • 整合新的行业标准和最佳实践到知识库中,为审查者提供更全面的参考资源。

通过以上具体实施细节,可以确保基于大模型与知识库的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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32F103C8开发板 STM32最小系统核心板 AD硬件原理图+PCB封装文件分享

STM32F103C8开发板原理图 原理图和PCB下载地址: STM32F103C8开发板 STM32最小系统核心板 AD硬件原理图PCB封装文件.zip: https://url83.ctfile.com/f/45573183-1269573020-8f85b2?p7526 (访问密码: 7526)

Bio-Info 每日一题:Rosalind-04-Rabbits and Recurrence Relations

🎉 进入生物信息学的世界,与Rosalind一起探索吧!🧬 Rosalind是一个在线平台,专为学习和实践生物信息学而设计。该平台提供了一系列循序渐进的编程挑战,帮助用户从基础到高级掌握生物信息学知识。无论你是初…

指针在C/C++中的魔力:一级指针与二级指针

什么是指针? 指针是一个变量,它的值是另一个变量的地址。在C/C中,指针是一个强大的工具,可以让我们直接操作内存地址。指针的主要用途包括动态内存分配、数组和字符串处理、函数参数传递等。 一级指针 一级指针(也称为…

聊一聊大数据需求的流程

大致的流程:需求对接、口径梳理、数据开发、任务发布、任务监控、任务保障 流程图 startuml skinparam packageStyle rectangleactor 需求方 participant 数据BP as 数据组 participant 离线数仓 participant 实时数仓需求方 -> 数据组: 提出需求 数据组 -> …

造假高手——faker

在测试写好的代码时通常需要用到一些测试数据,大量的真实数据有时候很难获取,如果手动制造测试数据又过于繁重无聊,显得不够优雅,今天我们介绍的faker这个轮子可以完美的解决这个问题。faker是一个用于生成各种类型假数据的库&…

Spring AOP(实现,动态原理)详解版

Spring AOP 1.什么是AOP?1.1引入AOP依赖1.2编写AOP程序 2.Spring AOP核⼼概念2.1 切点(Pointcut)2.2连接点(Join Point)2.3通知(Advice)2.4 切⾯(Aspect) 3.通知类型3.1顺序3.2切⾯优先级 Order3.3 ⾃定义注解 MyAspect 4. Spring AOP 原理5 动态代理怎么实现5.1 JD…

D455相机RGB与深度图像对齐,缓解相机无效区域的问题

前言 上一次我们介绍了深度相机D455的使用:intel深度相机D455的使用-CSDN博客,我们也看到了相机检测到的无效区域。 在使用Intel深度相机D455时,我们经常会遇到深度图中的无效区域。这些无效区域可能由于黑色物体、光滑表面、透明物体以及视…

基于大模型 Gemma-7B 和 llama_index,轻松实现 NL2SQL

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

数字滤波器和模拟滤波器(一)

模拟滤波器和数字滤波器(一) 下面介绍模拟滤波器和数字滤波器的频率响应的异同,以及如何使用python地scipy.signal来绘制其频谱响应和冲激阶跃响应。在第二期将谈到如何设计模拟滤波器和数字滤波器。 在正文之间,应该介绍连续时…

腾讯元宝APP上线,AIGC产品的未来何去何从?

目录 腾讯元宝APP上线,AIGC产品的未来何去何从? 一、大模型AIGC产品概览 二、使用体验分享 1. 百度大脑 2. 阿里巴巴的AliMe 3. 字节跳动的TikTok AI 4. 腾讯元宝APP 小结 三、独特优势和倾向选择 1. 字节豆包 2. 百度文心一言 3. 阿里通义千…

【Jenkins】Jenkins - 节点

选择系统设置 - 节点设置 -添加节点 下载对应的 jar包 ,执行命令 测试运行节点生效 1. 创建测试项目 test1 2. 选择节点执行: 在配置页面的“General”部分,找到“限制项目的运行节点”(Restrict where this project can be run…

lubuntu / ubuntu 配置静态ip

一、查看原始网络配置信息 1、获取网卡名称 ifconfig 2、查询网关IP route -n 二、编辑配置文件 去/etc/netplan目录找到配置文件,配置文件名一般为01-network-manager-all.yaml sudo vim /etc/netplan/01-network-manager-all.yaml文件打开后内容如下 # This …

VScode的插件使用

1、正则插件-1 2、AI助手工具-1-fittentech 3、画图工具-1 4、GitHub的查看工具 5、shell测试工具 6、时序画图工具

实用的 C 盘搬家软件

一、简介 1、一款专门用于 Windows 系统的文件夹移动工具,它允许用户将程序或游戏的安装文件夹从一台驱动器移动到另一台驱动器,或者同一个驱动器内的不同路径,而无需重新安装或破坏现有的程序安装。 二、下载 1、下载地址: 官网链…

并查集进阶版

过关代码如下 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> #include<unordered_set> using namespace std;int n, m; vector<int> edg[400005]; int a[400005], be[400005]; // a的作用就是存放要摧毁 int k; int fa[400005]; int daan[400005]…

社交创新:Facebook的技术与产品发展

在当今数字化时代&#xff0c;社交网络已经渗透到我们生活的方方面面&#xff0c;成为了人们日常交流、信息获取和社交互动的主要方式。而在这个众多社交平台中&#xff0c;Facebook作为其中的佼佼者&#xff0c;其技术与产品的发展历程也是一个社交创新的缩影。本文将探索Face…

算法课程笔记——可撤销并查集

算法课程笔记——可撤销并查集 Gv

【教学类-36-07】20240608动物面具(通义万相)-A4大小7图15手工纸1图

背景需求&#xff1a; 风变的AI对话大师一年到期了&#xff0c;也没有看到续费的按钮。不能使用它写代码了。 MJ早就用完了&#xff0c;最后480次&#xff0c;我担心信息课题会用到它生图&#xff0c;所以不敢用。 最近探索其他类似MJ的免费出图工具——找到了每天给50张免费图…

电调, GPS与飞塔

电调油门行程校准&#xff1a; 断电-----油门推到最高-------电调上电-------滴滴------油门推到最低---滴滴滴---校准完成。 http://【【教程】油门行程校准&#xff08;航模&#xff0c;电机&#xff0c;电调&#xff09;】https://www.bilibili.com/video/BV1yJ411J7aX?v…

SinoDB数据库隔离级别

本文主要对SinoDB数据库隔离级别及其设置进行介绍。 1. ANSI SQL-92事务隔离 ANSI 委员会定义了以下级别的事务隔离&#xff08;SQL-92&#xff09;&#xff1a; Read uncommittedRead committedRepeatable readSerializable read 查询的隔离级别决定了查询与其他并发执行的…