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

IntelliJ结构搜索如何检测@Deprecated缺失配套@DeprecationReason注解

实现IntelliJ自定义检查的两种可行思路

方案1:使用结构化搜索快速实现(无需开发插件)

  • 按快捷键Ctrl+Shift+A(Mac系统为Cmd+Shift+A)唤起全局动作搜索,输入Structural Search并进入对应功能页
  • 选择目标语言为Java,新增搜索模板,内容填写如下:
    @Deprecated
    $OtherAnnotations$
    $TargetElement$
    
  • 选中模板中的$OtherAnnotations$变量,设置约束:最小出现次数为0、最大出现次数为0,表示除已明确写出的@Deprecated外,目标元素上没有其他注解(你也可以调整约束为「文本不匹配DeprecationReason」,适配目标元素上有其他无关注解的场景)
  • 选中模板中的$TargetElement$变量,设置适用范围为类、方法、成员变量三类你需要覆盖的元素类型
  • 保存该模板为自定义检查项,自定义告警级别和提示文案,比如@Deprecated 必须搭配 @DeprecationReason 注解说明弃用原因,配置完成后IDEA即可自动触发对应告警

方案2:自定义IDEA插件本地检查(适合团队统一管控场景)

  • 基于IntelliJ Platform SDK创建Java检查插件,自定义检查类继承AbstractBaseJavaLocalInspectionTool基类
  • 重写visitAnnotation方法,当遍历到注解为java.lang.Deprecated时,获取该注解所属的父节点(即被修饰的类/方法/字段元素)
  • 遍历父节点的所有注解列表,判断是否存在你项目自定义的全限定名xxx.xxx.DeprecationReason注解
  • 如果未匹配到@DeprecationReason注解,调用holder.registerProblem方法抛出对应告警,还可按需补充快速修复能力(比如一键生成带占位符的@DeprecationReason注解)
  • 插件打包后可推送至团队私有仓库,全团队统一安装启用即可实现规则强制校验

内容的提问来源于stack exchange,提问作者Manuel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:51:02