有些同學可能還沒聽過這東西,大概介紹一下:
PHP_CodeSniffer
是一個程式碼風格檢測工具。它包含兩類指令碼,phpcs
和 phpcbf
(GitHub地址)。
phpcs
指令碼對 PHP
、JavaScript
、CSS
檔案定義了一系列的程式碼規範(通常使用官方的程式碼規範標準,比如 PHP
的 PSR2
),能夠檢測出不符合程式碼規範的程式碼並行出警告或報錯(可設定報錯等級)。
phpcbf
指令碼能自動修正程式碼格式上不符合規範的部分。比如 PSR2
規範中對每一個 PHP
檔案的結尾都需要有一行空行,那麼執行這個指令碼後就能自動在結尾處加上一行空行。
安裝
推薦使用 composer
來安裝:
composer global require "squizlabs/php_codesniffer=*"
安裝完後就會在全域性的 Vendor
目錄下的 bin
中生成兩個軟連結:
phpcbf -> ../squizlabs/php_codesniffer/bin/phpcbf phpcs -> ../squizlabs/php_codesniffer/bin/phpcs
如果你不知道全域性 Vendor
目錄在哪,用下這個命令吧:
composer global config bin-dir --absolute
命令列使用
到這一步,其實你就可以愉快的使用這兩個命令了:
哦,不過如果要全域性使用這兩個命令那還是做個軟連結放在 /usr/local/bin
下吧~
$ phpcs test.php FILE: /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.php PHPCBF 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 - User
和 Settings - Default
,將後者的內容全部複製到前者。
設定外掛
將以下這幾個設定項設定一下:
當前環境中 php
的執行路徑
"phpcs_php_prefix_path": "/usr/bin/php",
當前環境中 phpcs
的執行路徑
"phpcs_executable_path": "~/.composer/vendor/bin/phpcs",
執行指令碼時額外新增的引數,一般以 PSR2
程式碼規範作為標準,你也可以選擇 PSR1
、PEAR
等
"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 settings
、PHP Linter settings
、PHP 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 中進行新增,下面是我的一個範例,基本可以照搬 :)
Parameter | Value |
---|---|
Name | phpcbf |
Description | Automatically correct coding standard violations. |
Program | phpcbf |
Parameters | --standard=PSR2 "$FileDir$/$FileName$" |
現在就可以在選單欄上的 Tools -> External Tools 中找到它並愉快的使用了。
亮哥,這樣很不方便誒。。。
那就加一個快捷鍵把。。。
在 Settings -> Keymap -> External Tools -> phpcbf 中進行新增快捷鍵操作,我設定的是 Option + F
,或者 Windows 上的 Alt + F
。
蜜汁延伸
之前沒用 phpcbf
,程式碼自動修復使用的是 php-cs-fixer
,但後來發現兩者功能差不多,所以秉著能少一個包就少一個包的原則,放棄了 php-cs-fixer
。
有興趣的自行拓展了解~
推薦:《PHP視訊教學》
以上就是如何使用PHP_CodeSniffer檢查程式碼規範(詳解)的詳細內容,更多請關注TW511.COM其它相關文章!