基於git-hooks利用PHP_CodeSniffer作PSR-2代碼風格規範檢測

描述:爲了規範團隊代碼,在成員push代碼前,作代碼風格規範檢測,不符合規範的禁止成員推送代碼到服務端倉庫.php

Git Hooks【鉤子】

就是那些在Git執行特定事件(如commit、push、receive等)後觸發運行的腳本。git

按照Git Hooks腳本所在的位置能夠分爲三類:web

  • 本地Hooks,觸發事件如commit、merge等。
  • 服務端Hooks,觸發事件如receive等。
  • web Hooks, 觸發事件如代碼合併到倉庫後請求遠端特定鏈接

增長PSR-2檢測的原委

  • 公司團隊研發人員衆多,每人風格不統一
  • 項目衆多,調用鏈長 開發過程當中每每遇到多項目並行開發,風格規範不統一形成代碼閱讀成本增高
  • 早年間用svn做爲版本控制時在服務端增長過鉤子作風格的檢測,固照搬
  • 能夠很好的養成一個符合規範的編碼習慣

配合Composer使用的緣由

  • 一、git也是有服務端鉤子的,可是目前沒權限增長因此只能被迫增長本地鉤子
  • 二、團隊人員較多,Mac、Windows各有分佈。不能保證每一個人能必定把鉤子掛上
  • 三、每一個項目中都大量使用composer包管理工具,因此想到增長到compsoer事件上,更新包的時候自動把對應的鉤子掛上

檢測原理

  • 每次git commit的時候是有hooks能夠觸發
  • 開發特定腳本 首先利用phpline檢測提交文件的語法是否有錯
  • 再次利用phpcs檢測php的風格規範是不是否符合特定的規範
  • 符合規範 能夠繼續執行git push
  • 不符合規範,本次commit失敗,須要根據錯誤提示更改 而後再次 git add && git commit

使用文檔

保證本地composer 能正常更新

  • 能正常使用跳過下一節json

  • 不能正常使用繼續windows

  • 項目中增長風格檢測包 composer require --dev webergiles/php-csc "0.*"composer

  • 在根包composer文件中增長觸發事件svn

"post-autoload-dump": [
    "WeberGiles\\MountHooks\\PHPCodeChecker::hookInstall"
],
"pre-package-uninstall": [
    "WeberGiles\\MountHooks\\PHPCodeChecker::hookUnstall"
]
複製代碼
  • 再次執行 composer update 完成git hooks 掛載

須要注意

Windows版本的PHPStorm 默認回車符\r\n 這是不符合PSR2 規範的 須要設置爲\n工具

File->Line Separators->LF - Unix and macOs (\n)post

相關文章
相關標籤/搜索