跳到主要内容

AI CodeReview

· 阅读需 5 分钟
ZHOUWEI
DevOps @ LBX

AI 代码审查与 Gitlab MR 集成,高效智能的代码审查解决方案。

功能介绍

  • 自动触发与及时响应

    利用Gitlab的Webhook功能,实现代码提交、合并请求和标签创建等事件的自动触发。一旦有新的代码提交,系统即时响应,立即启动审查过程,无需手动干预。

  • Gitlab API接口利用

    通过与Gitlab的API接口集成,方便后续的功能拓展和扩展。这种集成方式使得与Gitlab的交互更加灵活,能够支持更多自定义的审查需求。

  • 全面自动审查

    大模型自动审查Gitlab的代码,涵盖push(commit)、merge(合并请求)和tag(标签创建)等三种代码提交方式。无论是新的代码提交还是代码合并,系统都能自动检查并提供审查评论。

  • retrying重试机制

    为了应对网络异常或其他问题,系统实现retrying重试机制。如果因为网络问题导致请求不成功,系统会自动进行重试,确保审查过程的可靠性和稳定性。

代码审查原理

架构

  • 1、Gitlab 的 Webhook 事件推送

    Gitlab 可以配置 Webhook,用于在代码提交、合并请求等事件发生时触发通知。当有新的代码提交或合并请求时,Gitlab 将向预先设置的 URL 发送 POST 请求,包含相关的事件数据。

  • 2、解析 diff 内容并发送至大模型

    当 Gitlab 收到 Webhook 事件后,可以解析 diff 内容,这是新提交的代码与现有代码之间的差异。然后,将这些差异发送给大模型的 API 端点,以便大模型能够理解代码变更的内容。

  • 3、大模型处理并返回结果

    大模型是一个强大的自然语言处理模型,能够理解和处理自然语言文本。当大模型收到 diff 内容后,它会解析、理解代码的变更,并对其中可能存在的问题、漏洞或优化建议进行分析和回复。大模型将处理后的结果返回给触发 Webhook 的 Gitlab 实例。

  • 4、将大模型处理的结果进行评论展示

    Gitlab 可以接收来自大模型的处理结果,并将其作为评论添加到对应的提交或合并请求中。这样,代码提交者和其他团队成员都可以查看大模型的审查结果,并根据建议做出相应的改进或修复。

提问词

资深编程专家提问

messages = [
{
"role": "system",
"content": "你是一位资深编程专家, gitlab的commit代码变更将以git diff 字符串的形式提供, 以格式「变更评分:实际的分数」给变更打分, 分数区间为0~100分。然后, 以精炼的语言、严厉的语气指出存在的问题。如果你觉得必要的情况下, 可直接给出修改后的内容。你的反馈内容必须使用严谨的markdown格式。"
},
{
"role": "user",
"content": f"请review这部分代码变更{content}",
},
]

效果展示

参考文献