安装 PHP_CodeSniffer

安装 phpcs

phpcs 是 PHP 代码规范的检测工具。

# 下载
$ curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar
# 加入到命令目录
$ mv phpcs.phar /usr/local/bin/phpcs
# 赋予执行权限
$ sudo chmod +x /usr/local/bin/phpcs
# 检验是否成功
$ phpcs -h

安装 phpcbf

phpcbf 是 PHP 代码规范的修复工具。

# 下载
$ curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar
# 加入到命令目录
$ mv phpcbf.phar /usr/local/bin/phpcbf
# 赋予执行权限
$ sudo chmod +x /usr/local/bin/phpcbf
# 检验是否成功
$ phpcbf -h

使用 phpcs

phpcs 配置

1.查看详细配置。使用命令: phpcs --config-show (下面是我当前的配置)

colors:                  1
default_standard: PSR2
encoding: utf-8
error_severity: 1
ignore_errors_on_exit: 1
ignore_warnings_on_exit: 1
report_format: summary
report_width: auto
severity: 1
show_progress: 1
show_warnings: 1
tab_width: 4
warning_severity: 8

2.设置默认的编码标准。(这个很重要,建议使用 PSR2 的标准)

# 查看配置
$ phpcs -i
The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz and Zend # 设置编码标准为 PSR2
$ phpcs --config-set default_standard PSR2

3.隐藏警告。(当然,对于强迫症来说,警告都是不允许的,非强迫症患者可以使用此配置项)

# 隐藏警告提醒
$ phpcs --config-set show_warnings 0
# 开启警告提醒
$ phpcs --config-set show_warnings 1

4.显示检查进程。(如果项目需要检查的文件较多可以开启这个)

# 显示检查进程
$ phpcs --config-set show_progress 1
# 关闭进程显示
$ phpcs --config-set show_progress 0

5.显示颜色。 (给自己点颜色看看哈)

# 显示颜色
$ phpcs --config-set colors 1
# 关闭颜色显示
$ phpcs --config-set colors 0

6.修改错误和警告等级

# 显示所有的错误和警告
$ phpcs --config-set severity 1
# 显示所有的错误,部分警告 注意等级可有从 5-8 5 的警告显示会更多,8 的更少
$ phpcs --config-set severity 1
$ phpcs --config-set warning_severity 5

7.设置默认编码

# 设置 utf-8
$ phpcs --config-set encoding utf-8

8.设置 tab 的宽度

# tab 为 4 个空格
$ phpcs --config-set tab_width 4
# 也可以对单独文件生效
$ phpcs --tab-width=0 /path/to/code

代码验证

1.校验单个文件

# 校验单个文件
$ phpcs filename

2.校验目录(如:整个项目)

# 校验目录 注意这个时候别因为 linux 学的太好加个 -R 哈。
$ phpcs /path/dir

结果分析

结果展现的形式:

full, xml, checkstyle, csv, json, emacs, source, summary, diff, svnblame, gitblame, hgblame or notifysend

指定展现形式:

# 汇总的形式
phpcs --report=summary test01.php # json 形式 (个人觉得这个形式更清晰)
phpcs --report=json test01.php

修复代码

使用 phpcbf

覆盖式修复

# 直接覆盖
$ phpcbf /path/code

生成中间文件

# 生成新文件
$ phpcbf /path/to/code --suffix=.fixed

使用 diff

# 以 test.php 为例 会生成 test.php.diff 文件
$ phpcs --report-diff=test.php.diff test01.php

