基于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

相关文章
相关标签/搜索