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

如何要求调用Kotlin函数myFunction时必须添加@MyCustomAnnotation并触发警告

问题

我已经定义了如下自定义注解类:

@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
annotation class MyCustomAnnotation

以及函数:

fun myFunction() {
    // 代码逻辑
}

请问如何实现:在编码时调用myFunction()必须添加@MyCustomAnnotation,若未添加则显示警告并提供添加注解的快速修复选项(类似常见的代码警告提示框),期望的正确调用形式为:

@MyCustomAnnotation
myFunction()
解决方案

方法一:使用IntelliJ IDEA自定义静态代码检查(推荐)

IntelliJ IDEA自带的结构搜索检查可以快速实现这个需求,步骤如下:

  1. 打开检查配置面板

    • Windows/Linux:点击File > Settings > Editor > Inspections
    • Mac:点击IntelliJ IDEA > Settings > Editor > Inspections
    • 在左侧列表展开Kotlin > General,点击右侧的+按钮,选择Add Custom Inspection
  2. 配置检查规则

    • 选择Structural Search Inspection类型,设置检查名称(比如“调用myFunction未添加@MyCustomAnnotation”),将严重程度设为Warning
    • 点击Edit Template,输入匹配模板:
      myFunction()
      
    • 点击Add Constraint,选择Occurrences count并设为1;再添加Not within约束,选择Annotation,指定注解为MyCustomAnnotation(需填写完整类名)
  3. 添加快速修复

    • 回到检查配置页,点击Fixes按钮,选择Add Fix > Replace Template
    • 在替换模板中输入正确的调用形式:
      @MyCustomAnnotation
      myFunction()
      
    • 保存配置后,代码中未加注解的myFunction()调用会立刻出现警告,点击左侧的灯泡图标就能一键添加注解。

方法二:编写Kotlin编译器插件

如果需要在编译阶段强制校验(而非仅IDE提示),可以编写Kotlin编译器插件:

  1. 创建编译器插件项目,实现对CallExpression的语法分析逻辑
  2. 检测所有myFunction()的调用节点,检查其是否被@MyCustomAnnotation修饰
  3. 若未检测到注解,抛出编译警告或错误,并实现快速修复逻辑,让IDE能提示自动添加注解
    这种方式适合团队统一代码规范,确保不符合要求的代码无法通过编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:40:06