# java-call-link **Repository Path**: francis5220/java-call-link ## Basic Information - **Project Name**: java-call-link - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-02 - **Last Updated**: 2026-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JavaCallLink 一款 IntelliJ IDEA 插件,用于分析 Java 方法的全链路调用栈,并生成可视化树形视图。 ## 功能特性 - **全链路调用分析**:追踪方法的完整调用链路,包括上游调用者(Callers)和下游被调用者(Callees) - **可视化树状视图**:以清晰的树形结构展示调用关系 - **智能标签分类**:自动识别并标记方法来源 - `[JDK]` - JDK 标准库方法 - `[Spring]` - Spring 框架方法 - `[Apache]` - Apache 开源库方法 - `[Google]` - Google 开源库方法 - `[Alibaba]` - Alibaba 开源库方法(如 FastJSON、Druid、Dubbo 等) - `[开源]` - 其他主流开源框架方法 - `[Controller]` - 控制器类方法 - **历史记录缓存**:自动缓存最近 5 次分析记录,快速切换 - **快速导航**: - 单击任意节点跳转到对应方法的调用行 - 双击任意节点跳转到方法源代码 - **折叠/展开控制**:单击按钮切换树节点的展开/折叠状态 - **主题适配**:自动适配 IDEA 浅色/深色主题 - **右键菜单集成**:直接在编辑器中右键即可激活分析功能 - **快捷键支持**:使用 `Ctrl + Shift + Alt + C` 快速激活 ## 支持版本 | 版本 | IDEA 兼容版本 | JDK 要求 | |------|-------------|---------| | v1.x Legacy | 2019.1 - 2021.2 | JDK 11 | | v2.x Modern | 2021.3 - 2023.3 | JDK 17 | | v3.x Latest | 2024.1 - 2026.x | JDK 17 | **注意**:该插件支持分析任意 JDK 版本( JDK 1.7+ )编写的 Java 代码 ## 安装方法 ### 方式一:从源码构建 1. 克隆项目 ```bash git clone https://gitee.com/francis5220/java-call-link.git cd java-call-link ``` 2. 配置 Gradle - 确保本地已安装 JDK 17+ - Gradle 9.x+ 3. 构建插件 ```bash gradle clean buildPlugin ``` 4. 安装插件 - 在 IDEA 中打开 `Settings → Plugins` - 点击齿轮图标 → **Install plugin from disk...** - 选择 `build/distributions/JavaCallLink-*.zip` ### 方式二:直接使用(如果已发布) 在 IDEA Plugins 市场中搜索 "JavaCallLink" 并安装 ## 使用方法 1. **激活分析** 打开任意 Java 文件,将光标放在某个方法内部: - **右键菜单**:选择 **"Trace Method Calls (JavaCallLink)"** - **快捷键**:`Ctrl + Shift + Alt + C` 2. **查看调用链** 插件会在右侧工具窗口 **"JavaCallLink"** 中显示调用关系: - **▲ 调用者 (Callers)**:显示所有调用该方法的上游方法(蓝色背景) - **▼ 被调用 (Callees)**:显示该方法内部调用的下游方法(绿色背景) - **红色背景**标记的是当前选择的方法(根节点) 3. **标签说明** 方法节点后面的标签表示方法来源: - `[JDK]` - java.*, javax.*, sun.* 等 - `[Spring]` - org.springframework.* - `[Apache]` - org.apache.*, org.apache.commons.* - `[Google]` - com.google.* - `[Alibaba]` - com.alibaba.*, cn.hutool.* 等 - `[开源]` - Hibernate, Slf4j, JUnit, Mockito, Netty 等 - `[Controller]` - Controller/RestController 类的方法 - `[项目]` - 项目内部自定义方法 4. **折叠/展开** - 点击顶部 **"折叠/展开"** 按钮切换所有节点状态 - 默认进入分析时,调用者展开第一级,被调用折叠 5. **跳转到源码** - **单击**任意节点,跳转到该方法的调用行 - **双击**任意节点,跳转到方法源代码定义 - **右键菜单**也可以选择跳转方式 6. **历史记录** - 下拉框显示最近 5 次分析的方法 - 点击可直接切换查看历史分析结果 ## 效果预览 ``` JavaCallLink ├─ [Service]processData() [红色背景 - 当前方法] │ ├─ ▲ 调用者 (2) [蓝色背景] │ │ ├─ [Controller]handleRequest() [Controller标签] │ │ └─ [Main]main() [项目标签] │ └─ ▼ 被调用 (3) [绿色背景] │ ├─ [Utils]validateInput() [JDK标签] │ ├─ [Dao]saveData() [开源标签] │ └─ [Service]processResult() [项目标签] ``` ![输入图片说明](image.png) ## 项目结构 ``` java-call-link/ ├── build.gradle.kts # Gradle 构建配置 ├── settings.gradle.kts # 项目设置 ├── gradle.properties # Gradle 配置 ├── src/main/ │ ├── kotlin/com/example/javacalllink/ │ │ ├── JavaCallLinkPlugin.kt # 插件主类 │ │ ├── actions/ │ │ │ └── FindMethodCallersAction.kt # 追踪方法调用动作 │ │ ├── analysis/ │ │ │ ├── CallLinkAnalyzer.kt # 调用链分析器 │ │ │ ├── CallLinkNode.kt # 调用链节点数据 │ │ │ └── MethodTag.kt # 方法标签枚举 │ │ └── ui/ │ │ ├── CallLinkToolWindowFactory.kt # UI工具窗口 │ │ └── HistoryComboBox.kt # 历史记录下拉框 │ └── resources/META-INF/ │ └── plugin.xml # 插件配置 └── README.md ``` ## 技术实现 - **语言**:Kotlin - **平台**:IntelliJ IDEA Plugin - **核心依赖**: - PSI (Program Structure Interface) - 用于代码分析 - MethodReferencesSearch - 用于查找方法引用 - ReferencesSearch - 用于查找引用 - ToolWindow API - 用于创建工具窗口 - UIUtil - 用于主题适配 ## 构建要求 - JDK 17+ - IntelliJ IDEA 任意版本 (2019.1+) - Gradle 9.x+ (或使用 Gradle Wrapper) ## 构建命令 ```bash # 构建插件 gradle clean buildPlugin # 构建产物位置 # build/distributions/JavaCallLink-1.0.0.zip ``` ## 注意事项 - 该插件仅支持 **Java 语言** - 调用链分析最大深度限制为 **3 层**,避免分析过慢 - 每个方法最多显示 50 个调用者,避免数据过多 - 对于循环调用,同一方法只会显示一次 - JDK/Spring/Apache 等框架包内的递归调用会被标记但不会继续展开 ## 问题反馈 如果你遇到任何问题或有任何建议,请提交 Issue。