GrumPHP – PHP 项目的 Git Hook 守护者,让代码质量检查自动化

代码质量是软件开发的核心关注点之一,但人工检查费时费力,且容易遗漏。PHP 开发者通常会使用 PHPStan、PHP-CS-Fixer、Composer Script 等工具进行代码检查,但如果每次都要手动运行,不仅效率低,还容易遗忘。GrumPHP 就是来解决这个问题的——它在 Git 层面自动触发代码检查,确保每次提交都符合质量标准。

项目简介

GrumPHP(Grum + PHP)是一个 PHP 代码质量工具,它的核心原理是在 Git 提交前(pre-commit hook)自动运行一系列代码检查工具。如果检查不通过,提交将被阻止,直到问题被修复。这样就能确保代码仓库中的每一行代码都经过基本的质量验证。

项目地址:https://github.com/phpro/grumphp

主要特色

  • Git Hook 自动触发:无需人工干预,Git 提交时自动执行检查。
  • 高度可配置:支持几十种内置工具,也可自定义检查命令。
  • Composer 集成:作为 Composer 插件安装,与 PHP 项目无缝结合。
  • 并行执行:支持多任务并行检测,加快检查速度。
  • 增量检查:只检查本次提交改动的文件,而非整个项目。
  • 详细输出:检查失败时提供清晰的问题描述和行号。

安装步骤

通过 Composer 安装

composer require --dev phpro/grumphp
composer grumphp install

初始化配置

# 在项目根目录创建 grumphp.yml
touch grumphp.yml

忽略特定文件(可选)

# 创建 .gitignore 规则,GrumPHP 会自动识别
echo "vendor/" >> .gitignore

配置示例

基础配置(grumphp.yml)

grumphp:
  git_dir: .
  bin_dir: vendor/bin
  tasks:
    phpunit:
      config_file: phpunit.xml
    phpcs:
      standard: PSR12
    phpstan:
      level: 5
      configuration: phpstan.neon

配置详解

  • phpcs:PHP CodeSniffer,检测代码风格是否符合 PSR-12 标准
  • phpstan:PHP 静态分析工具,无需运行代码即可发现潜在 Bug
  • phpunit:单元测试检查,确保测试通过才能提交
  • composer_require_checker:检测 composer.json 中是否有未使用的依赖
  • dead_code_detection:使用 PHPStorm/MPS 检测死代码

高级配置

grumphp:
  tasks:
    phpcs:
      standard: [PSR12, Symfony]
      show_warnings: true
      triggered_by: [php, phtml]
    phpstan:
      memory_limit: 512M
      level: 6
      ignore_patterns:
        - /^tests\/

使用方法

安装配置完成后,GrumPHP 会自动在 Git 仓库中安装 pre-commit hook。日常工作流程完全不变:

# 正常提交代码
git add .
git commit -m "fix: resolve login bug"
# 如果 GrumPHP 检测到问题,会在这里阻止提交并显示详细错误信息

# 强制跳过检查(不推荐,仅紧急情况使用)
git commit -m "fix: urgent" --no-verify

适用场景

  • 团队 PHP 项目:强制统一代码风格,减少 Code Review 摩擦
  • 开源 PHP 库:确保贡献的代码符合项目规范
  • CI/CD 流水线补充:在本地提前发现问题,减少 CI 资源消耗
  • 学习项目:帮助 PHP 开发者养成良好的编码习惯

开源协议

GrumPHP 采用 MIT 协议开源,完全免费使用。

总结

GrumPHP 填补了 PHP 开发流程中一个容易被忽视的空白——在提交环节强制执行代码质量检查。它的增量检查机制让检查速度很快,不会明显拖慢开发节奏。对于有代码质量追求的 PHP 团队来说,GrumPHP 是一个零成本、高回报的投资。


服务支持:如有兴趣不会搭建,可以联系微信:WRYD6166,开源项目搭建10-50元。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容