Skip to content

weihubeats/ignite

Repository files navigation

🚀 Ignite Plugin - IntelliJ Arthas Integration

Ignite 是一款专为 IntelliJ IDEA 设计的开发效能插件。它深度集成了 Arthas,让你无需离开 IDE,无需手动输入复杂的命令行,即可通过右键菜单直接调用运行中进程(Spring Boot/Java 应用)的任意方法。

它就像是给你的本地代码和运行中服务架起了一座所见即所得的桥梁。


✨ 核心特性 (Features)

  • ⚡️ 右键即运行 (One-Click Execution)

    • 直接在 Java 方法名上右键点击 Ignite Run,即可触发调用。

    • 自动生成方法的 Mock 入参(基于 DataFaker)。

  • 🛠 微服务/多进程支持 (Microservices Support)

    • 智能识别所有运行中的 Java 进程。

    • 通过下拉框选择目标服务(显示服务名与 PID),轻松调试多实例环境。

  • 📝 强大的参数编辑器

    • 内置 JSON 高亮编辑器,支持语法检查与格式化。

    • 参数记忆功能:自动保存上次成功运行的参数,拒绝重复输入。

  • 📊 专业级控制台报告 (Dedicated Console)

    • 拥有专属的底部工具窗口 Ignite Console

    • 输出像 Postman 一样的执行报告:包含调用时间、目标服务、美化后的入参 JSON 和返回值 JSON。

    • 支持一键清空日志。

  • 🤖 自动化 Arthas 注入

    • 全自动检测并 Attach 目标进程,无需手动下载或启动 Arthas。

    • 首次运行自动下载,后续运行毫秒级响应。

    • 支持中文参数,自动转义处理,杜绝乱码。


📸 截图预览 (Screenshots)

(建议在此处放一张右键菜单和弹窗的截图)

(建议在此处放一张底部控制台输出结果的截图)


🛠 安装指南 (Installation)

环境要求

  • IntelliJ IDEA: 2023.2 或更高版本 (Community 或 Ultimate 均可)

  • JDK: 运行环境需 Java 17+ (目标项目可以是 Java 8+)

  • OS: Windows / macOS / Linux

从源码构建

  1. 克隆本项目:

    Bash

    git clone https://github.com/weihubeats/ignite-plugin.git
    
  2. 使用 Gradle 构建插件包:

    Bash

    ./gradlew clean buildPlugin
    
  3. 构建成功后,在 build/distributions/ 目录下找到 ignite-plugin-1.0-SNAPSHOT.zip

  4. 打开 IDEA -> Settings -> Plugins -> ⚙️ 图标 -> Install Plugin from Disk...,选择该 zip 包安装。


📖 使用说明 (Usage)

  1. 启动项目: 在 IDEA 中启动你的 Spring Boot 或 Java 应用程序。

  2. 选择方法: 打开任意 Java 类,将光标定位在你想测试的方法名上。

  3. 触发运行

    • 点击鼠标右键,选择菜单中的 Ignite Run

    • (或者配置快捷键以提高效率)

  4. 调整参数

    • 插件会弹出一个配置窗口。

    • 目标服务:在下拉框中选择你要调试的进程(如 UserService (PID: 8080))。

    • 入参 (JSON):编辑方法的入参。插件默认会生成随机 Mock 数据,你可以根据需要修改。

  5. 查看结果: 点击 OK。底部会自动弹出 Ignite Console 窗口,显示结构化的执行报告。


⚠️ 常见问题 (Troubleshooting)

Q: 点击运行后提示 "Wait Arthas response timeout"?

A: 这通常是因为你的项目当前正处于 Debug 断点暂停 (Suspended) 状态。 Arthas 无法在 JVM 暂停时执行代码。请先在 Debug 窗口点击 Resume Program (F9) 放行断点,然后再运行插件。

Q: 第一次运行非常慢?

A: 首次运行时,插件需要去阿里云仓库下载 Arthas 的核心包(约 10MB)。下载完成后,后续运行通常在 100ms 内完成。

Q: 报错 NoClassDefFoundErrorClassNotFoundException

A: 确保你选择了正确的进程。如果你在 OrderService 的代码上右键,却选择了 UserService 的进程,Arthas 会找不到对应的类。


⚙️ 技术原理 (How it works)

  1. Attach: 插件利用 Java Attach API 将 arthas-boot.jar 注入到目标 JVM。

  2. Command: 解析选中的 PSI 方法结构,通过 vmtool 命令构建 Ognl 表达式:

    Bash

    vmtool --action getInstances --className com.xxx.Controller --express 'instances[0].method(args)'
    
  3. Communication: 通过 Telnet 连接到 Arthas 端口 (3658),发送指令并解析回包。

  4. Display: 清洗 Telnet 的原始输出,提取返回值并美化 JSON,通过 ToolWindow 展示。


🤝 贡献 (Contributing)

欢迎提交 Issue 或 Pull Request! 如果你有好的想法,比如支持更多 Arthas 命令(Trace, Watch 等),请随时联系。

📄 许可证 (License)

Apache 2.0 License

About

🚀 Execute Java/Spring methods instantly in IntelliJ IDEA via Arthas integration. Right-click to run, supports Microservices & JSON parameter editing. 一款基于 Arthas 的 IDEA 插件。支持右键直接运行任意 Java 方法/Spring Bean

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors