PHP CodeSniffer整合Subversion

設定好PHP CodeSniffer後,接者就要和版本控制整合。當開發團隊的成員在commit程式碼時,即時讓PHP Sniffer做檢查,確定程式有依照規範開發。

以整合Subversion為例。官方網站Using the Subversion pre-commit Hook這篇文章就寫得非常清楚,照者文件作即可。基本上,就是配合Subversion的pre-commit hook。在commit前呼叫PHP CodeSniffer做檢查,如果有不符合規範,就不讓此次的commit完成。

如果不熟悉Subversion的pre-commit hook如何使用,請參閱SVN官方的說明Repository Hooks pre-commit

在實務上,只有一個設定需要稍微注意。適當的調整參數 --report-width ,以配合自己所用的開發工具(IDE),取得最佳的視覺呈現。以我測試的例子,我採用的標準為CodeIgniter-for-PHP_CodeSniffer。所以我在Subversion的 pre-commit hook 中,做下面的設定…

  1. /path/phpcs  --report-width=120  --tab-width=4 --standard=/CodeSniffer/Standards/CodeIgniter/ruleset.xml  "$REPOS" -t "$TXN" >&2 || exit 1  

其實,這樣的作法也可以套用在commit時,檢查使用者是否有寫此次為何要commit的說明(這點,其實很重要。往後才能追蹤版本為何變化)。事實上,Subversion內附的post-commit.tmpl內,就已經內含這樣的判斷了。

不過,上述所提僅是技術方面的設定。實際使用上,尚須相關的配套措施配合 :)

參考資料

留言