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

4 天前
 tohearts

引言

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

代码审查( 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 会自动像一位资深架构师一样介入,为你完成以下所有工作:

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

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

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

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

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

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

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

现在就开始体验!

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

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

747 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1165302

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX