推荐一款 phpcs 插件规范 Laravel 代码 (规范从本地写代码到版本控制)

简介:

我相信每个公司都有一套完备的代码规范标准,但标准是标准,如何能有效的让所有人遵守,那就要工具的辅助和实时提醒了。

如前端 vue 的大家基本都会使用   eslint    来约束我们的代码,一旦多一个空格都会提示你有问题,当    npm run dev  或者 npm run watch   就会提示你哪哪哪不符合规范。

在 Laravel 开发中,照样也有类似的工具,这也是本文的所要推荐的:

phpcs

在开始使用 phpcs     之前,我们简单来说说 Laravel 的代码规范标准

Laravel 代码规范 

Laravel follows the PSR-2 coding standard and the PSR-4 autoloading standard.

来自 Laravel 的说明:https://laravel.com/

几个代码规范的含义​

9ccc0ca9ly1fs71ifshd2j20a50dhq39.jpg

​其实现在很多网站已经挂出 PSR-2 编码规范的说明了,推荐看下面这个:

https://laravel-china.org/docs/psr/psr-2-coding-style-guide/1606​

9ccc0ca9ly1fs71j7fr85j20in0ajq6j.jpg

​但我在实际使用时,除了能够按照上面说的规范来,还有一块重要的内容他们没提。

文件和类注释 ​

9ccc0ca9ly1fs71k1ow0hj20in0hi43g.jpg

主要包含以上内容块:文件说明、PHP 版本号、还有就是按顺序的这五要素:(category, package, author, license, link),而且这五要素排版要对齐哦,一般人我不告诉哦~~~

方法注释 ​

9ccc0ca9ly1fs71khpemkj20if06pq4q.jpg

​主要包含:方法说明、空一行、参数块 (类型、参数名、含义 —— 这个需要对齐)、空一行、最后 

return 类型。

安装 phpcs 

使用 phpcs 之前,还是需要先知道这个东西是什么吧?

PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.

摘自:https://github.com/squizlabs/PHP_CodeSniffer

主要包含两个工具:phpcs 和 phpcbf (这个之后再说)。phpcs 主要对 PHP、JavaScript、CSS 文件定义了一系列代码规范标准,如我们会使用的,也是 Laravel 使用的PHP    PSR-2  标准,能够检测出不符合我们定义的代码规范的代码,并发出警告和错误,当然我们也可以设置报错的级别。

对于 phpcs 的使用,主要有两个途径:

1、在本地开发过程中,实时对我们的代码进行检测,让代码提交版本库时,就已经符合规范标准了;

2、在服务器对提交的代码进行检测,如果不符合标准的,则不入代码库,打回要求修改。

下面我们开始说说根据不同方法,如何安装 phpcs 工具的。

composer

写 Laravel 代码的同学,对使用 composer 应该很熟悉了,这种方法比较推崇。但主要区分为是「全局安装」还是按「项目安装」。

这里我本人推荐采用「全局安装」,可以在各个 IDE 上直接填入全局安装的 phpcs 可执行路径。但如果你的版本库是使用「git」的话,那我推荐使用「项目安装」,下文就知道原因了。

注: 我使用这种方式「全局安装」后,发现每回都关联不了「VSCode」,这个原因待查。

9ccc0ca9ly1fs71nmj58uj20dc03xdga.jpg

​pear 

安装 pear​

9ccc0ca9ly1fs71plscc6j20c901ra9u.jpg

开始安装配置,

先选择 1 (change the Installation Base);

输入:/usr/local/pear

再选择 4 (change the Binaries directory),

输入:/usr/local/bin​

9ccc0ca9ly1fs71qhpey7j20fn048gnc.jpg

​开始安装   PHP_CodeSniffer​

9ccc0ca9ly1fs71qyegeaj208b0140sh.jpg

在 MacOS 系统下:

9ccc0ca9ly1fs71ruunvcj20fk06441k.jpg

​在 Centos Linux 系统下安装效果:​

9ccc0ca9ly1fs71s87uzdj20cm05376s.jpg

​此方法比较有效果,而且也符合在多系统上尝试,比如本人同时在「Mac」和 「Linux」下都可以正常安装和使用。

注:我没在「Windows」环境下尝试,尚未知道效果。

brew 

9ccc0ca9ly1fs71sv7ycwj209o0120sh.jpg

9ccc0ca9ly1fs71t8ium8j20fr04sn18.jpg

​这种方法显然在「Mac」系统下有效了!

当然根据官网的文档,还有其他方法,欢迎大家去尝试:

具体可参考:https://github.com/squizlabs/PHP_CodeSniffer 中的「Installation」部分。

使用 phpcs 

无论是本地还是服务器,只要我们安装好了,自然就可以开始使用了。最直观也是最简单的方法莫过于用命令行的方式了,如:​

9ccc0ca9ly1fs71tphjynj20bm042gle.jpg

​但想到我们是用 IDE 写代码的,而且是希望实时看到效果的,所以下面尝试在几个 IDE 下看看如何使用。

安装 VSCode 插件 

在插件界面,搜索:phpcs,安装即可。​

9ccc0ca9ly1fs71ugdetkj20iw08egnx.jpg

​参考:https://marketplace.visualstudio.com/items?itemName=ikappas.phpcs

配置插件

