composer analyse —— 静态分析工具 PHPStan 完全指南
composer analyse —— 静态分析工具 PHPStan 完全指南 一、PHPStan 是什么? PHPStan 是 PHP 生态中最广泛采用的静态分析工具,它可以在不运行代码的情况下,通过分析代码的语法、类型和调用链,提前发现潜在的逻辑错误和 Bug。是现代 PHP 项目的标配工具之一。 核心价值 PHPStan 的核心价值在于在代码运行前发现问题。与单元测试不同,单元测试需要编写测试用例并实际执行代码,而静态分析则通过扫描源码即可完成检查,成本更低、覆盖更广。 例如,假设有以下代码: public function getUser(int $id): User { return User::find($id); } User::find() 在未找到记录时可能返回 null,但方法声明只返回 User 类型。PHPStan 会立即报告: Method getUser() should return User but returns User|null. 这种类型不匹配问题如果不经静态分析,可能要等到生产环境运行时才会暴露。 PHPStan 的检查级别 PHPStan 采用0–9 共 10 个检查级别,级别越高检查越严格: 级别 检查内容 0 基础检查:未定义的类、函数、方法调用 1 未定义的变量、未知的魔术方法 2 返回值类型、参数类型(基于 PHPDoc) 3 死代码检测、恒真/恒假条件 4 方法调用时的参数类型检查 5 强制类型提示(missing typehints) 6+ 并集类型严格检查(逐步增加严格度) 渐进式采用的策略:对于已有项目,建议从 level 0 或 level 1 开始,逐步提升。每次提升级别时,如果错误过多,可先生成基线文件(baseline)将现有问题暂时忽略,之后只关注新增问题。...