V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
tohearts
V2EX  ›  分享创造

做了个 Golang 代码提交 MR 的分析工具

  •  
  •   tohearts · 4 天前 · 726 次点击

    引言

    你是否也经历过这样的场景?

    • 面对一个包含数十个文件改动的巨大 Merge Request ,感觉无从下手,生怕遗漏了关键的潜在风险。
    • 只是一个“简单”的函数重构,却不确定它会像蝴蝶效应一样,在代码库的哪个角落掀起风暴。</font>
    • <font style="color:rgb(26, 28, 30);">作为审查者,你反复追问:“这个改动的影响范围有多大?相关的测试用例覆盖了吗?” 却只能得到模糊的回答。

    代码审查( Code Review )是软件质量的生命线,但传统的“人肉”审查充满了不确定性和效率瓶颈。我一直在思考:能否有一位智能助理,能瞬间看透每次代码变更背后的“全局影响”?

    今天,我们很高兴地宣布,Goanalysis v1.2.1 正式发布,带来了这项万众期待的能力——GitLab Merge Request 智能分析!它将 AI 的力量与深度静态分析相结合,成为你最得力的 Code Review 伙伴。

    静态代码分析能力优化

    在引入 MR 分析之前,我们首先对核心的静态分析能力进行了大幅优化。全新的 UI 界面,让你对整个 Go 项目的理解从未如此清晰:

    golang 项目静态分析

    在添加项目目录后,程序将自动编译并加载 Go 语言项目,同时利用 SSA ( Static Single Assignment )工具构建函数、包及其相关依赖关系的静态分析模型。待执行完成后,用户可通过界面查看项目的整体概览信息,具体包括以下功能模块:

    项目全局概览: 一键获取项目总函数数、包数量、调用关系总数等核心指标。我们特别突出了 init 函数列表,帮你揪出那些可能在启动时“作祟”的隐蔽代码,杜绝“拉屎操作”!

    通过 nsqd 项目分析如下:

    交互式包依赖图: 告别混乱的依赖关系,我们以 main 函数为起点,层层渲染出清晰的包依赖桑基图。你可以直观地看到项目的架构脉络,轻松定位核心模块。

    根据 main 函数的包向外进行延伸展示,目前的展示还不是非常友好,后续还需要思考进行提升。

    深度函数搜索与调用链分析:

    快速搜索任何函数,并一键生成其完整的 上下游调用关系图。想知道一个函数被谁调用,又调用了谁?

    现在,只需轻轻一点。更棒的是,你可以直接在图表中点击节点,在线查看源代码,实现从宏观到微观的无缝钻取!

    详情如下:

    GitLab MR 智能分析,你的 AI 代码审查员

    想象一下,当一个 Merge Request 被创建时,Goanalysis 会自动像一位资深架构师一样介入,为你完成以下所有工作:

    • 自动分析代码变更: 它会像 git diff 一样读取所有代码改动。
    • 识别核心函数变动: 利用强大的 AST 语法树分析能力,精确定位到每一个被修改、新增或删除的函数。
    • 穿透代码迷雾,追踪影响链: 结合项目完整的静态调用图,它能瞬间推导出这些变动函数会影响到哪些上游调用者——哪怕它们分布在完全不同的文件或包里!
    • 生成一份“人类可读”的影响面报告: 你不再需要逐行阅读代码,Goanalysis 会在 MR 的评论区自动生成一份清晰的报告。

    这一切,只需一条简单的命令:

    goanalysis git mr -u "https://xxxx/<group>/<project>/-/merge_requests/40"
    

    执行后,你的 MR 界面将会焕然一新:

    改动影响面报告: 一份精准的“体检报告”,告诉你这次 MR 到底有多大“威力”。

    智能测试建议: 还在为写什么测试用例发愁吗? Goanalysis 会根据代码变更的逻辑,自动为你生成高优先级的测试建议,确保核心路径得到验证。

    **结构化测试用例: **更进一步!它还能生成可以直接交付给测试团队的结构化测试用例( Test Case ),包含用例 ID 、模块、前置条件、测试步骤和预期结果,极大提升协作效率。

    有了 Goanalysis ,代码审查不再是一场“猜谜游戏”,而是一次有据可依、高效精准的工程活动。它让每一次合并都充满信心。

    现在就开始体验!

    我相信,Goanalysis 将成为每一位 Go 开发者和团队的必备利器。现在,你就可以通过以下方式开始体验:

    • 下载最新版本: 前往 GitHub Releases 页面下载 v1.2.1 。https://github.com/toheart/goanalysis
    • 阅读文档: 我们提供了详细的 README.md 文档,指导你如何快速配置和使用。
    • 给我们一颗 Star: 如果你喜欢这个项目,请在 GitHub 上给我们一颗星,这是对我们最大的鼓励!

    我期待你的反馈,也欢迎你参与到 Goanalysis 的开源共建中来! 想获取 Goanalysis 的最新动态,或与作者深入交流 Go 技术/云原生/AI ?欢迎关注我的微信公众号“小唐的技术日志”。

    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2499 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 11:10 · PVG 19:10 · LAX 04:10 · JFK 07:10
    ♥ Do have faith in what you're doing.