為 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
留言分享你的想法!
avatar-img
DDDDD的沙龍
15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
DDDDD的沙龍的其他內容
2023/12/13
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。
Thumbnail
2023/12/13
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。
Thumbnail
2023/12/09
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
2023/12/09
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
2023/12/05
這邊主要是遇到功能需要處理時區,雖然主管給的筆記已經寫得很完美了,但覺得還是得理解吸收後並記錄自己的筆記後,好像才能有效吸收到腦袋裡
Thumbnail
2023/12/05
這邊主要是遇到功能需要處理時區,雖然主管給的筆記已經寫得很完美了,但覺得還是得理解吸收後並記錄自己的筆記後,好像才能有效吸收到腦袋裡
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
在PHP的團隊開發中,PHP CS Fixer可以確保每個開發人員的Coding Style相同,是相當重要的工具。本篇文章將會詳細說明PHP CS Fixer在Linux環境下的安裝方式。
Thumbnail
在PHP的團隊開發中,PHP CS Fixer可以確保每個開發人員的Coding Style相同,是相當重要的工具。本篇文章將會詳細說明PHP CS Fixer在Linux環境下的安裝方式。
Thumbnail
歡迎來到 【👌 程式碼質量案例】 系列, 這邊我們將分享實際開發過程中會遇到的程式碼難以維護的案例及解決方法, 期望透過這些技巧讓我們的產品更加的穩健也更容易於維護。 P.S 本篇會以Python程式語言進行示範, 其他語言的處理方式也雷同, 包括Javascript、Golang…等。 📖
Thumbnail
歡迎來到 【👌 程式碼質量案例】 系列, 這邊我們將分享實際開發過程中會遇到的程式碼難以維護的案例及解決方法, 期望透過這些技巧讓我們的產品更加的穩健也更容易於維護。 P.S 本篇會以Python程式語言進行示範, 其他語言的處理方式也雷同, 包括Javascript、Golang…等。 📖
Thumbnail
歡迎來到 【🔒程式碼質量案例 】 系列, 這邊我們將分享實際開發過程中會遇到的程式碼難以維護的案例及解決方法, 期望透過這些技巧讓我們的產品更加的穩健也更容易於維護。 P.S 本篇會以Python程式語言進行示範, 其他語言的處理方式也雷同, 包括Javascript、Golang…等。
Thumbnail
歡迎來到 【🔒程式碼質量案例 】 系列, 這邊我們將分享實際開發過程中會遇到的程式碼難以維護的案例及解決方法, 期望透過這些技巧讓我們的產品更加的穩健也更容易於維護。 P.S 本篇會以Python程式語言進行示範, 其他語言的處理方式也雷同, 包括Javascript、Golang…等。
Thumbnail
Laravel是一個以MVC(參考:[設計模式]MVC)為架構的PHP Web框架。Laravel支援使用者身份驗證和授權,提供模組化套件系統。Laravel使用Blade模板系統將PHP程式碼與HTML網頁分離。 安裝環境 下載安裝composer https://getcomposer.o
Thumbnail
Laravel是一個以MVC(參考:[設計模式]MVC)為架構的PHP Web框架。Laravel支援使用者身份驗證和授權,提供模組化套件系統。Laravel使用Blade模板系統將PHP程式碼與HTML網頁分離。 安裝環境 下載安裝composer https://getcomposer.o
Thumbnail
在專案開發的時候,專案架構搭建時團隊就會設定 php code style 檢查,避免整個開發團隊大家走出自己的風格,尤其是兩格空白還是四格空白,總是會有不同意見,這時候定義出團隊code style,並透過配置Github Action CI(Continuous Integration)
Thumbnail
在專案開發的時候,專案架構搭建時團隊就會設定 php code style 檢查,避免整個開發團隊大家走出自己的風格,尤其是兩格空白還是四格空白,總是會有不同意見,這時候定義出團隊code style,並透過配置Github Action CI(Continuous Integration)
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News