在日常的后端开发工作中,我们经常面临两个痛点:一是在庞大的代码库中快速定位某个 API 的定义位置,二是为这些 API 编写繁琐的接口文档。为了解决这些问题,我开发了一款名为 HttpMate 的 IntelliJ IDEA 插件。
今天这篇博客,我想分享一下 HttpMate 的功能特性,以及使用 Kotlin 开发 IntelliJ 插件的一些心得体会。
🚀 HttpMate 能做什么?
HttpMate 旨在成为后端开发者的好帮手,主要包含以下核心功能:
1. ⚡️ 极速 API 搜索
你是否还在用全局搜索 (Ctrl+Shift+F) 来查找 @RequestMapping("/users")?
HttpMate 提供了一个专门的 REST API 搜索窗口。
- 快捷键:
Ctrl + \(或Ctrl + Alt + H) - 功能:输入路径关键词(如
user list),即可列出所有匹配的 API(支持 Spring Boot 和 JAX-RS)。 - 操作:回车即跳转代码定义处,支持模糊搜索。
2. 📝 零配置文档生成
写文档是最枯燥的环节。HttpMate 可以通过右键菜单一键生成 Markdown 文档。
- 智能解析:自动提取
@GetMapping等注解信息。 - 参数详情:不仅仅是解析参数名,还能识别
@Size,@Min,@NotNull等验证注解,并在文档中列出约束条件。 - 嵌套对象:如果参数是复杂对象,插件会递归解析并生成嵌套类型的表格,最大支持 3 层深度,完美展示数据结构。
3. 🧩 Mock 数据自动生成
在调试接口时,手动构造复杂的 JSON 请求体非常耗时。 HttpMate 内置了 Mock 引擎,能根据 Java/Kotlin 类的结构自动生成带有模拟数据的 JSON。
- 支持 String, Number, Boolean, Date 等基础类型。
- 支持 List, Set, Map 等集合类型。
- 数据随机化,让 Mock 数据更真实。
🛠 IntelliJ 插件开发:PSI 的魔法
开发 IntelliJ 插件的核心在于理解 PSI (Program Structure Interface)。
PSI 是 IntelliJ 平台对代码的语义表示。与简单的文本处理不同,PSI 将代码解析成了一棵树(类似 AST)。
扫描 API 的原理
以 HttpMate 的 API 扫描功能为例,它是如何找到所有 Controller 的呢?
- Scope(作用域):首先定义搜索范围
GlobalSearchScope.projectScope(project)。 - AnnotatedElementsSearch:利用 PSI 提供的搜索工具,查找所有标记了
@Controller或@RestController的类。 - 遍历解析:遍历类中的
PsiMethod,检查是否有@RequestMapping等注解。 - 属性提取:通过
annotation.findAttributeValue("value")精确获取路径信息,而不需要写复杂的正则表达式去匹配文本。
// 伪代码示例
val mappingAnnotations = listOf("org.springframework.web.bind.annotation.GetMapping", ...)
for (annotationName in mappingAnnotations) {
val methods = AnnotatedElementsSearch.searchPsiMethods(annotationClass, scope)
for (method in methods) {
// 解析路径和方法...
}
}
💎 为什么选择 Kotlin 开发插件?
IntelliJ IDEA 本身就是 JetBrains 出品的,而 Kotlin 也是他们的亲儿子。使用 Kotlin 开发 IntelliJ 插件有天然的优势:
1. 简洁的语法
插件开发中需要处理大量的 PSI 对象转换和空值判断。
- Java: 需要层层
if (obj != null) { ... }。 - Kotlin: 安全调用
?.和 Elvis 操作符?:让代码瞬间清爽。
2. 强大的集合操作
在扫描 API 时,我们经常需要对列表进行过滤、映射、去重。Kotlin 的标准库函数(filter, map, groupBy)让数据处理逻辑一目了然。
// 清晰的流式处理
psiClass.allMethods
.filter { !it.hasModifierProperty(PsiModifier.STATIC) }
.map { docGenerator.generate(it) }
.forEach { sb.append(it) }
3. UI DSL
IntelliJ 平台最近推出了 Kotlin UI DSL,让构建设置页面或对话框变得像写 HTML 一样简单描述性,告别了 Swing 繁琐的布局管理器。
4. 官方推荐
目前 IntelliJ 平台的官方文档和示例代码正全面转向 Kotlin。使用 Kotlin 能更容易看懂源码,复用社区资源。
🎯 总结
HttpMate 从最初解决我个人痛点的一个小脚本,慢慢演变成了一个功能完善的插件。通过这次开发经历,我深刻体会到了 IntelliJ 平台强大的扩展能力。
如果你也有想要自动化的重复性工作,不妨尝试写一个插件,Kotlin 绝对是你的最佳拍档!
项目 GitHub 地址: HttpMate (示例链接)

本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。