bitban / php-code-quality-tools
Bitban项目中使用的PHP代码质量工具。
Requires
- composer/composer: ^1.1
- squizlabs/php_codesniffer: ^2.6
- symfony/process: ^2.8||^3.1|^4.1
Requires (Dev)
- mikey179/vfsstream: ^1.6
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^7.3
README
这些工具可以在将代码提交到代码仓库之前检测和修复一些常见错误。
查看命令参考部分获取更详细的信息。
安装
如果您还没有这样做,请将bin目录添加到composer.json
composer config bin-dir bin/
它将在您的composer.json文件中添加如下内容
"config": { "bin-dir": "bin/" }
为了更好的体验,我们还建议配置post-install和post-update脚本
"scripts": { "post-install-cmd": [ "Bitban\\PhpCodeQualityTools\\Composer\\ScriptHandler::checkHooks" ], "post-update-cmd": [ "Bitban\\PhpCodeQualityTools\\Composer\\ScriptHandler::checkHooks" ] }
然后,添加新的开发依赖项
composer require --dev "bitban/php-code-quality-tools:dev-master"
之后,从项目根目录可使用新的命令
bin/php-cqtools
命令参考
检查Git钩子
检查当前项目是否安装了Git钩子。如果没有,它会提供安装提示,但不会自动执行任何操作。
bin/php-cqtools hooks:check
安装Git钩子
将Git钩子安装到.git/hooks/。如果目标文件已存在,它们将被备份。
bin/php-cqtools hooks:install
管理的Git钩子有
- pre-commit
- post-checkout
- post-merge
pre-commit钩子
它调用code:validate命令。
bin/php-cqtools code:validate --only-committed-files
post-checkout钩子
它会检查composer.lock是否已更改。如果是,将启动composer install
命令。
bin/php-cqtools hooks:post-checkout <prevCommit> <postCommit> [<projectPath>]
projectPath
参数设置要处理路径。默认值是当前项目基本路径。
post-merge钩子
它具有与post-checkout钩子相同的行为。
bin/php-cqtools hooks:post-merge [<projectPath>]
卸载Git钩子
从目标路径删除Git钩子。如果备份文件存在,它们将被恢复。
bin/php-cqtools hooks:uninstall
修复代码风格
根据定义的代码风格修复文件的代码风格。
它可能修复所有项目文件或仅修复要提交的文件。第二个选项非常方便用于修复pre-commit钩子中检测到的错误。
bin/php-cqtools code:fix-codestyle [--dry-run] [--excluded-paths=EXCLUDED_PATHS] [--only-committed-files] [--custom-ruleset=CUSTOM_RULESET] [<projectPath>]
projectPath
参数设置要处理路径。默认值是当前项目基本路径。
--dry-run
选项显示差异而不对文件应用任何更改。 --excluded-paths
选项设置一些路径不进行处理。 --only-committed-files
选项仅处理计划提交的文件。 --custom-ruleset
选项设置用于替代默认规则的phpcs自定义规则集
验证代码
它执行几个任务
- PHP文件
- 检查语法错误
- 检查是否提交了禁止使用的函数(例如,var_dump(),empty())
- 检查是否使用了多字节字符串函数
- 检查代码是否符合定义的代码风格建议(错误不能提交,警告可以)
- 检查变量使用是否正确(例如,使用未定义的变量、未使用的参数等)
- JSON文件
- 检查语法错误
- Composer相关文件
- 检查是否提交了没有composer.lock的composer.json(仅在--only-committed-files修饰符下检查)
bin/php-cqtools code:validate [--excluded-paths=EXCLUDED_PATHS] [--only-committed-files] [--custom-ruleset=CUSTOM_RULESET] [<projectPath>]
projectPath
参数设置要处理路径。默认值是当前项目基本路径。
--excluded-paths
选项设置一些路径不进行处理。 --only-committed-files
选项仅处理计划提交的文件。 --custom-ruleset
选项设置用于替代默认规则的phpcs自定义规则集
显示调试信息
显示关于的调试信息
- 已安装的验证/修复工具,例如 phpcs、jsonlint、phpcbf
- 项目基本路径
- Git钩子路径
- Git钩子源路径
- 已提交的文件
- 排除的路径
- 项目文件
bin/php-cqtools debug:show [--show-full-paths] [<projectPath]
projectPath
参数设置要处理路径。默认值是当前项目基本路径。
--show-full-paths
选项启用完整路径文件列表而不是相对路径
此命令可能在这些工具的任何未来版本中不可用,因为它是为了调试目的而添加的。
运行 Bitban 轻量级测试
运行 Bitban 的框架轻量级测试。它假设 Bitban 的开发虚拟机正在运行,并且已安装测试启动器脚本 run_light_tests.sh
。
bin/php-cqtools test:run --vmHost[=VMHOST] [<projectPath]
projectPath
参数设置要处理路径。默认值是当前项目基本路径。
--vmHost=VMHOST
选项设置开发虚拟机主机名
此命令对于未集成 Bitban 框架的项目没有用途。
参考资料
这里有关于此主题的信息(以及灵感)的几个有趣的链接。
- https://carlosbuenosvinos.com/write-your-git-hooks-in-php-and-keep-them-under-git-control/
- https://www.sitepoint.com/writing-php-git-hooks-with-static-review/
- https://github.com/sdieunidou/php-git-hooks
- http://tech.zumba.com/2014/04/14/control-code-quality/
- https://www.sitepoint.com/8-must-have-php-quality-assurance-tools/
- http://phpqatools.org/
- https://github.com/illusori/PHP_Codesniffer-VariableAnalysis/