PHP_CodeSniffer 使用攻略的更多相关文章

  1. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  2. 微软MVP攻略 (如何成为MVP?一个SQL Server MVP的经验之谈)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 初衷 什么是微软MVP? 成为微软MVP的条件? 如何成为微软MVP? (一) 申请时间划分 (二) 前期准备 (三) ...

  3. Windows下LATEX排版论文攻略—CTeX、JabRef使用介绍

    Windows下LATEX排版论文攻略—CTeX.JabRef使用介绍 一.工具介绍 TeX是一个很好排版工具,在学术界十分流行,特别是数学.物理学和计算机科学界. CTeX是TeX中的一个版本,指的 ...

  4. linux下安装apache与php;Apache+PHP+MySQL配置攻略

    1.apache   在如下页面下载apache的for Linux 的源码包    http://www.apache.org/dist/httpd/;   存至/home/xx目录,xx是自建文件 ...

  5. 生成 PDF 全攻略【2】在已有PDF上添加内容

    项目在变,需求在变,不变的永远是敲击键盘的程序员..... PDF 生成后,有时候需要在PDF上面添加一些其他的内容,比如文字,图片.... 经历几次失败的尝试,终于获取到了正确的代码书写方式. 在此 ...

  6. Java数组技巧攻略

      Java数组技巧攻略 0.  声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {" ...

  7. BZOJ3252: 攻略

    Description 题目简述:树版[k取方格数]   众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏. 今天他得到了一款新游戏<XX半岛>,这款游戏有n个场景 ...

  8. [经验] Win7减肥攻略(删文件不删功能、简化优化系统不简优化性能)

    [经验] Win7减肥攻略(删文件不删功能.简化优化系统不简优化性能) ☆心梦无痕☆ 发表于 2014-1-24 11:15:04 https://www.itsk.com/thread-316471 ...

  9. 从小工到专家 ——读《Java程序员职场全攻略》有感

    从小工到专家 ——读<Java程序员职场全攻略>有感   <Java程序员职场全攻略>是以故事的形式,向读者介绍Java程序员的职场经验.作者牛开复在北京从事软件开发,已经是一 ...

随机推荐

  1. java基本类型自动转换

    具体自动提升类型如上图所示.其中long->float的转换一开始让我感觉有点问题,因为long是64位的,而float却是32位的. 遂找寻答案,参考博客java中long到float的自动转 ...

  2. Nginx反向代理实现会话(session)保持的两种方式 (转)

    http://blog.csdn.net/gaoqiao1988/article/details/53390352 一.ip_hash: ip_hash使用源地址哈希算法,将同一客户端的请求总是发往同 ...

  3. 开始使用 Vuejs 2.0 --- 组件间数据传递

    Vue1.0组件间传递 使用$on()监听事件: 使用$emit()在它上面触发事件: 使用$dispatch()派发事件,事件沿着父链冒泡: 使用$broadcast()广播事件,事件向下传导给所有 ...

  4. .NET创建WebService服务简单的例子

    Web service是一个基于可编程的web的应用程序,用于开发分布式的互操作的应用程序,也是一种web服务 WebService的特性有以下几点: 1.使用XML(标准通用标记语言)来作为数据交互 ...

  5. DBNull.Value 与null

    来源:http://blog.csdn.net/beautifulsarah/article/details/54691670 DBNull.Value,, 适用于向数据库的表中插入空值.而 null ...

  6. automapper 自动映射 集成asp.net Core2.1

    学习博文:https://www.cnblogs.com/yan7/p/8085410.html 1.使用nuget 安装 <PackageReference Include="Aut ...

  7. 利用扩展方法重写JSON序列化和反序列化

    利用.NET 3.5以后的扩展方法重写JSON序列化和反序列化,在代码可读性和可维护性上更加加强了. 首先是不使用扩展方法的写法 定义部分: /// <summary>  /// JSON ...

  8. vue+SSM验证码实现

    源码:https://github.com/HannahLihui/StudentManager-SSM/tree/master/SSM-git/StudentManager-SSM-master 1 ...

  9. javascript中的undefined与null的区别

    一.相似性 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别. var a = undefined; var a = null; 上面代码中,a变量分别被赋值 ...

  10. 使用Hexo和Github Pages快速搭建个人博客

    在编程路上,每天都在网上查看别人的博客,大牛的文章写得通俗易懂,同时博客网站也非常华丽.作为出入编程的一枚小白也想拥有这样一个自己的网站.那就立马去买一个域名了,在网上找教程来搭建. 搭建的过程还算比 ...