一、简介

PHP_CodeSniffer 是一个代码风格检测工具,内置MySource、PEAR、PHPCS、PSR1、PSR2、Squiz和Zend等几套代码规范
它包含两类脚本,phpcs 和 phpcbf

phpcs

phpcs 脚本对 PHP、JavaScript、CSS 文件定义了一系列的代码规范(通常使用官方的代码规范标准,比如 PHP 的 PSR-4),能够检测出不符合代码规范的代码并发出警告或报错(可设置报错等级)

phpcbf

phpcbf 脚本能自动修正代码格式上不符合规范的部分。比如 PSR-4 规范中对每一个 PHP 文件的结尾都需要有一行空行,那么运行这个脚本后就能自动在结尾处加上一行空行。

php-cs-fixer
该工具不包含在 PHP_CodeSniffer 中, 是在另一个独立的项目 PHP-CS-Fixer
php-cs-fixer 修复不规范代码 作用等同于 phpcbf 只不过规则好像稍有区别

二、安装

PHP_CodeSniffer 仓库地址
PHP_CodeSniffer 版本发布地址

1. 下载

1.1 github 下载

用git命令下载(或直接下载)仓库源码,然后直接执行,此方法用于安装 最新版本
地址:PHP_CodeSniffer

git clone https://github.com/squizlabs/PHP_CodeSniffer.git

1.2 pear 下载

使用 最新版本, 可以使用命令行下载

pear install PHP_CodeSniffer
downloading PHP_CodeSniffer-3.5.8.tgz ...
Starting to download PHP_CodeSniffer-3.5.8.tgz (716,472 bytes)
...............................................................................................................................................done: 716,472 bytes
install ok: channel://pear.php.net/PHP_CodeSniffer-3.5.8

要使用 非最新版本,可以到PEAR下载,地址:PHP_CodeSniffer

1.3 composer 安装

composer global require "squizlabs/php_codesniffer=*"

下载后会在全局的 Vendor目录下的 bin 中生成两个软链接

phpcbf -> …/squizlabs/php_codesniffer/bin/phpcbf
phpcs -> …/squizlabs/php_codesniffer/bin/phpcs

2. 安装

2.1 查看全局 Vendor 目录位置

$ composer global config bin-dir --absolute
Changed current directory to /Users/haolin/.composer
/Users/haolin/.composer/vendor/bin

2.2 将 phpcs 和 phpcbf 的目录加入环境变量

# 1. 将指定版本的 codesniffer 命令软连到全局命令目录
ln -s  /Users/haolin/.composer/vendor/squizlabs/PHP_CodeSniffer-3.5.8/bin/phpcs ./phpcs
ln -s  /Users/haolin/.composer/vendor/squizlabs/PHP_CodeSniffer-3.5.8/bin/phpcbf ./phpcbf
# 2. 将全局命令目录加入 PATH 环境变量
vim /etc/paths
source /etc/paths

参考 Mac 环境变量加载

三、使用

命令行模式

  1. 设置默认代码标准,为了避免每次手动指定标准, 直接设置默认的代码标准为 PSR-4
phpcs --config-set default_standard PSR4
phpcbf --config-set default_standard PSR4
  1. 检测代码文件
phpcs test.php

此时命令行会提示发现的问题列表, 带 [x] 的表示可以被 phpcbf 修正
若需要每次执行时指定代码格式标准, 则加上 –standard=

phpcs --standard=PSR2 test.php
  1. 修正代码
phpcbf test.php

此时会修正问题列表中带 [x] 的问题

以下命令用默认规范来来检查文件和目录

$ phpcs /path/to/code/myfile.php # 检查文件
$ phpcs /path/to/code # 检查目录和子目录下的所有文件
$ phpcs -l /path/to/code # 检查目录下的所有文件,不包括子目录
$ phpcs /path/to/code/myfile.inc /path/to/code/my_dir # 检查文件和目录

四、PHPStorm 使用 Codesniffer 做语法检测

  1. 选择 PhpStorm->Preferences->Languages & Frameworks->PHP->Quality Tools-> Code Sniffer 并按如下配置

    按照上图红框 1-6 依次点击设置

  2. 选择 PhpStorm->Preferences->Editor->Inspections->Quality Tools->勾选PHP Code Sniffer Validation 选择右侧的PSR12

    按照上图红框 1-4 依次点击设置

  3. 验证

