Usando PHP Code Sniffer e PHP Mess Detector com Magento

Fala-se muito e até mesmo se gaba tanto das boas práticas de programação e controle de qualidade. A verdade é que, apesar de aderir a ser metódico e dedicar tempo para tais práticas, muitas vezes mais do que gostaríamos, a realidade nos leva ao oposto. (Sim, aquelas coisas que não gostamos de reconhecer, mas todos nós sabemos que acontece)

Apesar disso, e para não cair no extremo oposto, existem duas ferramentas simples que podem (e devem) ser usadas para validar nosso código:

Em ambos os casos, apesar de ser na versão 1 do Magento, podemos usar as regras de validação que irá ajudar-nos a não sair de certas linhas (embora em alguns casos, o core da plataforma em si não cumpre perfeitamente com estas regras).

PHP Code Sniffer

Primero vamos a instalar.

pear install PHP_CodeSniffer

O segundo passo será o de clonar o conjunto de regras a partir do repositório no GitHub ECG (ECG é o Expert Consulting Group de Magento)).  O repositório que buscamos é: coding-standard

git clone git@github.com:magento-ecg/coding-standard.git /path/local/repositorio/clonado

Uma vez clonado, vamos mudar para o diretório no qual as regras estão (no momento do post, a versão é 2.2.0):

cd /usr/share/php/PHP/CodeSniffer/Standards

E agora, finalmente, nós criamos um link simbólico para o código que nós clonamos na segunda etapa.

ln -s /path/local/a/repositorio/clonado Ecg

A partir deste momento, pelo terminal, você pode executar o seguinte comando:

phpcs --standard=Ecg /path/a/nuestro/magento

Desta forma, a validação é feita usando as regras, oficiais (ou pelo menos o mais oficial que eu encontrei).

PHP Mess Detector

A segunda ferramenta precisa de alguns comandos a mais, mas é fácil de instalar e usar.

Primeiro vamos adicionar o canal no PEAR:

pear channel-discover pear.phpmd.org
pear channel-discover pear.pdepend.org

Nós olhamos qual a versão que temos disponível para instalar:

pear remote-list -c phpmd

No dia de hoje iremos ver o seguinte resultado:

Channel phpmd Available packages:
=================================
Package Version
PHP_PMD 1.5.0

Agora sim, iremos instalar.

pear install pdepend/php_depend
pear install phpmd/php_pmd-1.5.0

Quanto às regras de validação, ECG oferece nenhum set, mas olhando um pouco apareceu um set bastante atualizado, adaptado do que vem com Magento2: phpmd-magento.

Como fizemos antes, vamos clonar o repositório:

git clone git@github.com:kubaceg/phpmd-magento.git /path/local/a/repositorio/clonado

Nós movemos ao diretório PHPMD:

cd /usr/share/php/data/PHP_PMD/resources/rulesets

E lá nós criamos um link simbólico para as regras:

ln -s /path/local/a/repositorio/clonado/ruleset.xml magento.xml

Note que você atribuiu (por uma questão totalmente arbitrária) o nome às regras.

Agora sim, podemos fazer um teste contra o código com o seguinte comando:

phpmd /path/a/nuestro/magento text magento

É verdade que o manual bom programador e implementador sugere que devemos sempre praticar o uso de Continuous Integration e Unit Test, mas como eu disse no início do post, sabemos que na realidade (por qualquer razão que seja) nem sempre permite.

Usar PHPCS e PHPMD é muito simples, não atrapalha o nosso fluxo de trabalho e nos permite gerar código de melhor qualidade e pode até nos ajudar a prevenir bugs. Eles deveriam ser uma obrigação para todos que trabalham com Magento.

Tradução livre do seguinte artigo: 

http://www.damianculotta.com.ar/2015/02/23/usando-php-code-sniffer-y-php...

Mais referências: 

http://andykdocs.de/development/PHP/Code-Formatting

https://www.atwix.com/magento-2/configure-code-sniffer-for-phpstorm/

http://www.summasolutions.net/blogposts/integrate-php-code-sniffer-and-p...

 

Scholarly Lite is a free theme, contributed to the Drupal Community by More than Themes.