在我们开发中都会讲究代码规范,若是个人开发者,代码规范与否,只要自己看得懂便可以了,但是在团队协作中,代码规定尤为重要,下面,我们介绍一款php_codesniffer,自动检查代码规范的工具。
php_codesniffer是一款自动化的php代码规范检查工具。
codesniffer内置mysource、pear、phpcs、psr1、psr2、squiz和zend等几套代码规范。
当然,你也可以新增自己的代码规范。
php_codesniffer 仓库地址:https://github.com/squizlabs/php_codesniffer
php_codesniffer 版本发布地址:http://pear.php.net/package/php_codesniffer
php_codesniffer包含两个工具,phpcs用来检查代码规范,phpcbf用来纠正代码规范。
1 安装php_codesniffer 有好几种安装方式。
1.1 可执行文件方式安装
用git命令下载(或直接下载)仓库源码,然后直接执行:
git clone https://github.com/squizlabs/php_codesniffer.git
cd php_codesniffer
php bin/phpcs -h
php bin/phpcbf -h
要使用非最新版本,可以到pear下载,地址:http://pear.php.net/package/php_codesniffer/download
例如,要用2.9.1,pear下载之后解压,执行的命令是:
php scripts/phpcs -h
php scripts/phpcbf -h
与 githuh 下载不同的是,执行文件在scripts目录。
1.2 phar文件安装方式
phar也就是php archive,把php文件打包成一个文件供服务。
linux系统用命令下载phar文件:
curl -ol https://squizlabs.github.io/php_codesniffer/phpcs.phar
curl -ol https://squizlabs.github.io/php_codesniffer/phpcbf.phar
windows系统用浏览器访问上面的两个链接,下载这两个phar文件。
然后在phar文件的目录里面执行:
php phpcs.phar -h
php phpcbf.phar -h
能看到phpcs和phpcbf的帮助信息,说明安装成功。
说明:
这种方式要保证php可执行文件已经添加到path环境,不然就得指定绝对目录
每次执行必须把这两个.phar文件放到对应目录,然后在那个目录下运php phpcs.phar xxx行命令
1.3 pear安装方式
如果本地安装了pear(pear安装方法),也可以通过pear来安装php_codesniffer,命令:
pear install php_codesniffer
通过pear安装后,codesniffer的规范文件会安装在:/path/to/pear/php/codesniffer/src/standards。
1.4 composer安装方式
composer安装也很方便,一个命令:
composer global require "squizlabs/php_codesniffer=*"
说明:这里需要composer命令已经在path环境变量中。
也可以在composer.json文件中使用:
{
"require-dev": {
"squizlabs/php_codesniffer": "3.*"
}
}
完成后执行命令:
./vendor/bin/phpcs -h
./vendor/bin/phpcbf -h
1.5 配置phpcs直接在命令行中执行
以上的方式中,除了pear安装方式,其他方式要执行phpcs命令,都需要在前面加上php。
如果是linux提供,因为php执行文件路径已经在环境path中,所以把bin(或scripts) 的路径加入path,就可以在终端执行phpcs命令了。
但是在windows系统中,实际是执行phpcs.bat文件,这个文件又引用了同目录下的phpcs文件。
在phpcs.bat中,我们需要配置两个变量,才能在cmd中正确执行phpcs命令。
如下,需指定php.exe和phpcs文件的绝对位置:
if "%phpbin%" == "" set phpbin=d:\php56n\php.exe
if not exist "%phpbin%" if "%php_pear_php_bin%" neq "" goto use_pear_path
goto run
:use_pear_path
set phpbin=%php_pear_php_bin%
:run
"%phpbin%" "d:\www\php_codesniffer-2.9.1\scripts\phpcs" %*
然后把路径d:\www\php_codesniffer-2.9.1\scripts\加入到path中,就可以在cmd中执行phpcs了。
说明:phpcbf也需要这样的修改。
2 使用上面我们看到 php_codesniffer 有两个命令。
默认情况下,php_codesniffer 使用pear规范检查代码。
2.1 使用命令
以下命令用默认规范来来检查文件和目录。
$ 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 # 检查文件和目录
2.2 检查结果
默认情况下,检查结果包含错误和警告,如下:
$ phpcs /path/to/code/myfile.php
file: /path/to/code/myfile.php
--------------------------------------------------------------------------------
found 5 error(s) and 1 warning(s) affecting 5 line(s)
--------------------------------------------------------------------------------
2 | error | missing file doc comment
20 | error | php keywords must be lowercase; expected "false" but found
| | "false"
47 | error | line not indented correctly; expected 4 spaces but found 1
47 | warning | equals sign not aligned with surrounding assignments
51 | error | missing function doc comment
88 | error | line not indented correctly; expected 9 spaces but found 6
--------------------------------------------------------------------------------
如果不要显示警告,加个-n参数:
$ phpcs -n /path/to/code/myfile.php
仅显示检查结果概要:
$ phpcs --report=summary /path/to/code
2.3 指定规范
可以使用 -- standard参数指定一个或多个规范来检查。
$ phpcs --standard=pear /path/to/code/myfile.inc # 使用内置规范
$ phpcs --standard=/path/to/mystandard /path/to/code/myfile.inc # 使用指定路径下的规范
$ phpcs --standard=pear,phpcs,/path/to/mystandard file.php # 使用多个规范
$ phpcs --config-set default_standard squiz # 修改默认规范为squiz(原本是pear)
查看现有规范:
$ phpcs -i
2.4 查看帮助
$ phpcs -h
更多php相关知识,请访问!
以上就是php_codesniffer安装和使用教程(自动代码检查规范工具)的详细内容。