[原创]PHP代码修正之CodeSniffer
参考链接
使用 PHP-CS-Fixer 的可以看这篇文章: https://learnku.com/laravel/t/547/use-php-cs-fixer-to-automatically-standardize-your-php-code
介绍
PHP_CodeSniffer 是一个代码风格检测工具。它包含两类脚本,phpcs 和 phpcbf(GitHub地址)
phpcs 脚本对 PHP、JavaScript、CSS 文件定义了一系列的代码规范(通常使用官方的代码规范标准,比如 PHP 的 PSR2),能够检测出不符合代码规范的代码并发出警告或报错(可设置报错等级)。
phpcbf 脚本能自动修正代码格式上不符合规范的部分。比如 PSR2 规范中对每一个 PHP 文件的结尾都需要有一行空行,那么运行这个脚本后就能自动在结尾处加上一行空行。
php-cs-fixer
该工具不包含在 PHP_CodeSniffer 中, 是在另一个独立的项目 https://github.com/FriendsOfPHP/PHP-CS-Fixer
php-cs-fixer 修复不规范代码 作用等同于 phpcbf 只不过规则好像稍有区别
安装
composer global require "squizlabs/php_codesniffer=*"
安装后会在全局的 Vendor目录下的 bin 中生成两个软链接:
phpcbf -> ../squizlabs/php_codesniffer/bin/phpcbf
phpcs -> ../squizlabs/php_codesniffer/bin/phpcs
查看全局
Vendor目录位置:composer global config bin-dir --absolute
使用
命令行模式
将
phpcs和phpcbf的目录加入环境变量设置默认代码标准
为了避免每次手动指定标准, 直接设置默认的代码标准为 PSR-2
phpcs --config-set default_standard PSR2
phpcbf --config-set default_standard PSR2
检测代码文件
phpcs test.php
此时命令行会提示发现的问题列表, 带
[x]的表示可以被phpcbf修正若需要每次执行时指定代码格式标准, 则加上
–standard=<standard>phpcs --standard=PSR2 test.php
修正代码
phpcbf test.php
此时会修正问题列表中带
[x]的问题
PHPStorm
让编辑器使用PSR-2标准
1、打开PhpStorm的设置页(File->Setting),到Editor->Code Style->PHP页PHP中选择风格为 PSR1/2

2、到Code Sniffer页,路径是Setting->Languages and Frameworks->PHP->Quality Tools->Code Sniffer,设置phpcs的路径
Composer全局的vendor目录\bin\phpcs.bat

3、到Inspections页,路径Setting->Editor->Inspections,右侧的 PHP,勾选下面的两个 PHP,选择使用 PSR2

现在使用PhpStorm的格式化,将会自动格式化成psr-2的风格
经过上面的操作,PhpStorm代码格式化的规则基本与phpcs的规则基本一致了,但也有一小部分不一致,所以后面还要用到phpcs和phpcbf
如果每次都在终端去执行花费时间可不少,为了提高工作效率,可以在PhpStorm集成phpcbf、phpcs检测规范的功能
设置路径:Tools -> External Tools
集成phpcbf

