用于检查 PHP 代码覆盖率和 Symfony 代码嗅探器的预提交挂钩
Pre commit hook to check PHP code coverage and code sniffer for Symfony
如何为 PHP Symfony 代码做一个预提交挂钩来分析代码覆盖率和代码嗅探器报告?我应该使用哪些命令和工具?
截至目前,我可以使用三叶草格式的 PHPUnit 生成代码覆盖率报告:
#!/bin/bash
echo "##################################################################################################"
echo "Starting PHPUnit tests : "`date "+%y-%m-%d %H-%M-%S"`
echo "##################################################################################################"
php app/console -e=dev doctrine:database:drop --force
php app/console -e=dev doctrine:database:create
php app/console -e=dev doctrine:schema:create
php app/console -e=dev -n doctrine:fixtures:load
#phpunit -c app --coverage-html build/html
phpunit -c app --log-junit build/unit.xml
'[' -f build/coverage.xml ']'
phpunit -c app --coverage-clover build/coverage.xml
php app/console -e=dev doctrine:schema:drop --force
php app/console -e=dev doctrine:database:drop --force
echo "Finishing Cron at "`date "+%y-%m-%d %H-%M-%S"`
echo "Cron Task Complete"
echo "##################################################################################################"
如果您的 bash 脚本按预期工作,您只需将其命名为 pre-commit
并将其放入 git 挂钩:/path/to/repo/.git/hooks
。您将在此目录中找到一些示例。
有关 git 钩子的更多信息:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
那么,对于代码嗅探器,我推荐https://github.com/squizlabs/PHP_CodeSniffer。
还有 https://github.com/phpro/grumphp 可以为您做所有事情。
当您可以使用客户端 git 挂钩轻松完成时,无需使用 grumphp。下面的示例 运行s php-cs-fixer 并在您 运行 git push origin .....
.
时防止将损坏的代码推送到 github 存储库
your_project_folder/.git/hooks/pre-push
#!/bin/sh
if [ -f ./bin/php-cs-fixer ]
then
./bin/php-cs-fixer fix --dry-run --verbose --diff src
if [ $? -ne 0 ]
then
printf "\n\t3[1;31m[PHP-CS-Fixer] Push Aborted\n\n3[0m"
return 1
fi
fi
授予权限
chmod +x .git/hooks/pre-push
测试
git push origin .....
参见 example here。
如何为 PHP Symfony 代码做一个预提交挂钩来分析代码覆盖率和代码嗅探器报告?我应该使用哪些命令和工具?
截至目前,我可以使用三叶草格式的 PHPUnit 生成代码覆盖率报告:
#!/bin/bash
echo "##################################################################################################"
echo "Starting PHPUnit tests : "`date "+%y-%m-%d %H-%M-%S"`
echo "##################################################################################################"
php app/console -e=dev doctrine:database:drop --force
php app/console -e=dev doctrine:database:create
php app/console -e=dev doctrine:schema:create
php app/console -e=dev -n doctrine:fixtures:load
#phpunit -c app --coverage-html build/html
phpunit -c app --log-junit build/unit.xml
'[' -f build/coverage.xml ']'
phpunit -c app --coverage-clover build/coverage.xml
php app/console -e=dev doctrine:schema:drop --force
php app/console -e=dev doctrine:database:drop --force
echo "Finishing Cron at "`date "+%y-%m-%d %H-%M-%S"`
echo "Cron Task Complete"
echo "##################################################################################################"
如果您的 bash 脚本按预期工作,您只需将其命名为 pre-commit
并将其放入 git 挂钩:/path/to/repo/.git/hooks
。您将在此目录中找到一些示例。
有关 git 钩子的更多信息:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
那么,对于代码嗅探器,我推荐https://github.com/squizlabs/PHP_CodeSniffer。
还有 https://github.com/phpro/grumphp 可以为您做所有事情。
当您可以使用客户端 git 挂钩轻松完成时,无需使用 grumphp。下面的示例 运行s php-cs-fixer 并在您 运行 git push origin .....
.
your_project_folder/.git/hooks/pre-push
#!/bin/sh
if [ -f ./bin/php-cs-fixer ]
then
./bin/php-cs-fixer fix --dry-run --verbose --diff src
if [ $? -ne 0 ]
then
printf "\n\t3[1;31m[PHP-CS-Fixer] Push Aborted\n\n3[0m"
return 1
fi
fi
授予权限
chmod +x .git/hooks/pre-push
测试
git push origin .....
参见 example here。