直接用 composer 本地安装 phpStan(composer require –dev phpstan/phpstan)并配置 phpstan.neon(level: 5,paths: [src, tests]),可静态检查类型、未定义变量等,支持 laravel/symfony 插件扩展,集成至 composer scripts、git 钩子及 CI 流程。

直接用 Composer 安装 PHPStan 并配置基础分析,是 PHP 项目提升代码质量最轻量高效的方式之一。它不运行代码,只检查类型、语法、未定义变量等潜在问题,适合集成到 CI 或日常开发流程中。
安装 PHPStan 到项目中
推荐以 本地依赖 方式安装,避免全局版本冲突,也方便团队统一环境:
- 在项目根目录执行:
composer require --dev phpstan/phpstan - 安装完成后,可直接通过
vendor/bin/phpstan调用(windows 下为vendorbinphpstan.bat) - 如需支持 Laravel、Symfony 等框架的扩展规则,再单独安装对应插件,例如:
composer require --dev phpstan/phpstan-symfony
创建基础配置文件 phpstan.neon
PHPStan 使用 phpstan.neon(Neon 格式,类似 YAML)管理配置。在项目根目录新建该文件:
parameters: level: 5 paths: - src - tests excludePaths: - 'tests/Feature/*' inferPrivatePropertyTypeFromConstructor: true
-
level是核心参数:0~8,数字越大检查越严格;新项目建议从5起步,逐步升级 -
paths指定要分析的目录,通常为src和tests -
excludePaths可跳过暂时不处理的目录(如集成测试、生成代码) -
inferPrivatePropertyTypeFromConstructor启用后,能自动推断私有属性类型(PHP 7.4+ 构造函数赋值场景)
运行分析并理解常见输出
执行命令:vendor/bin/phpstan analyse
立即学习“PHP免费学习笔记(深入)”;
- 首次运行大概率会报错,比如“Call to an undefined method”或“Variable $x might not be defined”——这些正是静态分析的价值所在
- 每条错误包含文件路径、行号、错误类型和简短说明,例如:
src/Service/UserService.php:23: Call to an undefined method appEntityUser::getFullName() - 若想快速验证配置是否生效,可先分析单个文件:
vendor/bin/phpstan analyse src/Service/UserService.php - 添加
--debug参数可查看详细加载过程,排查配置未生效问题
集成到开发与 CI 流程
让 PHPStan 成为日常习惯,而不是一次性任务:
- 在
composer.json的scripts中添加快捷命令:"phpstan": "phpstan analyse",之后可用composer phpstan运行 - Git 提交前用钩子(如 GrumPHP)自动检查,阻止明显问题入库
- CI(如 github Actions)中加入步骤:
- name: Run PHPStan
run: vendor/bin/phpstan analyse --no-progress - 配合
--Error-format=checkstyle可输出标准格式,供 ide 或 CI 工具解析高亮