使用GrumPHP来纠正代码“毛病”

栏目: PHP · 发布时间: 5年前

内容简介:我一生的文章都会放在这里,我的博客,我希望每一行代码,每一段文字都能帮助你。嗨,我是CrazyCodes,小时候做错事,长辈有没有训斥过你呢?今天让我们看看PHP的监护者,愤怒的老头- - grumphp

使用GrumPHP来纠正代码“毛病”

前言

我一生的文章都会放在这里,我的博客,我希望每一行代码,每一段文字都能帮助你。 https://github.com/CrazyCodes...

嗨,我是CrazyCodes,小时候做错事,长辈有没有训斥过你呢?今天让我们看看 PHP 的监护者,愤怒的老头- - grumphp

GrumPHP

GrumPHP 是通过挂在git hook上的一款PHP代码检测工具,他可以通过编码人员提交git时进行检查,检查通过则提交成功,检查失败则终止提交。

安装

通过composer直接安装即可,不推荐其他安装方式

composer require --dev phpro/grumphp

这类 工具 一定要放在dev内,在生产环境使用毫无意义,所以带参 --dev。

配置

安装结束后会自动在项目根目录建立grumphp.yml,官方给出的demo如下

# grumphp.yml
parameters:
    bin_dir: "./vendor/bin"
    git_dir: "."
    hooks_dir: ~
    hooks_preset: local
    git_hook_variables:
         VAGRANT_HOST_DIR: .
         VAGRANT_PROJECT_DIR: /var/www
         EXEC_GRUMPHP_COMMAND: exec
    stop_on_failure: false
    ignore_unstaged_changes: false
    hide_circumvention_tip: false
    process_async_limit: 10
    process_async_wait: 1000
    process_timeout: 60
    ascii:
        failed: grumphp-grumpy.txt
        succeeded: grumphp-happy.txt
    tasks:
        ant: ~
        atoum: ~
        behat: ~
        brunch: ~
        clover_coverage: ~
        codeception: ~
        composer: ~
        composer_normalize: ~
        composer_require_checker: ~
        composer_script: ~
        deptrac: ~
        doctrine_orm: ~
        file_size: ~
        gherkin: ~
        git_blacklist: ~
        git_branch_name: ~
        git_commit_message: ~
        grunt: ~
        gulp: ~
        infection: ~
        jsonlint: ~
        kahlan: ~
        make: ~
        npm_script: ~
        paratest: ~
        phan: ~        
        phing: ~
        php7cc: ~
        phpcpd: ~
        phpcs: ~
        phpcsfixer: ~
        phpcsfixer2: ~
        phplint: ~
        phpmd: ~
        phpmnd: ~
        phpparser: ~
        phpspec: ~
        phpstan: ~
        phpunit: ~
        phpunitbridge: ~
        phpversion: ~
        progpilot: ~
        psalm: ~
        robo: ~
        securitychecker: ~
        shell: ~
        twigcs: ~
        xmllint: ~
        yamllint: ~
    testsuites: []
    extensions: []

参数说明

参数名 默认值 注释
bin_dir ./vendor/bin 方便找到phpcs这类检测工具的外部命令,一般不需要修改
git_dir . 默认git目录,正常都在根目录的吧
hooks_dir null 设置钩子文件夹,默认会直接找 resources/hooks
tasks 用于加载代码检测的库

实战

是不是太多了,忽略上面,咱一步一步看。下面是安装完成后自动生成的配置文件

parameters:
    git_dir: .
    bin_dir: vendor/bin
    tasks: {  }

准备

现在目录是酱紫的

使用GrumPHP来纠正代码“毛病”

  1. 首先在github建立一个库,用于测试。 https://github.com/CrazyCodes...
  2. 默认的配置不会检测任何代码。我们为 tasks 加入一个新成员 https://github.com/phpro/grum...
  3. 重新设置配置文件
parameters:
    git_dir: .
    bin_dir: vendor/bin
    tasks: {
       phpcs : ~
    }

新建一个文件easy.php,代码如下,多一个分号,老头是一定不会放过你的。

echo '召唤愤怒的老头';;

老头是酱紫说的,额,其实他是一个红色的

GrumPHP detected a pre-commit command.
GrumPHP is sniffing your code!
Running task 1/1: Phpcs... ✘
             ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
           ▄▄▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
         ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
        ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
       ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
  ▄███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
 █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
 ▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
   ▀█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
     ▀▀▓▓▓▓▓▓▓▓▓▓▓▓█▀▀▀▀▀▀▀▀▀▀▀▀▀▀████████████▄
      ▄███████                       ██████████
     ███████▀  ▀▀▀▀▀▄      ▄▀▀▀▀▀     █████ ▀
      ▐████      ▐██        ▐██        ████▌
      ████▌                            ███
       ▌██▌           ▄▄ ▄▄           ▐███
        ███       ▄▄▄▄▄▄▄▄▄▄▄▄       ▐███
         ██▄ ▐███████████████████████████
        █▀███████████▀     ▀▀███████████
          ██████████▄███████▄███████████
         ▐█████████████████████████████
          █████████████████████████████
           ██ █████████████████████▐██▀
            ▀ ▐███████████████████▌ ▐▀
                ████▀████████▀▐███
                 ▀█▌  ▐█████  ██▌
                        ██▀   ▐▀

       ██████████████████████████████████
       █░░░░░░▀█▀░░░░░░▀█░░░░░░▀█▀░░░░░▀█
       █░░▐█▌░░█░░░██░░░█░░██░░░█░░░██░░█
       █░░▐█▌░░█░░░██░░░█░░██░░░█░░░██░░█
       █░░▐█▌░░█░░░██░░░█░░░░░░▄█░░▄▄▄▄▄█
       █░░▐█▌░░█░░░██░░░█░░░░████░░░░░░░█
       █░░░█░░░█▄░░░░░░▄█░░░░████▄░░░░░▄█
       ██████████████████████████████████

FILE: /Users/crazy/http/app/yield_test/easy.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
 2 | ERROR | Missing file doc comment
----------------------------------------------------------------------

Time: 37ms; Memory: 4MB

不仅仅有愤怒的老头,GrumPHP还提示了一些其他内容。

  • FILE 检测文件路径
  • FOUND 1 ERROR AFFECTING 1 LINE 有几个错误,在哪一行
  • 2 | ERROR | Missing file doc comment 错误的问题是什么

这次检测是说我没写注释。是不是很有意思?GrumPHP不仅仅就这点能力哦,想深入请自行挖掘。

其他

有人问,你为什么要这么折磨自己呢?其实像类型GrumPHP代码质量工具,不是仅仅自己拿来玩的,在开发人员略多的技术团队,可以通过使用它来达到代码规范一致,如果每个人代码都不一样,后果不堪设想。

使用GrumPHP来纠正代码“毛病”

致谢

感谢你看到这里,希望本篇文章可以帮到你。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First JavaScript Programming

Head First JavaScript Programming

Eric T. Freeman、Elisabeth Robson / O'Reilly Media / 2014-4-10 / USD 49.99

This brain-friendly guide teaches you everything from JavaScript language fundamentals to advanced topics, including objects, functions, and the browser’s document object model. You won’t just be read......一起来看看 《Head First JavaScript Programming》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具