GrumPHP 命令详解:从安装到自定义任务执行
grumphp A PHP code-quality tool 项目地址: https://gitcode.com/gh_mirrors/gr/grumphp
什么是 GrumPHP
GrumPHP 是一个 PHP 代码质量检查工具,它通过 Git 钩子(hooks)在代码提交前自动运行预设的检查任务。本文将详细介绍 GrumPHP 提供的各种命令及其使用场景,帮助开发者更好地利用这个工具提升代码质量。
安装与基础配置
GrumPHP 安装后会提供一个便捷的配置工具,通过以下命令可以生成基础配置文件:
php ./vendor/bin/grumphp configure
这个命令会在安装过程中自动执行,它会尝试根据项目情况生成最优的默认配置,无需用户交互。
Git 钩子管理
GrumPHP 的核心功能依赖于 Git 钩子,提供两个命令来启用或禁用:
php ./vendor/bin/grumphp git:init # 启用 GrumPHP
php ./vendor/bin/grumphp git:deinit # 禁用 GrumPHP
启用命令会在安装时由 Composer 插件自动触发,它会在项目的 .git/hooks
目录下创建必要的钩子脚本。
Git 钩子相关命令
GrumPHP 主要通过两个 Git 钩子命令来执行代码检查:
php ./vendor/bin/grumphp git:pre-commit # 提交前检查
php ./vendor/bin/grumphp git:commit-msg # 提交信息检查
这两个命令都支持通过标准输入(STDIN)接收 Git 的变更信息,这使得它们能够处理 git commit -a
这类命令触发的变更。如果没有提供标准输入,命令会自动获取当前暂存区的变更。
标准输入使用示例
# 检查所有变更
git diff | php ./vendor/bin/grumphp git:pre-commit
# 检查暂存区变更
git diff --staged | php ./vendor/bin/grumphp git:pre-commit
# 检查特定目录下的文件
git ls-files src | php ./vendor/bin/grumphp git:pre-commit
注意:使用标准输入时,命令将无法进行交互式提问。
手动执行检查
除了通过 Git 钩子自动触发外,你也可以手动运行全面检查:
php ./vendor/bin/grumphp run
这个命令会检查整个代码库,非常适合在持续集成(CI)环境中使用。
按测试套件执行
如果配置了测试套件,可以指定运行特定套件:
php ./vendor/bin/grumphp run --testsuite=mytestsuite
选择性执行任务
GrumPHP 允许你只运行特定的检查任务:
php ./vendor/bin/grumphp run --tasks=phpcs,phpmd
任务名称需要与 grumphp.yml
配置文件中 tasks
部分的键名完全匹配,多个任务用逗号分隔。
检查指定文件
run 命令同样支持通过标准输入指定要检查的文件:
# 检查所有变更文件
git diff | php ./vendor/bin/grumphp run
# 检查暂存区文件
git diff --staged | php ./vendor/bin/grumphp run
# 检查特定目录
git ls-files src | php ./vendor/bin/grumphp run
再次提醒:使用标准输入时无法进行交互式操作。
最佳实践建议
- 开发阶段:保持 GrumPHP 启用状态,让每次提交都自动检查代码质量
- CI 环境:使用
run
命令进行全面检查 - 大型项目:合理使用测试套件和特定任务执行,提高检查效率
- 临时检查:通过标准输入灵活指定要检查的文件范围
通过合理运用这些命令,你可以将代码质量检查无缝集成到开发流程中,在问题进入代码库前就将其拦截。
grumphp A PHP code-quality tool 项目地址: https://gitcode.com/gh_mirrors/gr/grumphp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考