[英]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 hooks的更多信息: https : //git-scm.com/book/zh/v2/Customizing-Git-Git-Hooks
然后,为您编码嗅探器,我建议https://github.com/squizlabs/PHP_CodeSniffer 。
还有https://github.com/phpro/grumphp可以为您做所有事情。
当您可以通过客户端git钩子轻松完成它时,无需使用grumphp。 下面的示例运行php-cs-fixer,并在您运行git push origin .....
时防止将损坏的代码推送到github存储库中。
your_project_folder / git的/钩/预推
#!/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\t\033[1;31m[PHP-CS-Fixer] Push Aborted\n\n\033[0m"
return 1
fi
fi
授予权限
chmod +x .git/hooks/pre-push
测试
git push origin .....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.