在我們開發中都會講究程式碼規範,若是個人開發者,程式碼規範與否,只要自己看得懂便可以了,但是在團隊協作中,程式碼規定特別重要,下面,我們介紹一款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<br/>cd PHP_CodeSniffer<br/>php bin/phpcs -h<br/>php bin/phpcbf -h<br/>要使用非最新版本,可以到PEAR下載,網址:http://pear.php.net/package/PHP_CodeSniffer/download例如,要用2.9.1,PEAR下載之後解壓,執行的指令是:
php scripts/phpcs -h<br/>php scripts/phpcbf -h<br/>與githuh 下載不同的是,執行檔在scripts目錄。
1.2 phar檔案安裝方式
phar也就是php archive,把php檔案打包成一個檔案供服務。 Linux系統用命令下載phar檔案:curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar<br/>curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar<br/>Windows系統用瀏覽器訪問上面的兩個鏈接,下載這兩個phar檔案。 然後在phar檔案的目錄裡面執行:
php phpcs.phar -h<br/>php phpcbf.phar -h<br/>能看到phpcs和phpcbf的幫助訊息,說明安裝成功。
說明:
這種方式要確保php可執行檔已經加入PATH環境,不然就得指定絕對目錄#每次執行都必須把這兩個. phar檔案放到對應目錄,然後在那目錄下運php phpcs.phar xxx行指令1.3 pear安裝方式
如果本機安裝了pear(pear安裝方法),也可以透過pear來安裝PHP_CodeSniffer,指令:pear install PHP_CodeSniffer<br/>透過pear安裝後,CodeSniffer的規格檔會安裝在:/path/to/pear/PHP/CodeSniffer/src/Standards。
1.4 composer安裝方式
composer安裝也很方便,一個指令:composer global require "squizlabs/php_codesniffer=*"<br/>說明:這裡需要composer指令已經在PATH環境變數中。 也可以在composer.json檔案中使用:
{<br/> "require-dev": {<br/> "squizlabs/php_codesniffer": "3.*"<br/> }<br/>}<br/>完成後執行指令:
./vendor/bin/phpcs -h<br/>./vendor/bin/phpcbf -h<br/>
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<br/>if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH<br/>GOTO RUN<br/>:USE_PEAR_PATH<br/>set PHPBIN=%PHP_PEAR_PHP_BIN%<br/>:RUN<br/>"%PHPBIN%" "D:\www\PHP_CodeSniffer-2.9.1\scripts\phpcs" %*<br/>然後把路徑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 # 检查文件<br/>$ phpcs /path/to/code # 检查目录和子目录下的所有文件<br/>$ phpcs -l /path/to/code # 检查目录下的所有文件,不包括子目录<br/>$ phpcs /path/to/code/myfile.inc /path/to/code/my_dir # 检查文件和目录<br/>
2.2 檢查結果
預設情況下,檢查結果包含錯誤和警告,如下:
$ phpcs /path/to/code/myfile.php<br/>FILE: /path/to/code/myfile.php<br/>--------------------------------------------------------------------------------<br/>FOUND 5 ERROR(S) AND 1 WARNING(S) AFFECTING 5 LINE(S)<br/>--------------------------------------------------------------------------------<br/> 2 | ERROR | Missing file doc comment<br/> 20 | ERROR | PHP keywords must be lowercase; expected "false" but found<br/> | | "FALSE"<br/> 47 | ERROR | Line not indented correctly; expected 4 spaces but found 1<br/> 47 | WARNING | Equals sign not aligned with surrounding assignments<br/> 51 | ERROR | Missing function doc comment<br/> 88 | ERROR | Line not indented correctly; expected 9 spaces but found 6<br/>--------------------------------------------------------------------------------<br/>如果不要顯示警告,加個- n參數:
$ phpcs -n /path/to/code/myfile.php<br/>僅顯示檢查結果摘要:
$ phpcs --report=summary /path/to/code<br/>
2.3 指定規範
可以使用-- standard參數指定一個或多個規範來檢查。$ phpcs --standard=PEAR /path/to/code/myfile.inc # 使用内置规范<br/>$ phpcs --standard=/path/to/MyStandard /path/to/code/myfile.inc # 使用指定路径下的规范<br/>$ phpcs --standard=PEAR,PHPCS,/path/to/MyStandard file.php # 使用多个规范<br/>$ phpcs --config-set default_standard Squiz # 修改默认规范为Squiz(原本是PEAR)<br/>查看現有規格:
$ phpcs -i<br/>###2.4 查看說明######
$ phpcs -h<br/>### 更多PHP相關知識,請造訪###PHP中文網# ##! ###
以上是PHP_CodeSniffer安裝與使用教學(自動程式碼檢查規格工具)的詳細內容。更多資訊請關注PHP中文網其他相關文章!