zoukankan      html  css  js  c++  java
  • 基于githooks利用PHP_CodeSniffer做PSR2代码风格规范检测

    描述:为了规范团队代码,在成员push代码前,做代码风格规范检测,不符合规范的禁止成员推送代码到服务端仓库.

    Git Hooks【钩子】

    就是那些在Git执行特定事件(如commit、push、receive等)后触发运行的脚本。

    按照Git Hooks脚本所在的位置可以分为三类:

    • 本地Hooks,触发事件如commit、merge等。
    • 服务端Hooks,触发事件如receive等。
    • web Hooks, 触发事件如代码合并到仓库后请求远端特定连接

    增加PSR-2检测的原委

    • 公司团队研发人员众多,每人风格不统一
    • 项目众多,调用链长 开发过程中往往遇到多项目并行开发,风格规范不统一造成代码阅读成本增高
    • 早年间用svn作为版本控制时在服务端增加过钩子做风格的检测,固照搬
    • 可以很好的养成一个符合规范的编码习惯

    配合Composer使用的原因

    • 1、git也是有服务端钩子的,但是目前没权限增加所以只能被迫增加本地钩子
    • 2、团队人员较多,Mac、Windows各有分布。不能保证每个人能一定把钩子挂上
    • 3、每个项目中都大量使用composer包管理工具,所以想到增加到compsoer事件上,更新包的时候自动把对应的钩子挂上

    检测原理

    • 每次git commit的时候是有hooks可以触发
    • 开发特定脚本 首先利用phpline检测提交文件的语法是否有错
    • 再次利用phpcs检测php的风格规范是否是否符合特定的规范
    • 符合规范 可以继续执行git push
    • 不符合规范,本次commit失败,需要根据错误提示更改 然后再次 git add && git commit

    使用文档

    保证本地composer 能正常更新

    • 能正常使用跳过下一节
    • 不能正常使用继续

    • 项目中增加风格检测包 composer require --dev giles/php-csc
    • 在根包composer文件中增加触发事件
    "post-autoload-dump": [
        "Giles\\MountHooks\\PHPCodeChecker::hookInstall"
    ],
    "pre-package-uninstall": [
        "Giles\\MountHooks\\PHPCodeChecker::hookUnstall"
    ]
    • 再次执行 composer update 完成git hooks 挂载

    需要注意

    Windows版本的PHPStorm 默认回车符rn 这是不符合PSR2 规范的 需要设置为n

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

    转自:https://www.xiaocainiao.net/2019/08/28/31.html

  • 相关阅读:
    mac的端口被占用
    php中的运算符、控制结构
    文档模式影响浏览器的渲染
    ubuntu 命令 tips 来自于 ubuntu中文论坛
    用好 Emacs 中的 register
    [转载] Rsync命令参数详解
    使用 python 遍历目录下的文件
    灵活的左移位( << )操作
    使用 iperf 测试两台机器间的最大带宽
    Emacs server 新启动方式 (仅在emacs daemon未启动时才启动daemon)
  • 原文地址:https://www.cnblogs.com/yangjinqiang/p/15720268.html
Copyright © 2011-2022 走看看