Composer 包中集成 PHPStan 和 PHP-CS-Fixer 需配置可复现的静态分析与代码格式化:PHPStan 通过 phpstan.neon 设定分析路径与等级,绑定 composer script;PHP-CS-Fixer 用 .php-cs-fixer.php 定义规则并集成至开发流程。

直接在 Composer 包里集成 PHPStan 和 PHP-CS-Fixer,不是加个依赖就完事——关键是要让它们真正跑起来、可复现、易维护,且不干扰用户使用。
PHPStan:静态分析要覆盖你的代码边界
PHPStan 能帮你提前发现类型错误、未定义方法、死代码等问题。对开源包尤其重要,因为调用方式不可控。
- 安装时加
--dev:运行composer require --dev phpstan/phpstan - 在项目根目录加
phpstan.neon(或phpstan.neon.dist),内容至少包含:parameters: level: 6 paths: - src excludePaths: - tests/_support - 在
composer.json的scripts里加一行:"phpstan": "phpstan analyse --configuration=phpstan.neon",之后就能用composer phpstan快速检查 - 如果包支持多 PHP 版本,建议在 GitHub Actions 中用
phpstan/phpstan-shim避免依赖冲突
PHP-CS-Fixer:格式统一靠规则,不是靠人盯
代码风格一致是协作基础,尤其当别人给你提 PR 时,别让空格和换行成为合并障碍。
- 安装:
composer require --dev friendsofphp/php-cs-fixer - 加配置文件
.php-cs-fixer.php(推荐用 PHP 数组写法,比 JSON 更灵活):setRules([ '@PSR12' => true, 'array_syntax' => ['syntax' => 'short'], 'declare_strict_types' => true, 'no_unused_imports' => true, ]) ->addFinder(PhpCsFixer\Finder::create()->in(['src', 'tests'])); - 在
composer.json中添加脚本:"cs-fix": "php-cs-fixer fix --dry-run --verbose"(CI 用)和"cs-fix-write": "php-cs-fixer fix"(本地修) - CI 中建议先用
--dry-run失败即退出,避免格式问题偷偷过 CI
CI 自动化:把质量检查变成每次提交的守门员
光本地能跑没用,得让 GitHub Actions 或 GitLab CI 每次 PR 都自动验一遍。
立即学习“PHP免费学习笔记(深入)”;
- 在
.github/workflows/test.yml中加两个 job:-
phpstan:用官方 PHPStan action 或直接run: composer phpstan,PHP 版本建议和最低支持版本一致 -
cs-check:运行composer cs-fix,失败说明有格式问题
-
- 加上
cache: composer和cache: ~/.composer加速重复构建 - 如果包带测试,把 PHPStan 和 CS Fixer 放在
testjob 之前,早发现问题早修复
文档与约定:让协作者一眼知道怎么参与质量共建
再好的工具,没人用等于没装。在 CONTRIBUTING.md 里写清楚三件事:
- 运行命令:
composer phpstan、composer cs-fix-write - CI 会检查什么(比如 “PHPStan level 6 不允许任何 error”)
- 如何本地预检:
make check(可选封装脚本)或推荐 IDE 插件(如 PHPStorm + PHP-CS-Fixer 插件)
基本上就这些。不复杂但容易忽略的是:配置文件要提交进仓库、CI 要真实执行、贡献指南要有人读——质量保障不是加个工具,而是建一套可落地的小闭环。











