使用 Git pre-commit 自動修正 PHP 的 Coding Style
在 VS Code 下,除了[使用 extension - junstyle.php-cs-fixer
進行 PHP 的 Coding Style 修正] 1 之外,也可以使用 [Git hooks] 2 的功能,在 commit 之前執行指定的 script,稱為 [pre-commit] 3,搭配 [php-cs-fixer] 4 就能自動化的對有差異的 PHP 檔案進行 Coding Style 的修正。
環境
- macOS 10.13.6 High Sierra
- PHP 7.3.5
開始設定 pre-commit
Step 1. 檢查是否有 hooks 目錄
檢查 workspace 下的 .git
目錄是否有 hooks
子目錄,如下,
1 | $ ll ./.git |
如果有 hooks
,則跳過 Step 2。
Step 2. 建立 hooks 目錄
同樣地在 workspace 目錄下,執行
1 | $ git init |
此時會重新建立 git 及其子目錄 hooks 與該目錄內的 sample 檔案。
Step 3. 新增 pre-commit 檔案內容
在 workspace 下執行 vim ./.git/hooks/pre-commit
,新增如下的檔案內容
1 |
|
請留意 echo "$files" | xargs ./vendor/bin/php-cs-fixer fix --diff --config .php_cs
這段,
./vendor/bin/php-cs-fixer
: 是使用composer require --dev friendsofphp/php-cs-fixer
安裝在 project 內 vendor 目錄中的 php-cs-fixer 進行 Coding Style 修正。Global 安裝方式請參考 [FriendsOfPHP/PHP-CS-Fixer] 6。.php_cs
: 使用 [在 vs code 使用 php cs fixer 進行 coding style 的格式修正] 1 一文內建立的檔案,或參考 [FriendsOfPHP/PHP-CS-Fixer] 6 內的.php_cs.dist
再依據需求修改。
Step 4. 修改 pre-commit 的權限
1 | $ chmod +x .git/hooks/pre-commit |
必須修改 pre-commit
的權限,這樣才能在 commit 前正確執行寫 php-cs-fixer。
完成以上設定後,每次在 commit 前,只要有產生差異的 PHP 檔案,就會自動進行 Coding Style 修正。
參考資料 References
- [Automating Code Style Fixes with Git and PHP Coding Standards Fixer] 5