O que você deve fazer antes publicar código PHP em seu repositório Git de produção
Aprenda a integrar PHP Code Sniffer ao seu projeto de commit no Git para inspecionar seu código PHP e impedir que o código com problemas seja comitado.
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çãoEu 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 SnifferPara configurar o PHP Code Sniffer, você precisa do PEAR e do pacote PHP CodeSniffer.
Instalar o Gerenciador de Pacotes PEARVerifique 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_CodeSnifferIntegrar 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-commitConclusã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







