Psalm 是 PHP 静态分析工具,通过 Composer 安装为 dev 依赖,运行 --init 生成 psalm.xml 配置,设置 errorLevel(推荐 4–5 起步),集成至 composer scripts 和 CI 流程,并支持 totallyTyped 和插件扩展类型推断。

Psalm 是一个功能强大的 PHP 静态分析工具,能发现类型错误、未定义变量、潜在的运行时异常等问题。通过 Composer 安装并正确配置后,它能深度介入开发流程,显著提升代码健壮性。
安装 Psalm 到项目中
推荐将 Psalm 作为开发依赖安装,避免污染生产环境:
- 运行 composer require --dev vimeo/psalm 添加到
require-dev - 执行 vendor/bin/psalm --init 自动生成基础配置文件
psalm.xml - 该命令会扫描当前目录结构,询问项目规模(small/medium/large),建议选 medium 起步,后续可手动调优
生成并理解 psalm.xml 配置
psalm.xml 是 Psalm 的核心配置文件,控制分析范围、错误级别和自定义规则:
- 默认生成的配置包含
,需确认等路径是否匹配你的实际源码目录 - 关键属性
errorLevel控制严格程度:1(宽松)→8(最严格),新项目建议从4或5开始逐步收紧 - 可通过
单独禁用或降级特定问题,例如屏蔽已知的第三方库警告:
集成到开发与 CI 流程
让 Psalm 成为日常开发的一部分,而非一次性检查工具:
- 在
composer.json的scripts中添加:
"psalm": "psalm",
"psalm-fix": "psalm --alter --issues=InvalidReturnType,MissingParamType"
后者可自动补全部分类型注解 - CI 中加入 vendor/bin/psalm --no-cache --threads=2,启用多线程加速,
--no-cache确保每次都是干净分析 - 配合 GitHub Actions 或 GitLab CI,可在 PR 提交时自动运行,失败则阻断合并
进阶:启用类型推断与插件支持
Psalm 支持深度类型理解,需少量配置激活:
- 在
psalm.xml中开启totallyTyped="true"(位于根节点),强制所有文件启用严格类型检查 - 添加
支持 Laravel、Symfony 等框架的魔术方法识别,例如使用 psalm-plugin-laravel - 对动态调用(如
$obj->{$method}()),可配合@psalm-var或@psalm-call注解引导分析器










