本篇文章給大家介紹PHP_CodeSniffer,以及其安裝和使用教程。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。
PHP_CodeSniffer是一款自動化的PHP代碼規(guī)范檢查工具。
CodeSniffer內(nèi)置MySource
、PEAR
、PHPCS
、PSR1
、PSR2
、Squiz
和Zend
等幾套代碼規(guī)范。
當(dāng)然,你也可以新增自己的代碼規(guī)范。
- PHP_CodeSniffer 倉庫地址:https://github.com/squizlabs/PHP_CodeSniffer
- PHP_CodeSniffer 版本發(fā)布地址:http://pear.php.net/package/PHP_CodeSniffer
PHP_CodeSniffer包含兩個工具,phpcs
用來檢查代碼規(guī)范,phpcbf
用來糾正代碼規(guī)范。
1 安裝
PHP_CodeSniffer 有好幾種安裝方式。
1.1 可執(zhí)行文件方式安裝
用git命令下載(或直接下載)倉庫源碼,然后直接執(zhí)行:
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下載之后解壓,執(zhí)行的命令是:
php scripts/phpcs -h php scripts/phpcbf -h
與 githuh 下載不同的是,執(zhí)行文件在scripts
目錄。
1.2 phar文件安裝方式
phar也就是php archive,把php文件打包成一個文件供服務(wù)。
Linux系統(tǒng)用命令下載phar文件:
curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar
Windows系統(tǒng)用瀏覽器訪問上面的兩個鏈接,下載這兩個phar文件。
然后在phar文件的目錄里面執(zhí)行:
php phpcs.phar -h php phpcbf.phar -h
能看到phpcs和phpcbf的幫助信息,說明安裝成功。
說明:
- 這種方式要保證php可執(zhí)行文件已經(jīng)添加到PATH環(huán)境,不然就得指定絕對目錄
- 每次執(zhí)行必須把這兩個
.phar
文件放到對應(yīng)目錄,然后在那個目錄下運php phpcs.phar xxx
行命令
1.3 pear安裝方式
如果本地安裝了pear(pear安裝方法),也可以通過pear來安裝PHP_CodeSniffer,命令:
pear install PHP_CodeSniffer
通過pear安裝后,CodeSniffer的規(guī)范文件會安裝在:/path/to/pear/PHP/CodeSniffer/src/Standards
。
1.4 composer安裝方式
composer安裝也很方便,一個命令:
composer global require "squizlabs/php_codesniffer=*"
說明:這里需要composer
命令已經(jīng)在PATH
環(huán)境變量中。
也可以在composer.json文件中使用:
{ "require-dev": { "squizlabs/php_codesniffer": "3.*" } }
完成后執(zhí)行命令:
./vendor/bin/phpcs -h ./vendor/bin/phpcbf -h
1.5 配置phpcs直接在命令行中執(zhí)行
以上的方式中,除了pear安裝方式,其他方式要執(zhí)行phpcs
命令,都需要在前面加上php。
如果是Linux提供,因為php執(zhí)行文件路徑已經(jīng)在環(huán)境PATH
中,所以把bin
(或scripts
) 的路徑加入PATH
,就可以在終端執(zhí)行phpcs
命令了。
但是在Windows系統(tǒng)中,實際是執(zhí)行phpcs.bat文件,這個文件又引用了同目錄下的phpcs文件。
在phpcs.bat中,我們需要配置兩個變量,才能在CMD中正確執(zhí)行phpcs命令。
如下,需指定php.exe
和phpcs
文件的絕對位置:
if "%PHPBIN%" == "" set PHPBIN=D:php56nphp.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:wwwPHP_CodeSniffer-2.9.1scriptsphpcs" %*
然后把路徑D:wwwPHP_CodeSniffer-2.9.1scripts加入到PATH中,就可以在CMD中執(zhí)行phpcs了。
說明:phpcbf也需要這樣的修改。
2 使用
上面我們看到 PHP_CodeSniffer 有兩個命令。
默認(rèn)情況下,PHP_CodeSniffer 使用PEAR規(guī)范檢查代碼。
2.1 使用命令
以下命令用默認(rèn)規(guī)范來來檢查文件和目錄。
$ 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 檢查結(jié)果
默認(rèn)情況下,檢查結(jié)果包含錯誤和警告,如下:
$ 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
參數(shù):
$ phpcs -n /path/to/code/myfile.php
僅顯示檢查結(jié)果概要:
$ phpcs --report=summary /path/to/code
2.3 指定規(guī)范
可以使用 -- standard
參數(shù)指定一個或多個規(guī)范來檢查。
$ phpcs --standard=PEAR /path/to/code/myfile.inc # 使用內(nèi)置規(guī)范 $ phpcs --standard=/path/to/MyStandard /path/to/code/myfile.inc # 使用指定路徑下的規(guī)范 $ phpcs --standard=PEAR,PHPCS,/path/to/MyStandard file.php # 使用多個規(guī)范 $ phpcs --config-set default_standard Squiz # 修改默認(rèn)規(guī)范為Squiz(原本是PEAR)
查看現(xiàn)有規(guī)范:
$ phpcs -i
2.4 查看幫助
$ phpcs -h
推薦學(xué)習(xí):《PHP視頻教程》