代码质量是软件开发的核心关注点之一,但人工检查费时费力,且容易遗漏。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








暂无评论内容