CodeSniffer使用教程相关推荐

  1. windows 安装docker使用教程

    一.win10上安装docker 注册docker账号 配置虚拟化 启用 bios 虚拟化,是否已启用可以通过任务管理器查看 如果没有启动请看,否则可以直接跳到2开启 Hyper-V进行后续操作: i ...

  2. 使用Docker搭建svn服务器教程

    使用Docker搭建svn服务器教程 svn简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很 ...

  3. mysql修改校对集_MySQL 教程之校对集问题

    本篇文章主要给大家介绍mysql中的校对集问题,希望对需要的朋友有所帮助! 推荐参考教程:<mysql教程> 校对集问题 校对集,其实就是数据的比较方式. 校对集,共有三种,分别为:_bi ...

  4. mysql备份psb文件怎么打开_Navicat for MySQL 数据备份教程

    原标题:Navicat for MySQL 数据备份教程 一个安全和可靠的服务器与定期运行备份有密切的关系,因为错误有可能随时发生,由攻击.硬件故障.人为错误.电力中断等都会照成数据丢失.备份功能为防 ...

  5. php rabbmq教程_RabbitMQ+PHP 教程一(Hello World)

    介绍 RabbitMQ是一个消息代理器:它接受和转发消息.你可以把它当作一个邮局:当你把邮件放在信箱里时,你可以肯定邮差先生最终会把邮件送到你的收件人那里.在这个比喻中,RabbitMQ就是这里的邮箱 ...

  6. 【置顶】利用 NLP 技术做简单数据可视化分析教程(实战)

    置顶 本人决定将过去一段时间在公司以及日常生活中关于自然语言处理的相关技术积累,将在gitbook做一个简单分享,内容应该会很丰富,希望对你有所帮助,欢迎大家支持. 内容介绍如下 你是否曾经在租房时因 ...

  7. Google Colab 免费GPU服务器使用教程 挂载云端硬盘

    一.前言 二.Google Colab特征 三.开始使用 3.1在谷歌云盘上创建文件夹 3.2创建Colaboratory 3.3创建完成 四.设置GPU运行 五.运行.py文件 5.1安装必要库 5 ...

  8. 理解和实现分布式TensorFlow集群完整教程

    手把手教你搭建分布式集群,进入生产环境的TensorFlow 分布式TensorFlow简介 前一篇<分布式TensorFlow集群local server使用详解>我们介绍了分布式Ten ...

  9. 高级教程: 作出动态决策和 Bi-LSTM CRF 重点

    https://www.zhihu.com/question/35866596 条件随机场 CRF(条件随机场)与Viterbi(维特比)算法原理详解 https://blog.csdn.net/qq ...

  10. PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词

    20210607 https://blog.csdn.net/u011828281/article/details/81171066 前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词 ...

最新文章

  1. 【从零学习OpenCV 4】安装过程中问题解决方案
  2. 转 如何利用客户端缓存对网站进行优化?
  3. 路由器管理页面html,196.168.1.1登陆页面网址
  4. iphone导出照片到电脑_如何更改 iPhone 照片格式?
  5. linux下logrotate配置和理解---转
  6. Scala父类构造方法
  7. python 问题自动匹配解决方案_匹配字典集。最优雅的解决方案。Python
  8. java文件定时读写_java定时任务及日志的使用
  9. C++中类和对象的一些注意事项 ---继承
  10. Qt工作笔记-Qt仿大佬使用关键字(Q_DECL_OVERRIDE与override)
  11. 刚发布!开发者调查报告:机器学习/深度学习算法工程师急缺
  12. Mathtype 免安装 | office自带UnicodeMath和LaTeX编辑功能
  13. jQuery UI dialog实现dialog弹框显示
  14. 利用MO实现流场显示
  15. 最常用高频汉字前4000
  16. java离线_java8离线版软件下载
  17. 计算机表格制作ppt,计算机基础使用excel2003制作表格.ppt
  18. GPRS无线MODEM模块上网设置命令
  19. 假如斯诺登生活在2023年
  20. 移动应用中的AR开发,6款最受欢迎工具推荐

热门文章

  1. 电子邮箱地址怎么写?
  2. BZOJ 2339[HNOI2011]卡农
  3. 计算文本相似度的常用算法
  4. php 相似文章,PHP TF-IDF与余弦相似性计算文章相似性
  5. ZED 视频 SVO 转换 其他格式
  6. 阿里云导出的镜像raw转换成vmdk格式工具
  7. 802d简明调试手册_802d简明调试手册.pdf
  8. Excel多条件求和函数之SUMPRODUCT
  9. excel透视表——制作动态饼图
  10. 关于AMD 245支持DDR3内存的问题