為 Laravel 配置 PHP_CodeSniffer

閱讀時間約 5 分鐘

在專案開發的時候,專案架構搭建時團隊就會設定 php code style 檢查,避免整個開發團隊大家走出自己的風格,尤其是兩格空白還是四格空白,總是會有不同意見,這時候定義出團隊code style,並透過配置Github Action CI(Continuous Integration)來幫助我們提交代碼時進行檢查,避免出現如下圖的問題(歪)

取自程人頻道IG截圖

取自程人頻道IG截圖

接下來我們就為自己專案安裝squizlabs/php_codesniffer套件,並設定檢查規則,搭建Github Action在提交時替我們先做程式碼的檢查,通常我都是本地開發完畢自己會在跑過一次確認無誤,在推送到開發分支上,接著我們來安裝套件。

composer require --dev squizlabs/php_codesniffer

根據官方文件說明,PHP_CodeSniffer 內含兩個 PHP 腳本,一個為phpcs腳本對 PHP、JavaScript 和 CSS 檔案進行檢查,以偵測是否違反了已定義的編碼標準,而第二個腳本則會自動修正違反phpcbf編碼標準的情況

./vendor/bin/phpcs  //檢查規則
./vendor/bin/phpcbf //修正違反編碼標準

安裝完畢後根據文件說明,預設編碼標準是 PEAR 編碼標準,而PEAR解釋如下

GPT3.5

GPT3.5

而文件也說到你可以根據你想要的編碼標準去設定,例如常見的PSR標準,而這裡我會使用PSR-12 作為預設標,而你可以在執行時,使用 --standard=PSR12 指令來執行。

./vendor/bin/phpcs ./ --standard=PSR12

但這樣檢查程式碼就等於全部專案內的文件都會掃過一次,如果按照PSR12標準就會噴出非常多的ERROR,這時候就可以根據建立自定義文件phpcs.xml來定義自己團隊想要有的規則,可以根據查看這個說明敘述

接著我們可以直接複製一份官方的phpcs.xml.dist到我們自己的專案目錄下,而自定義規則可以參考這篇Customisable Sniff Properties,這邊解釋了許多規則用法,可以參考使用,或是實在不知道該怎麼用,也可以使用這個工具選一選自動幫你產生phpcs.xml檔案內容。

而看不懂phpcs.xml.dist也沒關係,套件wiki指引上有提供附註解的檔案Annotated Ruleset可以參考,而如果你覺得PHP_CodeSniffer 提供的sniffs不敷使用,還可以多安裝一個Slevomat PHP_CodeSniffer來增加額外的規則。

而每個文檔對於sniffs都有給出很多範例解釋這些使用方式,因為太多了就不一一解釋,大家可以好好看著文檔配飯吃(誤)。

大致上配置如下

raw-image

註:有些錯誤訊息,他在執行時不會產生出來,可以透過<severity>8</severity>這個tag將錯誤訊息顯示出來,根據文件說明在 PHP CodeSniffer 中,"嚴重程度" 是一個值,用於評估錯誤或警告的重要性,其範圍通常從 1 到 8,而當你將嚴重程度設定為低值(比如 1 或 2)時,表示這個錯誤或警告被視為較不重要,通常不會在默認情況下顯示在輸出中,而文件預設嚴重程度為 (5) 可以查看以下英文說明。相反,當嚴重程度設定為較高值(比如 7 或 8)時,表示這個錯誤或警告非常重要,會在默認情況下顯示在輸出中,並且可能會導致程式碼檢查失敗。。

We also drop the severity of this message from the default value (5) so that it is hidden by default. It can be displayed by setting the minimum severity on the PHP_CodeSniffer command line. This is great if you want to use some messages only in code reviews and not have them block code commits.

基本設定都差不多後,執行相關代碼,有錯誤訊息就會如下圖這樣。

raw-image

接著配置Github Action檢查,這邊根據github規範新建一個./github/workflows 資料夾,並在裡面命名一個yaml檔來配置。

raw-image

接著將專案直接推上去,目前我只有一個branch name develop,而github action 可以根據 on 參數決定你要執行哪種操作,可以參考Github Action 文件

以下就是github action 執行畫面,可以看到檢查錯誤的部分。

raw-image

以上就是配置PHP_CodeSniffer跟自定義規則phpcs.xml,接著丟到github action進行程式碼的檢查整個流程,之後 side project 有寫單元測試的時候還可以再增加測試的指令~~大家可以試著配置看看~~







