跳转至

开发检查清单

新项目

  • 使用 IntelliJ Platform Gradle Plugin 2.x。
  • 使用 Gradle Wrapper。
  • 明确目标 IDE 与平台版本。
  • JDK 与目标平台匹配。
  • 安装并启用 Plugin DevKit。
  • plugin.xml 中设置稳定的插件 ID。
  • Gradle 与 plugin.xml 中的依赖声明一致。
  • 能成功运行 ./gradlew runIde

编码

  • Action 不保存 ProjectEditorPsiElement 等上下文字段。
  • AnAction.update() 足够快,并实现 getActionUpdateThread()
  • 读取 PSI/VFS/项目模型使用 Read Action。
  • 修改 PSI/VFS/项目模型使用 Write Action 或 Write Command。
  • 不长期缓存裸 PsiElement,必要时使用 SmartPsiElementPointer
  • 服务构造函数保持轻量。
  • 耗时任务放到后台任务或协程。
  • 不在 UI renderer 中修改模型。

plugin.xml

  • id 唯一且发布后不再修改。
  • namevendordescription 可读。
  • 目标模块依赖声明完整。
  • 可选依赖拆到额外配置文件。
  • 扩展点注册使用公开 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、同步索引查询