You need to enable JavaScript to run this app. Phan静态分析报未声明JetBrains PhpStorm注解类如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Phan静态分析报未声明JetBrains PhpStorm注解类如何解决?

问题复现
  • 开发场景使用PhpStorm 2020.3 EAP 4版本的内置注解语法
  • 业务代码中使用注解的示例片段:
use JetBrains\PhpStorm\NoReturn;
#[NoReturn] public function __construct() {}
  • 执行Phan静态分析时输出报错:

PhanUndeclaredClassAttribute Reference to undeclared class \JetBrains\PhpStorm\NoReturn in an attribute

核心疑问
  • 如何修复上述Phan静态分析报错
  • 是否需要安装JetBrains官方提供的对应依赖,才能让这类内置注解被代码库的静态分析工具正常识别
修复方案

这类注解本身不属于PHP原生内置语法,是JetBrains为IDE代码提示、静态校验自定义的存根类,默认不会被第三方静态分析工具识别,有两种可选修复方式:

  1. 安装官方存根依赖(推荐方案)
    通过Composer安装JetBrains官方提供的PHP存根库,执行命令:
    composer require --dev jetbrains/phpstorm-stubs
    安装后所有PhpStorm内置的注解类(包括本次用到的NoReturn)都会被预定义在依赖中,Phan、PHPStan等静态分析工具会自动识别类声明,报错会直接消失。该依赖仅作为开发环境校验使用,不会被打包到生产运行环境,不会影响业务代码执行逻辑。
  2. 手动声明注解类(轻量替代方案)
    如果不想引入额外依赖,可在项目中手动定义当前用到的注解类,示例代码:
    namespace JetBrains\PhpStorm;
    #[\Attribute(\Attribute::TARGET_METHOD | \Attribute::TARGET_FUNCTION)]
    class NoReturn {}
    
    该方案需要自行维护所有用到的JetBrains注解类声明,适合仅使用少量内置注解、不想引入额外依赖的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 11:06:08