开发检查清单¶
新项目¶
- 使用 IntelliJ Platform Gradle Plugin 2.x。
- 使用 Gradle Wrapper。
- 明确目标 IDE 与平台版本。
- JDK 与目标平台匹配。
- 安装并启用 Plugin DevKit。
plugin.xml中设置稳定的插件 ID。- Gradle 与
plugin.xml中的依赖声明一致。 - 能成功运行
./gradlew runIde。
编码¶
- Action 不保存
Project、Editor、PsiElement等上下文字段。 AnAction.update()足够快,并实现getActionUpdateThread()。- 读取 PSI/VFS/项目模型使用 Read Action。
- 修改 PSI/VFS/项目模型使用 Write Action 或 Write Command。
- 不长期缓存裸
PsiElement,必要时使用SmartPsiElementPointer。 - 服务构造函数保持轻量。
- 耗时任务放到后台任务或协程。
- 不在 UI renderer 中修改模型。
plugin.xml¶
id唯一且发布后不再修改。name、vendor、description可读。- 目标模块依赖声明完整。
- 可选依赖拆到额外配置文件。
- 扩展点注册使用公开 API。
- 用户可见文本考虑资源包。
编辑器功能¶
- Completion 模式匹配范围准确。
- Inspection 的报错信息清楚,Quick Fix 名称是动词短语。
- Quick Fix 修改代码前校验元素仍有效。
- 检查描述 HTML 放在
inspectionDescriptions。 - 对补全、检查、Quick Fix 写模型级测试。
兼容与发布¶
- 不依赖内部 API,或明确记录风险。
- 升级目标平台后运行测试和 Plugin Verifier。
since-build设置符合最低支持版本。- 谨慎设置
until-build,避免无谓阻断用户升级。 - 发布前更新版本号和变更说明。
- 签名密钥和 Marketplace Token 只通过安全环境变量提供。
- 首次发布手动上传,后续可以走
publishPlugin。
排查顺序¶
| 问题 | 优先检查 |
|---|---|
| 类找不到 | Gradle 依赖、plugin.xml 依赖、目标 IDE 类型 |
| 插件无法加载 | IDE 日志、依赖缺失、XML 注册错误 |
| Action 不显示 | group-id、update()、上下文数据、插件是否加载 |
| 补全不触发 | language、pattern、Dumb Mode、扩展点注册 |
| 检查不生效 | inspection 注册、语言、profile、测试文件类型 |
| UI 卡顿 | EDT 上的耗时任务、长 Read Action、同步索引查询 |