让AI真正理解你的Spring Boot项目:我开源了
github吧
全部回复
仅看楼主
level 2
Black.Sand 楼主
老哥们,我开源了一个Spring Boot项目分析工具,来捧个场
事情是这样的
最近用Cursor改公司那个老Spring Boot项目,MyBatis-Plus写的,想查一个接口的完整调用链,AI翻来覆去搜关键词,结果每次都给不全。
后来我琢磨了一下问题出在哪:
MyBatis-Plus那个selectById、insert、updateById,看着是个方法调用,实际背后跑的是SELECT星号或者全表写,但你grep源代码根本搜不到任何SQL语句。
Spring那套Autowired注入、Transactional事务,全是注解约定,不在显式import里。
SQL还分散在四个地方:注解里写一点、XML里写一点、JdbcTemplate字符串拼一点、Wrapper动态构造一点。
AI全靠全文搜索+推理,它不迷糊谁迷糊。
我手头一个项目实测:改一个实体字段,人工排查说影响5个接口,工具跑出来8个,漏的那3个全是MP内置CRUD搞的鬼。
所以我写了个工具,叫ContextGate,已经开源了
github.com/23512478/ContextGate
这玩意儿干啥的?
简单说就是把Spring Boot+MyBatis项目里的调用关系全部静态分析出来,做成一份结构化地图,然后通过MCP协议喂给Cursor、Trae这些AI工具。
AI直接调用工具就能拿到调用链和影响面,不用每次都去搜七八个文件自己拼。
目前四个功能:
trace_call:输入路由地址,输出完整调用链Controller→Service→Mapper→SQL,带事务边界标注
find_sql:按表名或列名反查SQL,告诉你这个SQL在哪个Mapper里、哪些上游接口在调它
impact:改实体或字段之前查影响面,波及多少自定义SQL、多少个MP内置调用点、多少条上游路由
refresh_map:代码改完让AI调这个,秒级刷新地图,不用重新跑全量分析
已支持的解析规则:
Spring那套路由注解、Autowired注入、Transactional传播
MyBatis的注解SQL和XML mapper,包括resultMap、sql片段include、set/if这些动态标签
MyBatis-Plus的BaseMapper内置方法,自动识别selectById这种会触碰全部列
LambdaQueryWrapper动态链也支持
JdbcTemplate的裸SQL
跨表JOIN列的别名精确归因
有话说在前面,不吹牛逼:
当前是正则解析不是AST,遇到Lombok或者很骚的内部类写法可能漏
MP内置方法我标的是"触碰全部列",这是安全的过近似,宁多报不漏报
Wrapper跨语句链式调用、XML的association和collection嵌套、foreach循环这些还在排队开发
跟市面上的方案比咋样?
RAG检索不懂事务边界和MP隐式CRUD
LSP符号索引看不懂注解注入和BaseMapper内置方法
AI自带搜索每次全量grep,费token还靠猜
ContextGate不是替代它们,是给它们补一个Spring Boot专精的导航模块
怎么用?
Python3.10以上,跑一个命令分析你的项目
再装个依赖配置一下MCP,Cursor和Trae都支持
不想配置也行,直接跑demo体验
接入后在AI对话框里说人话就行,比如:
"追踪GET /api/v1/orders/my的完整调用链"
"wallet_balance被哪些SQL触碰"
"刷新框架地图"
为啥要开源?
这工具的每条解析规则都是被真实项目逼出来的。
裸SELECT*不算触碰列、别名星号展开、跨表JOIN列归属、XML的include标签……每修一个bug都对应一个真实项目的漏报。
目前只经过有限项目验证,所以想请老哥们拿自己的项目跑一跑。
三种参与方式:
拿你的项目跑一遍,发现哪里漏报了截个图提issue,这是最有价值的贡献
想补解析规则的看CONTRIBUTING,流程是加夹具写断言跑全绿
适配更多AI工具也行,MCP是标准协议基本零成本
觉得有用点个Star,遇到漏报提个Issue。
后者比Star更有价值,真的。
项目地址再发一遍:
github.com/23512478/ContextGate
MIT协议,随便用随便改。
拿你的项目跑一跑,提Issue就是最大的支持。
老哥们捧个场,有什么问题直接回帖问。
2026年09月06日 19点09分 1
1