# SpringCallChain Analyzer **Repository Path**: comduke/spring-call-chain-analyzer ## Basic Information - **Project Name**: SpringCallChain Analyzer - **Description**: 一个强大的 IntelliJ IDEA 插件,用于深度 Java/Spring 项目代码分析、调用链可视化、向量数据库集成以及 Claude Code AI 辅助。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-24 - **Last Updated**: 2026-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringCallChain Analyzer - IntelliJ IDEA 插件 一个强大的 IntelliJ IDEA 插件,用于深度 Java/Spring 项目代码分析、调用链可视化、向量数据库集成以及 Claude Code AI 辅助。 ## 功能特性 - **PSI 代码分析**:利用 IDEA 的 PSI 系统进行深度代码结构分析 - **调用链可视化**:交互式树状视图展示方法调用层级 - **Spring 框架支持**:Spring Boot/Cloud 注解的专项支持 - **向量数据库集成**:通过 ChromaDB 实现语义代码搜索 - **Claude Code 集成**:MCP 服务器 + Skill,支持 AI 驱动的代码问答 - **增量更新**:基于文件变更的高效重新分析 - **多模块支持**:完整支持 Maven/Gradle 多模块项目 ## 环境要求 | 组件 | 版本 | |-----------|---------| | IntelliJ IDEA | 2025.2.4+ | | JDK | 21 | | Gradle | 9.5.1 | | ChromaDB | 0.5.0+ | | Claude Code CLI | 2.1.148+ | ## 安装指南 ### 1. 构建插件 ```bash cd D:\software\code\tool\SpringCallChain-Analyzer gradlew buildPlugin ``` 插件 JAR 将生成在 `build/distributions/` 目录下。 ### 2. 在 IntelliJ IDEA 中安装 1. 打开 IntelliJ IDEA 2025.2.4 2. 进入 **文件 > 设置 > 插件** 3. 点击齿轮图标 → **从磁盘安装插件...** 4. 选择构建好的 JAR 文件 5. 重启 IntelliJ IDEA ### 3. 配置 ChromaDB **方式 A:本地 ChromaDB** ```bash # 安装 ChromaDB pip install chromadb # 启动服务 chroma run --path /path/to/chroma/data --port 8000 ``` **方式 B:Docker** ```bash docker run -d -p 8000:8000 chromadb/chroma ``` 然后在 IDEA 中:**文件 > 设置 > 工具 > SpringCallChain Analyzer** → 设置 ChromaDB 端点为 `http://localhost:8000`。 ### 4. 配置 Claude Code CLI 1. 安装 Claude Code CLI: ```bash npm install -g @anthropic-ai/claude-code ``` 2. 在 `~/.config/claude-code/mcp.json` 中配置 MCP 服务器: ```json { "mcpServers": { "spring-call-chain": { "command": "java", "args": ["-jar", "/path/to/build/mcp/mcp-server.jar", "--port", "8099"], "env": {} } } } ``` 3. 导入 Skill 文件: ```bash claude-code skill import skills/spring-call-chain.skill.md ``` 4. 在 IDEA 设置中,配置 Claude Code CLI 路径。 ## 使用说明 ### Spring Call Chain 工具窗口 通过 **视图 > 工具窗口 > Spring Call Chain** 打开,或使用侧边栏图标。 #### 调用链标签页 - 在编辑器中选择一个方法 → 在工具窗口中点击**刷新** - 浏览调用链树(上方为调用者,下方为被调用者) - 调整深度滑块(1-10 层) - 按模块、包名或类名过滤 - 导出为 Markdown/JSON/PNG 格式 #### 项目结构标签页 - 以层级树浏览项目代码 - 按类名或方法名搜索 - 右键选择分析选项 #### 向量数据库标签页 - 查看已索引代码统计信息 - 搜索已索引文档 - 重建索引、清空数据库或测试连接 #### Claude Code 标签页 - 直接与 Claude Code 对话 - 选中代码自动注入为上下文 - 将 Claude 的建议应用到代码中 - 导出对话历史 #### 设置标签页 - 当前配置的快速概览 - 链接到完整设置页面 ### 键盘快捷键 | 快捷键 | 功能 | |----------|--------| | `Ctrl+Alt+Shift+C` | 快速调用链搜索 | | `Ctrl+Alt+Shift+A` | 快速语义代码搜索 | | `Ctrl+Alt+Shift+D` | 快速 Claude Code 对话 | | `Ctrl+Alt+Shift+R` | 重建当前项目索引 | ### 编辑器右键菜单 在编辑器中右键点击: - **分析此方法的调用链** - **添加到向量数据库** - **向 Claude Code 提问** - **生成单元测试** - **生成 JavaDoc** ### 项目视图右键菜单 在模块/目录上右键点击: - **分析模块代码结构** - **将模块索引到向量数据库** - **生成架构文档** - **生成依赖关系图** ### 使用 Claude Code CLI 配置完成后,在终端中询问 Claude: ``` /callchain 这个项目中的支付流程是如何实现的? ``` 或在普通对话中(Skill 自动触发): ``` UserService.createUser() 方法被哪些地方调用? 项目中有哪些 REST 端点? ``` ## 项目结构 ``` SpringCallChain-Analyzer/ ├── build.gradle # Gradle 构建配置 ├── settings.gradle # Gradle 设置 ├── gradle.properties # Gradle 属性 ├── skills/ │ └── spring-call-chain.skill.md # Claude Code Skill 文件 ├── src/main/ │ ├── java/com/springcallchain/analyzer/ │ │ ├── core/ │ │ │ ├── psi/ │ │ │ │ ├── CallChainAnalyzerService.java # PSI 调用链分析 │ │ │ │ ├── CallChainNode.java # 调用链节点模型 │ │ │ │ ├── CallChainResult.java # 调用链结果模型 │ │ │ │ └── SpringAnnotationHelper.java # Spring 注解工具类 │ │ │ ├── index/ │ │ │ │ └── CodeIndexService.java # 代码到向量索引 │ │ │ └── incremental/ │ │ │ ├── IncrementalUpdateManager.java # 增量更新管理器 │ │ │ ├── VirtualFileChangeListener.java # 文件变更监听器 │ │ │ └── IndexProgressNotifier.java # 索引进度通知器 │ │ ├── vector/ │ │ │ ├── VectorDocument.java # 向量文档模型 │ │ │ ├── VectorSearchResult.java # 搜索结果模型 │ │ │ ├── VectorServiceProvider.java # SPI 接口 │ │ │ ├── VectorServiceManager.java # 服务管理器门面 │ │ │ └── chromadb/ │ │ │ └── ChromaDBVectorService.java # ChromaDB 实现 │ │ ├── mcp/ │ │ │ ├── McpServer.java # MCP JSON-RPC 服务器 │ │ │ ├── McpServerManager.java # 服务器生命周期管理器 │ │ │ ├── McpServerLauncher.java # 独立启动器 │ │ │ ├── McpTool.java # 工具定义记录 │ │ │ └── tools/ │ │ │ ├── McpToolHandler.java # 工具处理器接口 │ │ │ ├── SearchCodeTool.java │ │ │ ├── GetMethodCallChainTool.java │ │ │ ├── GetClassDependenciesTool.java │ │ │ ├── GetSpringEndpointsTool.java │ │ │ ├── GetProjectStructureTool.java │ │ │ └── GetFileContentTool.java │ │ ├── ui/ │ │ │ ├── toolwindow/ │ │ │ │ └── SpringCallChainToolWindowFactory.java │ │ │ ├── components/ │ │ │ │ ├── CallChainPanel.java │ │ │ │ ├── ProjectStructurePanel.java │ │ │ │ ├── VectorDatabasePanel.java │ │ │ │ ├── ClaudeChatPanel.java │ │ │ │ ├── SettingsPanel.java │ │ │ │ └── IndexStatusBarWidgetFactory.java │ │ │ ├── chat/ │ │ │ │ └── ChatHistoryService.java │ │ │ └── actions/ │ │ │ ├── AnalyzeCallChainAction.java │ │ │ ├── AddToVectorDatabaseAction.java │ │ │ ├── AskClaudeAction.java │ │ │ ├── GenerateUnitTestAction.java │ │ │ ├── GenerateDocumentationAction.java │ │ │ ├── AnalyzeModuleAction.java │ │ │ ├── IndexModuleAction.java │ │ │ ├── GenerateModuleDocAction.java │ │ │ ├── GenerateDependencyGraphAction.java │ │ │ ├── QuickCallChainSearchAction.java │ │ │ ├── QuickSemanticSearchAction.java │ │ │ ├── QuickClaudeChatAction.java │ │ │ └── ReindexProjectAction.java │ │ ├── settings/ │ │ │ ├── PluginSettings.java │ │ │ └── PluginSettingsConfigurable.java │ │ └── boot/ │ │ └── ProjectStartupActivity.java │ └── resources/ │ └── META-INF/ │ └── plugin.xml └── sample-project/ # 示例 Spring Boot 演示项目 ``` ## 故障排除 ### 插件未加载 请确认您正在使用 IntelliJ IDEA 2025.2.4+ 和 JDK 21 运行。 ### ChromaDB 连接失败 - 确认 ChromaDB 正在运行:`curl http://localhost:8000/api/v2/heartbeat` - 检查设置中的端点 URL 是否与部署地址一致 - 确认防火墙未阻止连接 ### MCP 服务器无响应 - 确认 MCP 服务器 JAR 已构建:`gradlew build` - 确认 8099 端口未被占用 - 检查 Claude Code MCP 配置文件 ### 向量搜索找不到代码 - 确认项目已索引(启动时自动索引) - 通过向量数据库标签页或 `Ctrl+Alt+Shift+R` 手动重建索引 - 检查设置中的排除规则 ## 常见问题 **问:可以使用其他向量数据库吗?** 答:可以,实现 `VectorServiceProvider` SPI 接口即可。架构设计支持可插拔扩展。 **问:支持非 Spring 项目吗?** 答:支持。基本的调用链分析适用于任何 Java 项目。Spring 特有功能需要 Spring 注解。 **问:插件占用多少内存?** 答:中型项目通常占用 100-300MB。向量索引是主要的内存消耗者。 **问:可以不使用 Claude Code 吗?** 答:可以。除 Claude Code 对话标签页和 MCP 工具外,所有功能均可独立使用。 ## 许可证 MIT License - 详见 LICENSE 文件。