PHP_CodeSniffer安裝和使用教學(自動程式碼檢查規範工具)

2020-07-16 10:05:47
PHP_CodeSniffer安裝和使用教程(自動代碼檢查規範工具)

在我們開發中都會講究程式碼規範,若是個人開發者,程式碼規範與否,只要自己看得懂便可以了,但是在團隊共同作業中,程式碼規定尤為重要,下面,我們介紹一款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: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中執行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中文網

以上就是PHP_CodeSniffer安裝和使用教學(自動程式碼檢查規範工具)的詳細內容,更多請關注TW511.COM其它相關文章!