由于项目使用的是系统的 phpcs,所以需要在 user setting  中配置可执行路径和自己自定义的编写风格​

9ccc0ca9ly1fs71vj265cj20ij0a642a.jpg

​这时候我们去看看我们的代码界面,是不是有了 phpcs  的提示了:

9ccc0ca9ly1fs71w4bxb1j20hz0crgrg.jpg

​安装 PhpStorm 插件 

9ccc0ca9ly1fs71wo8kl0j20ih0cjtbt.jpg

9ccc0ca9ly1fs71wzxbbnj20ie0f0abr.jpg

9ccc0ca9ly1fs71xhv9znj20j40gpahw.jpg

9ccc0ca9ly1fs71xvek6kj20ih0ck7aq.jpg

​直接看图,不需要做过多的说明了。

基本到此,phpcs 的插件就可以使用了。

版本检测规范 

我们希望在团队项目代码提交版本库之前「pre-commit」就能检测

出不符合「PSR-2」 标准的代码文件。无论是 svn 或者 git,都能在「pre-commit」获取提交版本库的代码文件,然后再利用「phpcs」去检测每个文件是否符合规范。

svn 

由于每个 svn 在服务端都有对应 hooks 文件夹,可以在「pre-commit」时,验证代码的规范,直接上文件,比较好理解:

9ccc0ca9ly1fs71ysu52wj20bt0i4mxa.jpg

9ccc0ca9ly1fs72052zraj20fh0ghwer.jpg

9ccc0ca9ly1fs71zaufjzj20ed0ac77r.jpg


这就是我们想要看到的效果了,无论 IDE 的实时提示,还是提交代码时的检测反馈,都会告诉我们哪里格式不符合规范了。

git 

这里主要参考 WickedReports/phpcs-pre-commit-hook https://github.com/WickedReports/phpcs-pre-commit-hook 的写法:


主要报错在于:

60 行: output 函数​

9ccc0ca9ly1fs722bd57uj20hq032t9z.jpg

​和 17 行:​

9ccc0ca9ly1fs722mciywj20is069wh7.jpg

​好了,我们执行  git commit   试试:​

9ccc0ca9ly1fs7235z5k8j20il09d43o.jpg

​接着我们把这几个不规范的地方改了之后,同样运行本地方法,返回结果:

我们再执行 git commit 试试:​

9ccc0ca9ly1fs724l22w2j20710190sp.jpg

​完美了!

注:「svn」和「git」的区别在于,svn 是放在服务器上做「pre-commit」检测的,而「git」是在本地本项目中的,这也是上文说的,如果你用 git 做版本库,推荐你用「composer」项目安装的方式安装工具。

总结 


本文以本地 Mac 系统和服务器 Linux 系统为安装端,以 VSCode 和 PHPStorm 两大主流 IDE 作为使用端,以 svn 和 git 为版本库为例,较为完整而又系统流程的说一说「phpcs」的使用,希望对大家有所帮助!

最后留个小问题:如果你使用 Docker 和 git,怎么做这一流程式检测?

本文转载自 叶梅树,如需转载,请向原作者发出申请,原作名称《推荐一款 phpcs 插件规范 Laravel 代码 (规范从本地写代码到版本控制)》​

9ccc0ca9ly1fs725lijgxg20hs01pt93.gif

推荐阅读

2018年5月新书书单(文末福利)

2018年4月新书书单

异步图书最全Python书单

一份程序员必备的算法书单

第一本Python神经网络编程图书

​​

长按二维码,可以关注我们哟

每天与你分享IT好文。


在“异步图书”后台回复“关注”,即可免费获得2000门在线视频课程;​​​​​​​​

相关文章
|
9月前
|
存储 设计模式 人工智能
规范:前端代码开发规范
规范:前端代码开发规范
1049 0
|
4月前
|
移动开发 小程序 JavaScript
【uniapp 小程序开发页面篇】代码编写规范 | 页面编写规范 | 小程序API
【uniapp 小程序开发页面篇】代码编写规范 | 页面编写规范 | 小程序API
110 0
|
5月前
|
JavaScript 开发者
TypeScript 对大型项目的管理和维护非常有利。具体应用案例解析
TypeScript 对大型项目的管理和维护非常有利。具体应用案例解析
|
7月前
|
SQL 监控 Java
【开发规范系列】(三)代码提交规范
【开发规范系列】(三)代码提交规范
|
9月前
|
程序员
代码的规范
代码的规范
111 0
|
9月前
|
算法 IDE 程序员
代码编写规范
代码编写规范
|
9月前
|
开发工具 git
代码统一风格、代码规范和提交规范
1、安装模块 全局安装 eslint、commitlint 、 check-prettier npm install eslint commitlint check-prettier -g 本地安装 npm install eslint-config-prettier  stylelint  stylelint-config-prettier stylelint-config-standard husky  @commitlint/config-conventional -D VSCode 安装 Eslint和Prettier插件
117 0
|
10月前
|
前端开发 JavaScript
前端代码如何规范编写?
前端代码如何规范编写?
91 0
|
12月前
|
消息中间件 JavaScript 小程序
自从用了CheckStyle插件,代码写的越来越规范了....
自从用了CheckStyle插件,代码写的越来越规范了....
rapidio 各版本规范
rapidio 各版本规范
112 0