首頁  >  文章  >  後端開發  >  如何使用PHP_CodeSniffer檢查程式碼規格(詳解)

如何使用PHP_CodeSniffer檢查程式碼規格(詳解)

青灯夜游
青灯夜游轉載
2020-06-28 09:54:333493瀏覽

如何使用PHP_CodeSniffer檢查程式碼規格(詳解)

有些同學可能還沒聽過這東西,大概介紹一下:

PHP_CodeSniffer 是一個程式碼風格偵測工具。它包含兩類腳本,phpcsphpcbf(GitHub位址)。

phpcs 腳本對PHPJavaScriptCSS 檔案定義了一系列的程式碼規格(通常使用官方的代碼規範標準,例如PHPPSR2),能夠偵測到不符合程式碼規範的程式碼並發出警告或報錯(可設定報錯等級)。

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 - UserSettings - Default ,將後者的內容全部複製到前者。

配置外掛程式

將以下這幾個設定項目配置:

目前環境中php 的執行路徑

"phpcs_php_prefix_path": "/usr/bin/php",

目前環境中phpcs 的執行路徑

"phpcs_executable_path": "~/.composer/vendor/bin/phpcs",

執行腳本時額外加入的參數,一般以PSR2 程式碼規格為標準,你也可以選擇PSR1PEAR

"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 settingsPHP Linter settingsPHP 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檢查程式碼規格(詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除