资讯专栏INFORMATION COLUMN

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

jubincn / 462人阅读

摘要:默认的配置不会检测任何代码。参数列表质量检测包其他有人问,你为什么要这么折磨自己呢其实像类型代码质量工具,不是仅仅自己拿来玩的,在开发人员略多的技术团队,可以通过使用它来达到代码规范一致,如果每个人代码都不一样,后果不堪设想。

前言
我一生的文章都会放在这里,我的博客,我希望每一行代码,每一段文字都能帮助你。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: {  }
准备

现在目录是酱紫的

首先在github建立一个库,用于测试。https://github.com/CrazyCodes...

默认的配置不会检测任何代码。我们为 tasks 加入一个新成员 https://github.com/phpro/grum...

重新设置配置文件

骚操作
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不仅仅就这点能力哦,想深入请自行挖掘。

参数列表 https://github.com/phpro/grum...

质量检测包 https://github.com/phpro/grum...

其他

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

致谢

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31615.html

相关文章

  • 再谈express与koa的对比

    摘要:以前其实写过一篇和的对比但是后来发现里面有不少谬误所以一直惦记着纠正一下之前的错误尤其关于中间件部分的对比这里的就拿更加简单的代替的执行流程通常我们都说的中间件模型是线性的也就是一个一个往下执行的如下图这么说当然是没错的但是当我们执行下面代 以前其实写过一篇express和koa的对比, 但是后来发现里面有不少谬误. 所以一直惦记着纠正一下之前的错误, 尤其关于中间件部分的对比. 这里...

    phodal 评论0 收藏0
  • 记自己一次vue基础实战:配置篇

    摘要:前言记录自己从基础学习实战,初入发表文章,望各位大佬口下留情不对之处还请大佬指点一下。在加载完后,你自己默认的浏览器自动打开配置界面新建项目。 1. 前言 记录自己从基础学习vue实战,初入发表文章,望各位大佬口下留情!不对之处还请大佬指点一下。 2. 新建,配置项目 1. 新建Vue-cli3.0脚手架的项目 在这里普及一下,什么是Vue-cli? Vue是一套用于构建用户界面的渐...

    NoraXie 评论0 收藏0
  • 记自己一次vue基础实战:配置篇

    摘要:前言记录自己从基础学习实战,初入发表文章,望各位大佬口下留情不对之处还请大佬指点一下。在加载完后,你自己默认的浏览器自动打开配置界面新建项目。 1. 前言 记录自己从基础学习vue实战,初入发表文章,望各位大佬口下留情!不对之处还请大佬指点一下。 2. 新建,配置项目 1. 新建Vue-cli3.0脚手架的项目 在这里普及一下,什么是Vue-cli? Vue是一套用于构建用户界面的渐...

    SmallBoyO 评论0 收藏0
  • 写css的毛病

    摘要:最近公司要做手机端页面,之前没做过,也只是给另一边的美工指点一下,不过发现现在写有一个毛病那就是类型下面的代码为什么这样写,原因是在写或看别人的代码时,会发现有很多代码都重复于是遵循个人感觉找页面中的共同点来封装,如大小,字体等做到对 最近公司要做手机端页面 ,之前没做过,也只是给另一边的美工指点一下, 不过发现现在写css有一个毛病 那就是类型下面的代码 .text-blue{...

    wenyiweb 评论0 收藏0
  • java 英文单词拼写纠正框架(Word Checker)

    Word Checker word checker 本项目用于单词拼写检查。 Github 地址 项目简介 本项目用于单词拼写检查。 特性说明 支持 i18n 错误提示支持 i18N 支持英文的单词纠错 可以迅速判断当前单词是否拼写错误 可以返回最佳匹配结果 可以返回纠正匹配列表,支持指定返回列表的大小 后续将会添加的新功能 英文单词支持自行定义 中文单词的拼写是否正确功能添加 快速开始 ...

    amc 评论0 收藏0

发表评论

0条评论

jubincn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<