首页/开发/代码质量与评审速查/PHP_CodeSniffer:PHP 编码规范检查
规范与静态检查65 条

PHP_CodeSniffer:PHP 编码规范检查

PHP_CodeSniffer 检查 PHP 是否符合编码规范:phpcs 检查、phpcbf 自动修复,PHPCompatibility 等标准可叠加,用 phpcs.xml 声明标准与排除路径。

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 查看,把结果写进项目文档,新人接手时不必再摸索。

易错点

  • phpcbf 全量修复后不检查 diff:自动修复可能改变字符串与注释内容,需人工确认
  • 标准文件直接改 vendor 内:升级即被覆盖,配置应放项目根
  • 对所有目录用同一份严格规则:遗留代码全面爆红,团队只能整体关闭
  • 忽略扩展到 PHP 版本兼容检查:目标版本升级时才发现语法不兼容
  • 只在本地手动跑检查:没有进 CI,漏检到评审才发现,标准形同建议
  • 把 phpcbf 接进提交钩子:修复结果未经复核直接入仓,格式改动与逻辑改动混在一起

数据来源与参考

  • PHP_CodeSniffer 官方仓库与文档(github.com/PHPCSStandards/PHP_CodeSniffer)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