Toda vez que você fizer commit em um novo código em um repositório Git, há uma grande chance de que o código tenha problemas que não foram detectados com o seu lote habitual de testes.
Leia este artigo para aprender a integrar o PHP Code Sniffer ao seu projeto de commit no Git para inspecionar seu código PHP automaticamente e impedir que o código com problemas seja comitado.
Introdução
Eu imagino que você já está usando Git como sistema de controle de versão para projetos PHP.
É verdade que às vezes cometemos erros de ortografia ao digitar um código, o que pode causar um aviso ou um erro fatal. Normalmente esses erros seriam detectados com testes, mas nem todos são detectados pelo lote de testes que realizamos.
Fazer push em um código que tem erros para um servidor de produção pode causar sérios problemas. Mesmo comitando o mesmo código para o seu repositório Git pode resultar em registros git inconsistentes – por exemplo, quando um commit foi feito apenas para corrigir erros de digitação.
Como evitar código comitado com problemas?
Neste artigo proponho usar, por exemplo, a ferramenta PHP CodeSniffer para inspecionar nosso código e mostrar avisos, erros ou usos de função obsoleta antes de confirmar as alterações para repositório git. Dessa forma, as boas práticas de programação se tornam mais fáceis de seguir.
Configuração de um repositório Git para usar PHP Code Sniffer
Para configurar o PHP Code Sniffer, você precisa do PEAR e do pacote PHP CodeSniffer.
Instalar o Gerenciador de Pacotes PEAR
Verifique se PEAR está instalado em seu sistema executando pear version em seu terminal. Se o comando falhar, você precisa instalar o PEAR em seu sistema.
Em distros baseadas em Unix/Linux
$ wget http://pear.php.net/go-pear.phar $ php go-pear.phar
No Mac OS X
$ wget http://pear.php.net/go-pear.phar $ php -d detect_unicode=0 go-pear.phar
ou
$ curl -O http://pear.php.net/go-pear.phar $ php -d detect_unicode=0 go-pear.phar
Instale o PHP Code Sniffer
Use PEAR para instalar o pacote PHP_CodeSniffer, que será utilizado para executar testes em nosso código PHP e verificar erros e padrões de código.
$ pear install PHP_CodeSniffer
Integrar o PHP Code Sniffer com Git
Vamos configurar o repositório Git para executar o PHP Code sniffer em cada git commit. Mude para o diretório do projeto PHP e crie um arquivo de “pre-commit” em .git/hooks
$ cd /path/to/project $ vi .git/hooks/pre-commit
Copie o script abaixo e salve o arquivo.
#!/bin/sh PROJECT=`php -r "echo dirname(dirname(dirname(realpath('$0'))));"` STAGED_FILES_CMD=`git diff --cached --name-only --diff-filter=ACMR HEAD | grep \\\\.php` # Determine if a file list is passed if [ "$#" -eq 1 ] then oIFS=$IFS IFS=' ' SFILES="$1" IFS=$oIFS fi SFILES=${SFILES:-$STAGED_FILES_CMD} echo "Checking PHP Lint..." for FILE in $SFILES do php -l -d display_errors=0 $PROJECT/$FILE if [ $? != 0 ] then echo "Fix the error before commit." exit 1 fi FILES="$FILES $PROJECT/$FILE" done if [ "$FILES" != "" ] then echo "Running Code Sniffer..." ./vendor/bin/phpcs --standard=PSR1 --encoding=utf-8 -n -p $FILES if [ $? != 0 ] then echo "Fix the error before commit." exit 1 fi fi exit $?
É muito importante tornar o script de pré-commit em executável para que ele possa ser executado antes de realmente fazer o commit dos arquivos.
$ chmod +x .git/hooks/pre-commit
Conclusão
Usar PHP Code Sniffer para verificar as nossas mudanças de código PHP antes de fazer o commit em um repositório Git é fácil, uma vez que você descobrir como criar um arquivo de pré-commit. O mesmo processo pode ser usado para adicionar outros controles de código utilizando outras ferramentas.
***
Suresh Kumar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://www.phpclasses.org/blog/post/301-What-You-Should-Do-Before-Pushing-PHP-Code-to-your-Production-GIT-Repository.html