You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置PhpStorm与VSCode按Squizlabs PHPCS规则自动格式化代码

配置PhpStorm/VSCode自动遵循PHP_CodeSniffer代码规范

我接手的代码库大部分遵循squizlabs/PHP_CodeSniffer的代码检查规则,需要配置编辑器在保存文件时自动格式化仅修改过的内容,避免手动逐行设置代码风格,同时希望能导入项目的phpcs.xml.dist规则。以下是PhpStorm和VSCode的具体配置方法:


PhpStorm 配置步骤

1. 确保PHP_CodeSniffer已安装

可以通过Composer全局安装或项目本地安装:

# 全局安装
composer global require squizlabs/php_codesniffer

# 项目本地安装(推荐)
composer require --dev squizlabs/php_codesniffer

2. 让PhpStorm识别PHP_CodeSniffer

  • 打开 Settings → Languages & Frameworks → PHP → Quality Tools
  • 找到PHP_CodeSniffer,点击右侧的配置按钮(齿轮图标)
  • 指定phpcs的执行路径:
    • 全局安装:填写Composer全局bin目录下的phpcs路径(比如~/.composer/vendor/bin/phpcs)
    • 项目本地安装:填写项目根目录下的vendor/bin/phpcs
  • 如果项目有自定义规则文件phpcs.xml.dist,在Configuration file中选择该文件,让PhpStorm遵循项目自定义规范

3. 导入Squiz代码风格(匹配PHP_CodeSniffer默认规则)

  • 打开 Settings → Editor → Code Style → PHP
  • 点击右上角的Set from → Predefined Style → Squiz
    • 这个预定义风格完全匹配squizlabs/PHP_CodeSniffer的核心规则,无需手动逐行设置

4. 配置保存时自动格式化修改内容

  • 打开 Settings → Tools → Actions on Save
  • 勾选Reformat code,点击右侧的齿轮图标,选择Only changed lines(仅格式化修改过的代码行)
  • 可选:勾选Optimize imports等其他需要的操作,确保只作用于当前修改的文件

VSCode 配置步骤

1. 安装必要插件

在扩展商店搜索并安装:

  • PHP Sniffer & Beautifier:用于识别PHP_CodeSniffer规则并自动修复
  • (可选)Format Modified Lines:仅格式化修改过的代码行

2. 安装PHP_CodeSniffer

同PhpStorm,使用Composer全局或项目本地安装:

composer require --dev squizlabs/php_codesniffer

3. 配置VSCode识别PHP_CodeSniffer

打开VSCode设置(快捷键Ctrl+,),搜索并设置以下选项:

  • phpcs.executablePath:填写phpcs的执行路径(项目本地为./vendor/bin/phpcs,全局安装则对应全局路径)
  • phpcs.configFile:填写项目根目录的phpcs.xml.dist路径,确保遵循项目自定义规则

4. 配置保存时自动修复

在设置中搜索editor.codeActionsOnSave,添加以下配置:

"editor.codeActionsOnSave": {
    "source.fixAll.phpcs": true
}

如果需要仅格式化修改的部分,配合Format Modified Lines插件,在设置中添加:

"formatModifiedLines.enable": true,
"formatModifiedLines.formatOnSave": true

内容的提问来源于stack exchange,提问作者Zeth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:55:18