git提交代碼前用php-cs-fixer強制格式化代碼

需求:爲統一團隊代碼風格,在大家提交代碼時同意格式化代碼,方便閱讀。

思路:

1、php-cs-fixer格式化代碼

2、git hooks來選定在什麼時候進行格式化

工具:

1、git

2、php-cs-fixer

安裝php-cs-fixer,packagit地址

A、先在項目根目錄下寫個腳本,調用腳本,則自動格式化當前修改了的php文件的代碼,
php-cs.sh 如下:

#!/bin/bash

modify_files=`git status | grep 'lib.*.php' | awk -F ':' '{print $2}'  | uniq`
for file in ${modify_files}
do
    result=`~/.composer/vendor/bin/php-cs-fixer fix ${file} | grep 'lib.*.php' `
    echo $result
done
通過git status查看有哪些文件做了修改,匹配出需要的文件,丟給php-cs-fixer進行格式化

格式化成功,則會輸出:1) /var/www/demo.php 文件名,

如果沒有需要格式化的代碼,則會輸出空


B、寫git的hooks腳本

位置在項目根目錄的.git/hooks/文件夾下面,我們選用pre-commit事件, vi pre-commit。

在commit之前進行判斷,有php文件進行了格式化,則不commit,給出錯誤提示;沒有php文件夾進行了格式化,則commit;

hooks腳本如下:

#!/bin/sh

commit=`sh /var/www/credit/php-cs.sh` #這個路徑需要根據本機進行配置,使用相對路徑好像不行
if [ -n "$commit" ]
then
    echo >&2 "代碼進行了格式化,請重新提交一次"
    exit 1
fi
exit 0

這樣,在每次提交代碼的時候,就能對php文件裏的代碼進行格式化,也可以參照php-cs-fixer文檔做更多定製化配置


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章