為 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 有寫單元測試的時候還可以再增加測試的指令~~大家可以試著配置看看~~







15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
留言0
查看全部
發表第一個留言支持創作者!
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
即便功勞再大、能力再強,擁有無與倫比的至高力量,在發現大局後,所看見的人人平等,終將讓一切屬於神聖。 怎麼說?
Thumbnail
本書解釋了睡眠的機制及咖啡因、時差、退黑激素如何影響睡眠,也說明睡眠對我們身體健康及工作效率的影響,還有為什麼會做夢?做夢能帶給我們什麼樣的好處,另外也幫我們解惑睡前小酌能不能幫助睡眠,吃安眠藥能否達到真正的睡眠,並且在最後提供健康睡眠的12項守則供讀者改善睡眠品質。
Thumbnail
期許自我有一本充滿夢想的生活詩刊,並連結懷念的友情以及被天氣變化索連的情緒。
Thumbnail
共情不同於同情。同情更多是站在自己的角度,對他人的困境表示關心或惋惜,但可能缺乏深入的理解。而共情則需要我們走進對方的內心世界,真正理解他們的感受。
Thumbnail
我看過在投資市場操作成功或是賺大錢的人,而且可以存活很久的人,有一個特質,那就是對市場保持敬畏之心。因為它們知道,成功有很大一部分是氣運。因為每個人原生家庭的影響,時代的背景,會造就無法複製的成功特質。 資產配置的方式,無法讓你以每年數倍或是十年百倍的方式快速致富,資產配置追求的只是市場的自然成長,
「為什麼要資產分散?單一投資一檔標的,不是賺更多?」-多重配置,可以避免不必要的災難- 在我PO我的投資組合上專欄,常常會有網友留言,問道:是不是買太多標的物了?並且表示他們幾乎集中一檔個股或一檔ETF。 首先我並不覺得投資多重配置或者單一集中投資,哪一方面是完全正確的~這一切都是看個人,怎
Thumbnail
<p>根據研究調查,聽到奇異聲響或找不到源頭的話語聲,又或是接受到神靈的指示,約14%的台灣人自承有過這類經驗。這種體驗可稱為「異聽」,主要的形式是「話語」,聽到「腳步聲」或「彈珠聲」也是很常有的體驗。</p>
Thumbnail
<p>為什麼我們受過科學教育之後,仍會在意超自然現象,並且讓相關節目收視維持一定的水準?這是人類文明的墮落,還是通往人生終極目標的唯一途徑?我認為這些問題不見得只能從科學與宗教研究的角度來回應。</p>
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
即便功勞再大、能力再強,擁有無與倫比的至高力量,在發現大局後,所看見的人人平等,終將讓一切屬於神聖。 怎麼說?
Thumbnail
本書解釋了睡眠的機制及咖啡因、時差、退黑激素如何影響睡眠,也說明睡眠對我們身體健康及工作效率的影響,還有為什麼會做夢?做夢能帶給我們什麼樣的好處,另外也幫我們解惑睡前小酌能不能幫助睡眠,吃安眠藥能否達到真正的睡眠,並且在最後提供健康睡眠的12項守則供讀者改善睡眠品質。
Thumbnail
期許自我有一本充滿夢想的生活詩刊,並連結懷念的友情以及被天氣變化索連的情緒。
Thumbnail
共情不同於同情。同情更多是站在自己的角度,對他人的困境表示關心或惋惜,但可能缺乏深入的理解。而共情則需要我們走進對方的內心世界,真正理解他們的感受。
Thumbnail
我看過在投資市場操作成功或是賺大錢的人,而且可以存活很久的人,有一個特質,那就是對市場保持敬畏之心。因為它們知道,成功有很大一部分是氣運。因為每個人原生家庭的影響,時代的背景,會造就無法複製的成功特質。 資產配置的方式,無法讓你以每年數倍或是十年百倍的方式快速致富,資產配置追求的只是市場的自然成長,
「為什麼要資產分散?單一投資一檔標的,不是賺更多?」-多重配置,可以避免不必要的災難- 在我PO我的投資組合上專欄,常常會有網友留言,問道:是不是買太多標的物了?並且表示他們幾乎集中一檔個股或一檔ETF。 首先我並不覺得投資多重配置或者單一集中投資,哪一方面是完全正確的~這一切都是看個人,怎
Thumbnail
<p>根據研究調查,聽到奇異聲響或找不到源頭的話語聲,又或是接受到神靈的指示,約14%的台灣人自承有過這類經驗。這種體驗可稱為「異聽」,主要的形式是「話語」,聽到「腳步聲」或「彈珠聲」也是很常有的體驗。</p>
Thumbnail
<p>為什麼我們受過科學教育之後,仍會在意超自然現象,並且讓相關節目收視維持一定的水準?這是人類文明的墮落,還是通往人生終極目標的唯一途徑?我認為這些問題不見得只能從科學與宗教研究的角度來回應。</p>