Program是你的PHP根目录下的文件,windows是.bat文件Arguments是--standard=PSR2 $FileDir$/$FileName$,记得指定代码标准Working directory是$ProjectFileDir$,也可以直接填
下面的Open console for tool output是指打印检测的信息到控制台上,phpcs检测的我们要看,phpcbf就不用了,所以不用勾选
怎么使用呢?
工具栏的Tools->External Tools就可以看到我们刚才添加的两个小工具,直接点击就可以用了
点击操作很麻烦, 那就加一个快捷键吧:
在 Settings -> Keymap -> External Tools -> phpcbf 中进行添加快捷键操作
[原创]PHP代码修正之CodeSniffer的更多相关文章
- 【转载/修改】ScrollLayout代码修正,追加模仿viewpager滚动速度
组件作用为类似ViewPager但直接插视图的横向滚动容器. 修改自:http://blog.csdn.net/yaoyeyzq/article/details/7571940 在该组件基础上修正了滚 ...
- 原创:js代码, 让dedecms支持Tag选择, 添加内容更为方便,不用手输Tag
dedecms在编辑修改内容时,TAG标签需要手动输,中文的Tag, 中间还得用半角字符','分隔, 输入法切来切去很不方便, 于是动手改后台代码, 利用后台的tags_main.php, 让d ...
- [原创]-[WEB]代码高亮工具
代码高亮显示,不是什么新鲜玩艺了,各种各样的插件多了去了. 一开始想在baidu空间里贴代码,用GeSHi生成的高亮HTML复制到编辑器就可以了,不过QQ空间却不行,复制过去的格式全部被清 ...
- PhpStorm添加PHP代码规范检查CodeSniffer(phpcs)和PHP代码静态分析工具Mess Detector(phpmd)
一.安装 添加镜像,加速下载 ./composer.phar config -g repo.packagist composer https://packagist.phpcomposer.com ...
- 对于国嵌上学期《一跃进入C大门》Mini2440的代码修正
摸索了几天,加了无数的群,病急乱投医式地问了好多个人,终于改对了代码. 下面先贴出给的范例代码 这是C语言代码,是没有错的. 那么出错的地方就在start.S部分 很明显,MPLLCON地址错误,正确 ...
- [NLP] The Annotated Transformer 代码修正
1. RuntimeError: "exp" not implemented for 'torch.LongTensor' class PositionalEncoding(nn. ...
- vscode vue 项目保存运行lint进行代码修正
{ "editor.tabSize": 2, "files.associations": { "*.vue": "vue" ...
- c#将金额转换为大写,支持小数点,原创经典
网上搜的都有问题,这个代码属于原创,代码简洁,支持小数点,若没有小数点,则为整 /// <summary> /// 将金额转换成大写 /// </summary> /// &l ...
- 【LDA】修正 GibbsLDA++-0.2 中的两个内存问题
周末这两天在家用LDA做个小实验. 在LDA的众多实现的工具包中.GibbsLDA 是应用最广泛的.包含c++版本号.java版本号等.GibbsLDA++ 是它的C++版本号的实现.眼下最新版本号是 ...
随机推荐
- NW.js
1.package.json属性说明: ——window窗口外观常用属性包括: title : 字符串,设置默认 title width/height : 主窗口的大小 toolbar : bool ...
- VBA计算器的全部实现
我们将加入 除零逻辑 和 对话框提示. 后面 就很简单了~~~ 提供效果图跟 代码 代码示例 Sub 矩形1_Click() ' ' 矩形1_Click Macro ' 代码编辑 Dim number ...
- Java IO NIO详细讲解
1.IO Java IO概述 2.NIO Java NIO浅析
- 使用extract-text-webpack-plugin插件后报错
如果你使用的webpack是4+版本,那么尝试运行npm install extract-text-webpack-plugin@next ,即可解决问题 然而最好的解决办法是在webpack4+的版 ...
- Hibernate 日期映射 条件查询
1. hql: ...and accopt_time > ?" 2. query.setDate Query query = session.createQuery(hql); int ...
- P1233木棍加工
这个题被算法标签标为DP,但其实可能只是用dp求子序列,,(n方) 给出l与w,只要是l与w同时满足小于一个l与w,那么这个木棍不需要时间,反之需要1.看到这个题,首先想到了二维背包,然后发现没有最大 ...
- P1012拼数
这是一道字符串的普及—的题. 输入几组数字,怎样组合起来才可以使最后结果最大.一开始这道题类似于那道删数问题,每次删除递增序列的最后一位,达到最小.而这个题我也是想到了贪心做法,于是想逐位判断,让在前 ...
- CCF1078奇怪的电梯
这是一道dfs搜索题.(noi的题库测试数据有些水) 已知每一层的步数,有两个方向(上下),求解到达终点的最少操作数.拿到这个题就发现是一个Dfs,于是便套了模板写代码.Wa了三次才AC.核心是:1. ...
- HTTP报文结构和内容(转)
HTTP请求报文格式就如下图所示: 1. 请求报文 一个HTTP请求报文由请求行(request line).请求头部(header).空行和请求数据4个部分组成. 大致结构是这样的: <req ...
- 通过实例简介python使用ctypes模块调用C语言动态库
看介绍python语言时,说它是胶水语言,可以调用其他语言.通过使用ctypes模块就可以调用C语言的动态库.下面先放上官方文档和几个比较好的博文. 1.官方文档:http://python.net/ ...