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

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

Jun 28, 2020 am 09:54 AM
php 程式碼規範

如何使用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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

See all articles