PHP_CodeSniffer 是什么
PHP_CodeSniffer 检查 PHP 代码是否符合编码规范:phpcs 负责检查并列出行号,phpcbf 按同一套标准自动修复可以修的部分。标准可以叠加,PSR-12、PSR-1、Squiz 与自定义标准都能组合,配置放在项目根的 phpcs.xml 里,避免把标准文件塞进 vendor 目录。
基本信息
| 工具 | phpcs(检查)/ phpcbf(修复) |
|---|---|
| 标准 | PSR-12 / PSR-1 / Squiz / 项目自定义 |
| 配置 | phpcs.xml 或 phpcs.xml.dist(项目根目录) |
| 扩展标准 | PHPCompatibility 等需通过 installed_paths 注册 |
| 集成 | Composer 脚本、CI 流水线、编辑器保存时检查 |
典型使用场景
- 提交前统一格式,评审不必纠结空格与换行
- CI 中只检查本次改动的文件,缩短反馈时间
- 叠加 PHPCompatibility 标准检查目标 PHP 版本兼容性
- 对遗留目录关闭部分规则,新代码保持严格标准
- 用 phpcbf 批量规整历史文件,再人工复核改动
- 编辑器与 CI 共用同一份 phpcs.xml:保存即提示,提交前不必再跑一遍
用法
用法
vendor/bin/phpcs --standard=PSR12 src/
vendor/bin/phpcbf --standard=PSR12 src/ # 自动修复
vendor/bin/phpcs --standard=PSR12 --report=summary src/
vendor/bin/phpcs --standard=PSR12 --extensions=php --ignore=*/vendor/* src/
# phpcs.xml 片段
# <ruleset name="project">
# <rule ref="PSR12"/>
# <exclude name="Generic.Files.LineLength"/>
# <file>src</file>
# </ruleset>常用参数
| 参数 | 作用 | 使用建议 |
|---|---|---|
| --standard | 指定标准或规则集 | 写进 phpcs.xml,命令行只做覆盖 |
| --report | 输出格式(full / summary / json) | 本地用 summary,CI 用 json |
| --extensions | 限定文件后缀 | 避免扫描到模板与配置 |
| --ignore | 排除路径 | 排除 vendor 与生成目录 |
| -p | 显示进度 | 大仓库上便于判断卡在哪 |
phpcs 与 PHP-CS-Fixer 有重叠但不完全等价:一个同时管规范检查与部分修复,一个专注修复且规则集更偏格式。项目里选一个作为权威标准,另一个只在明确边界内使用,避免两个工具互相把代码改回对方不喜欢的样子。
扩展标准需要注册路径:通过 installed_paths 指向标准的安装位置,否则 phpcs 会报找不到标准。升级依赖后要重新核对这条配置。已注册的标准列表可用 -i 查看,把结果写进项目文档,新人接手时不必再摸索。