You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IntelliJ中实现自定义实体类字段引用校验检查

为自研框架实现IntelliJ字段合法性检查

场景说明

你使用的自研框架包含以下核心方法:

查询方法

// find all entityClass matching the given filters
public <E> List<E> findAllBy(Class<E> entityClass, Filter... filter);

Filter构造方法

// param is the name of the field of entityClass, value is the value it should take
public static Filter equals(String param, Object value);

核心问题:能否检查equals方法的param参数对应实体类已定义字段?

可以实现,需要基于IntelliJ Platform SDK开发自定义检查插件,核心步骤如下:

  • 识别findAllBy方法调用,提取第一个参数对应的实体类类型
  • 追踪方法内传入的Filter实例,定位到equals静态方法的调用,获取param的字符串参数值
  • 通过IntelliJ的PSI(Program Structure Interface)分析实体类的字段信息,校验param是否为该类的有效字段名
  • 若参数不匹配,在编辑器中高亮标记错误

附加问题:能否处理"foo.foo2"这类嵌套字段?

完全可以,只需在字段校验逻辑中增加路径解析:

  • 将param按.分割成字段路径列表(如["foo", "foo2"])
  • 从实体类开始逐层校验:先确认当前类有foo字段,再获取foo字段的类型,接着校验该类型是否存在foo2字段
  • 任何一层字段不存在时,立即触发错误提示

实现核心要点

  • 依赖IntelliJ的PSI解析代码结构,精准定位方法调用和参数
  • 利用PsiClass、PsiField等API获取类的字段信息,支持嵌套类型的递归查询
  • 自定义LocalInspectionTool子类实现检查逻辑,在插件配置中注册后,IntelliJ会自动在代码分析时执行该检查

内容的提问来源于stack exchange,提问作者Loïc Gammaitoni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:21:01