Understand Anything是GitHub上4.7万Star的开源代码分析工具,适合刚接手老旧项目的开发者。核心亮点:自动生成代码知识图谱与依赖链路,提供Diff影响分析及业务领域视图,通过Tree sitter精准扫描加AI解释降低幻觉。首次扫描大项目耗时较长,请耐心等待。
Tags:
刚入职一家新公司,第一任务,就是要快速上手分配给我们负责的项目代码。
但往往缺少项目文档,甚至连代码里的注释都没有,而上一个维护项目的同事又走了。
此时我们面对着几十万行代码量的老项目,我相信大家都会多少有点不知从何入手。
虽然可以让 AI 帮忙,如果直接询问,可能就要消耗大量 Token,甚至 AI 也会回答错。
无独有偶,在 GitHub 上发现一个开源项目,能帮我们梳理清晰这些老旧项目。
这个项目叫做 Understand-Anything,已多次登上 GitHub Trending 榜,狂揽了 4.7 万 Star。
我们可以先用它,把整个项目的文件和代码里函数之间的关联,梳理成一张能点开的知识图谱。
点击图谱上任意节点,可以看到对应的代码文件负责了什么功能,又跟哪个文件有个关联。
这些关系,可以在这份图谱上看得一清二楚,不只方便我们查看也便于让 AI 理解。
它还会按照代码之间的依赖顺序,提供一条链路给我们,只要顺着这条链路查看即可。
除此之外,还可以通过关键词搜索,或者直接用自然语言询问。
比如问「哪部分代码是处理登录的」,它就会把散落在各处的相关节点一起展示出来。
了解清楚项目之后,接下来就是要按产品需求,对项目的代码进行改动。
此时,我们又会担心自己改动的代码,会不会影响到项目其它什么地方。
这时候,就可以用到 Understand-Anything 的 「Diff 影响分析」功能。
在提交改动的代码前,让它帮我们标出这次代码的改动波及到哪些地方,然后逐一检查一下。
此外, Understand-Anything 还有一个叫「Domain 视图」功能。
对于老项目最难搞懂的,可能不是技术架构,而是这一堆代码到底在支撑着哪条业务。
切到这领域视图,代码会按真实的业务流程重新铺开。哪个模块对应哪条业务线,一眼就知道。
再跟大家说说,Understand-Anything 凭什么要比其他工具靠谱。
回顾一下,平时我们让 AI 读一个大项目的时候,它是不是很喜欢「脑补」一些内容出来。
明明两个文件之间没什么关系的,它硬生生的给我们虚构一条调用的链条来。
这个情况尤其是在大型的老项目里经常出现,因为代码量大且缺少文档,然后 AI 就喜欢瞎猜。
而在 Understand-Anything 这里,它把这个活拆分成了两部分。
一部分交给叫 Tree-sitter 的工具。作为极其严谨的代码扫描仪,谁调用了谁、哪个函数属于哪个文件,它只认死理,不掺一点想象。
另一部分交给 AI。在这个准确的骨架之上,AI 只负责一件事,把每一块的代码翻译成人话。
这么分工,代码之间的逻辑关系是工具扫描出来的,而解释是 AI 给的,让我们更加好理解。
接下来说下工具的上手使用,其实很简单。在 Claude Code 上,两行命令就能把插件装好。
/plugin marketplace add Lum1104/Understand-Anything/plugin install understand-anything
装完之后首先执行命令 /understand,将整个项目扫描一篇,稍等一会图谱就构建出来。
可以生成中文版本的图谱,需加个语言参数,命令是这个 /understand --language zh。
如果想浏览生成的图谱,则执行命令 /understand-dashboard,启动一个可视化网页面板。
除此之外,该工具也兼容 Cursor、Codex、Gemini CLI 等 AI 编程工具,在 README 文件上有详细的安装教程,可以去看下。
注意,第一次使用工具对项目进行扫描,如果项目越大花的时间就越长,毕竟要把所有文件全部梳理一遍,耐心等待一下即可。
写在最后
这两年的 AI 编程工具,几乎都在卷怎么「写」。怎么写得更快,怎么一句话生出一个功能。
可「读懂」别人的代码,尤其是读懂那些没人维护的老项目,一直被晾在角落。
但现实里,我们花在读代码上的时间,常常比写还多。
Understand-Anything 的出现正好补齐了这一块,让代码变得更容易被 AI 看懂。
使我们与 AI 协作时,能够更准确的把项目里的代码逻辑处理喂给 AI,从而降低幻觉或出错的几率。
有需要的同学,不妨装一个试试,尤其适合新接手一个项目的场景,先用它跑一遍。
GitHub 项目地址:https://github.com/Lum1104/Understand-Anything
今天的分享到此结束,感谢大家抽空阅读,我们下期再见,Respect!
没有评论:
发表评论