如何使用PHP_CodeSniffer检查代码规范(详解)

如何使用PHP_CodeSniffer检查代码规范(详解),第1张

概述如何使用PHP_CodeSniffer检查代码规范(详解

有些同学可能还没听过这东西,大概介绍一下:

PHP_CodeSniffer 是一个代码风格检测工具。它包含两类脚本,PHPcsPHPcbf(GitHub地址)。

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

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

安装

推荐使用 composer 来安装:

composer global require "squizlabs/PHP_codesniffer=*"

安装完后就会在全局的 vendor 目录下的 bin 中生成两个软链接:

PHPcbf -> ../squizlabs/PHP_codesniffer/bin/PHPcbfPHPcs -> ../squizlabs/PHP_codesniffer/bin/PHPcs

如果你不知道全局 vendor 目录在哪,用下这个命令吧:

composer global config bin-dir --absolute

命令行使用

到这一步,其实你就可以愉快的使用这两个命令了:

哦,不过如果要全局使用这两个命令那还是做个软链接放在 /usr/local/bin 下吧~

$ PHPcs test.PHPfile: /Users/stephen/Develop/Code/test.PHP--------------------------------------------------------------------------------------------FOUND 2 ERRORS AFFECTING 2 lines-------------------------------------------------------------------------------------------- 2 | ERROR | [ ] Missing file doc comment 3 | ERROR | [x] TRUE, FALSE and NulL must be lowercase; expected "false" but found "FALSE"--------------------------------------------------------------------------------------------PHPCBF CAN FIX THE 1 MARKED SNIFF VIolATIONS autoMATICALLY--------------------------------------------------------------------------------------------Time: 45ms; Memory: 4Mb$ PHPcbf test.PHPPHPCBF RESulT SUMMARY----------------------------------------------------------------------file                                                  FIXED  REMAINING----------------------------------------------------------------------/Users/stephen/Develop/Code/test.PHP                  1      1----------------------------------------------------------------------A TOTAL OF 1 ERROR WERE FIXED IN 1 file----------------------------------------------------------------------Time: 49ms; Memory: 4Mb

Sublime Text 中集成

安装插件

前提 Package Control 要安装好,这个你肯定没问题的(莫名的自信,逃)

安装 PHPcs 这个插件,然后打开这个插件的 Settings - UserSettings - Default,将后者的内容全部复制到前者。

配置插件

将以下这几个配置项配置一下:

当前环境中 PHP 的执行路径

"PHPcs_PHP_prefix_path": "/usr/bin/PHP",

当前环境中 PHPcs 的执行路径

"PHPcs_executable_path": "~/.composer/vendor/bin/PHPcs",

执行脚本时额外添加的参数,一般以 PSR2 代码规范作为标准,你也可以选择 PSR1PEAR

"PHPcs_additional_args": {    "--standard": "PSR2",    "-n": ""},

当前环境中 PHPcbf 的执行路径

"PHPcbf_executable_path": "/Users/stephen/.composer/vendor/bin/PHPcbf",

开启保存就执行 cbf 脚本功能

"PHPcbf_on_save": true,

现在就可以愉快的玩耍了,编辑完 .PHP 后缀的文件保存后就会自动回复修正代码不规范的地方。

这个插件还有其他代码规范可以设置的地方,比如 PHP Mess Detector settingsPHP linter settingsPHP Scheck settings

下次在研究其他几个,目前是够我用了,逃)

PHPStrom 中集成

配置 Code Sniffer

在 Settings -> Languages & Frameworks -> PHP -> Code Sniffer 中对 PHPcs 进行配置

点击 Configuration: Local 旁边的 ...,将当前环境的 PHPcs 执行脚本所在路径配置进去,旁边有一个 ValIDate 按钮可以进行验证,其他两个参数默认就好,这里也稍微说一下吧。

Maxumum number of messages per file[1...100]:每个文件最多显示不符合代码规范的条数,一般出现50个了那你有很多工作可以做了,其实10个就够了,尤其对我这种代码洁癖和强迫症晚期的人来说一个足矣 。。。

Tool process timeout, sec[1...30]:脚本执行的超时时间

开启验证

在 Settings -> Editor -> inspections 中进行开启

找到 PHP -> PHP Code Sniffer valIDation 选项,对其打钩,在右侧进行详细配置

我是将 Options -> Show warnings as: Error 开启了,当然你也可以选择 Warnning,提示级别高一点能够强迫自己,没啥不好的吧~

Coding standard 依旧是选择 PSR2,如果找不到这个选项,记得点一下紧挨着的刷新按钮。

自动修复

我找了半天没发现 PHPStrom 有支持 PHPcbf 的可用选项,所以只能通过 External Tools 来实现了。

在 Settings -> Tools -> External Tools 中进行添加,下面是我的一个示例,基本可以照搬 :)

@H_404_221@name@H_404_221@PHPcbf@H_404_221@Description@H_404_221@automatically correct Coding standard violations.@H_404_221@Program@H_404_221@PHPcbf@H_404_221@Parameters@H_404_221@--standard=PSR2 "$fileDir$/$filename$"
ParameterValue

现在就可以在菜单栏上的 Tools -> External Tools 中找到它并愉快的使用了。

亮哥,这样很不方便诶。。。

那就加一个快捷键把。。。

在 Settings -> Keymap -> External Tools -> PHPcbf 中进行添加快捷键 *** 作,我设置的是 Option + F,或者 windows 上的 Alt + F

蜜汁延伸

之前没用 PHPcbf,代码自动修复使用的是 PHP-cs-fixer,但后来发现两者功能差不多,所以秉着能少一个包就少一个包的原则,放弃了 PHP-cs-fixer

有兴趣的自行拓展了解~

推荐:《PHP视频教程》 总结

以上是内存溢出为你收集整理的如何使用PHP_CodeSniffer检查代码规范(详解)全部内容,希望文章能够帮你解决如何使用PHP_CodeSniffer检查代码规范(详解)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存