avatar-img
15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
DDDDD的沙龍 的其他內容
為了做登入log紀錄,練習mongoDB來存放log資料,這邊就來紀錄 Laravel 配置mongoDB的實作,而原本我的side project是練習搭建docker開發環境,故這邊會以dockerfile來設定跟紀錄踩坑問題。
最近剛好分配一個需求,要批次更新一些基礎設定資料,而新系統基礎設定資料都統一由別的團隊維護在Google Sheet 上,一開始是要我寫 Laravel Seeder 塞資料表,後來發現也太多數據要批次更新了,數據要對到何時何年,乾脆來研究串 Google Sheet API 整批塞入在對總行數就好
在撰寫專案時,有時候可能需要做一些特定Exceptions 來拋出error message的情況,而在不同公司任職,大家配置的流程可能就有些不同,這邊將簡單練習如何配置自定義的Exception。
作為一個純後端,不會前端也是正常的事(誤),但該練習的技能線還是得每天練習一點,尤其我是一個前端小廢物,那既然要用Laravel 9 版本來做開發,那就得先試試看vite這個新的工具,基本上這邊就簡單介紹使用方式,另一篇在額外說明Laravel Mix 與 Vite 差別。
最近在開發某一個項目功能,這也是先前同事踩到的坑,這次換我在踩一次,順便記錄一下,主要發生情境是,在執行GET參數,定義一個isDownlineSearch 布林判斷時,前端傳入true or false,在執行以下程式碼判斷時會失敗,他無法正確判斷此值。
最近因為想要花些時間做完一個完整的SideProject,以前總是懂得怎麼使用,拼拼湊湊完成一個塞趴卷就交卷了,但都沒時間去真正理解這些原理的應用,而Laravel 框架本身支持的登入登出的工具,就有好多種。
為了做登入log紀錄,練習mongoDB來存放log資料,這邊就來紀錄 Laravel 配置mongoDB的實作,而原本我的side project是練習搭建docker開發環境,故這邊會以dockerfile來設定跟紀錄踩坑問題。
最近剛好分配一個需求,要批次更新一些基礎設定資料,而新系統基礎設定資料都統一由別的團隊維護在Google Sheet 上,一開始是要我寫 Laravel Seeder 塞資料表,後來發現也太多數據要批次更新了,數據要對到何時何年,乾脆來研究串 Google Sheet API 整批塞入在對總行數就好
在撰寫專案時,有時候可能需要做一些特定Exceptions 來拋出error message的情況,而在不同公司任職,大家配置的流程可能就有些不同,這邊將簡單練習如何配置自定義的Exception。
作為一個純後端,不會前端也是正常的事(誤),但該練習的技能線還是得每天練習一點,尤其我是一個前端小廢物,那既然要用Laravel 9 版本來做開發,那就得先試試看vite這個新的工具,基本上這邊就簡單介紹使用方式,另一篇在額外說明Laravel Mix 與 Vite 差別。
最近在開發某一個項目功能,這也是先前同事踩到的坑,這次換我在踩一次,順便記錄一下,主要發生情境是,在執行GET參數,定義一個isDownlineSearch 布林判斷時,前端傳入true or false,在執行以下程式碼判斷時會失敗,他無法正確判斷此值。
最近因為想要花些時間做完一個完整的SideProject,以前總是懂得怎麼使用,拼拼湊湊完成一個塞趴卷就交卷了,但都沒時間去真正理解這些原理的應用,而Laravel 框架本身支持的登入登出的工具,就有好多種。
你可能也想看
Google News 追蹤
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
介紹工作後幾個常見的小問題,包括寫 Log 的好習慣、本地印出錯誤或過程、PHPCS 工具、變數儲存於設定檔、避免魔術數字、程式碼靜態分析與動態分析。
Thumbnail
戴夫寇爾研究團隊發現PHP在Windows系統上存在遠端程式碼執行漏洞,影響多個PHP版本,包括XAMPP預設安裝環境。漏洞源於字元編碼轉換的問題,允許攻擊者在遠端伺服器上執行任意程式碼。建議使用者立即升級至最新PHP版本,或採取臨時緩解措施。
Thumbnail
在PHP的團隊開發中,PHP CS Fixer可以確保每個開發人員的Coding Style相同,是相當重要的工具。本篇文章將會詳細說明PHP CS Fixer在Linux環境下的安裝方式。
Thumbnail
Composer是PHP的軟體套件管理系統,它提供用於管理PHP軟體和依賴庫關係的標準格式。通常以專案為單位進行管理,會在專案根目錄底下(預設是vendor)安裝套件,除此外可以安裝全局套件。
Thumbnail
這篇文章將會提供在伺服器上安裝憑證的步驟,包括下載憑證,設定php.ini以及重新啟動Web Server等。
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
PHP(Hypertext Preprocessor)是一種流行的開源腳本語言,特別適用於網頁開發。它具有簡單的語法和易於理解的程式碼結構,並且支持多種數據庫系統和其他技術和框架集成。本文將介紹PHP的主要特點和廣泛應用性。
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
介紹工作後幾個常見的小問題,包括寫 Log 的好習慣、本地印出錯誤或過程、PHPCS 工具、變數儲存於設定檔、避免魔術數字、程式碼靜態分析與動態分析。
Thumbnail
戴夫寇爾研究團隊發現PHP在Windows系統上存在遠端程式碼執行漏洞,影響多個PHP版本,包括XAMPP預設安裝環境。漏洞源於字元編碼轉換的問題,允許攻擊者在遠端伺服器上執行任意程式碼。建議使用者立即升級至最新PHP版本,或採取臨時緩解措施。
Thumbnail
在PHP的團隊開發中,PHP CS Fixer可以確保每個開發人員的Coding Style相同,是相當重要的工具。本篇文章將會詳細說明PHP CS Fixer在Linux環境下的安裝方式。
Thumbnail
Composer是PHP的軟體套件管理系統,它提供用於管理PHP軟體和依賴庫關係的標準格式。通常以專案為單位進行管理,會在專案根目錄底下(預設是vendor)安裝套件,除此外可以安裝全局套件。
Thumbnail
這篇文章將會提供在伺服器上安裝憑證的步驟,包括下載憑證,設定php.ini以及重新啟動Web Server等。
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
PHP(Hypertext Preprocessor)是一種流行的開源腳本語言,特別適用於網頁開發。它具有簡單的語法和易於理解的程式碼結構,並且支持多種數據庫系統和其他技術和框架集成。本文將介紹PHP的主要特點和廣泛應用性。