DEV Community 👩‍💻👨‍💻

Lucas Teixeira dos Santos Santana
Lucas Teixeira dos Santos Santana

Posted on

Como configurar e executar alguns tipos de testes para Magento 2

PHP Code Sniffer (PHPCS)

O PHP Code Sniffer (em uma tradução livre, pode ser algo como: Analisador de Código) é uma ferramenta para detectar violações nos padrões de código. Os padrões de código são formados por uma coleção de regras definidas pelos desenvolvedores, o padrão inicial do PHPCS é o PEAR. O PHPCS pode apontar para as recomendações padrões do PHP (PSRs). É necessário ter o PHPCS e o Magento Coding Standard como dependência de desenvolvimento no arquivo composer.json.

{
    ...
    "require-dev": {
        ...
        "squizlabs/php_codesniffer": "{version}",
        "magento/magento-coding-standard": "{version}",
        ...
    },
    ...
}
Enter fullscreen mode Exit fullscreen mode

Para configurar a primeira vez o Magento Coding Standard no PHPCS deve ser executado o seguinte comando:

vendor/bin/phpcs --config-set installed_paths ../../magento/magento-coding-standard/
Enter fullscreen mode Exit fullscreen mode

Para executar os testes deve-se chamar o comando phpcs que estará dentro de ./vendor/bin e referenciar a pasta de destino.

./vendor/bin/phpcs app/code/{Vendor}/{Module}
./vendor/bin/phpcs vendor/{vendor}/module-{module-name}
Enter fullscreen mode Exit fullscreen mode

ruleset.xml

Caso seja necessário personalizar a execução de testes é possível criar um arquivo ruleset.xml (a recomendação é chamá-lo de phpcs-ruleset.xml para não entrar em conflito com os outros arquivos ruleset.xml) no próprio módulo e configurar para que os testes sejam executados de acordo com a configuração deste arquivo.

A documentação necessária explicando tudo sobre o arquivo ruleset.xml está no link PHP_CodeSniffer Ruleset.

./vendor/bin/phpcs app/code/{Vendor}/{Module}
./vendor/bin/phpcs vendor/{vendor}/{module}
Enter fullscreen mode Exit fullscreen mode

PHP Mess Detector (PHPMD)

O PHP Mess Detector (em uma tradução livre, pode ser algo como: Detector de Desordem) é uma ferramenta que analisa o código de uma aplicação em PHP e detecta problemas potenciais e a qualidade. Algumas das inúmeras análises possíveis de serem executadas com o PHP Mess Detector são:

  • Localização de possíveis erros;
  • Localização de métodos, atributos e argumentos não utilizados;
  • Violação de convenções de nomenclatura;
  • Problemas potenciais relacionados ao tamanho do código;
  • Verifica a complexidade do código.

É necessário ter o PHPMD como dependência de desenvolvimento no arquivo composer.json.

{
    ...
    "require-dev": {
        ...
        "phpmd/phpmd": "{version}",
        ...
    },
    ...
}
Enter fullscreen mode Exit fullscreen mode

Para executar os testes com o PHPMD, deve-se chamar o comando phpmd que estará dentro de ./vendor/bin, referenciar o arquivo ruleset.xml (a recomendação é chamá-lo de phpmd-ruleset.xml para não entrar em conflito com os outros arquivos ruleset.xml) e a pasta de destino.

./vendor/bin/phpmd app/code/{Vendor}/{Module} text app/code/{Vendor}/{Module}/phpmd-ruleset.xml
./vendor/bin/phpmd vendor/{vendor}/{module} text vendor/{vendor}/{module}/phpmd-ruleset.xml
Enter fullscreen mode Exit fullscreen mode

O PHP Mess Detector possui alguns parâmetros que permitem adicionar filtros ao processo de análise e definir o formato de saída do resultado do teste.

ruleset.xml

Caso seja necessário personalizar a execução de testes é possível criar um arquivo ruleset.xml (a recomendação é chamá-lo de phpmd-ruleset.xml para não entrar em conflito com os outros arquivos ruleset.xml) no próprio módulo e configurar para que os testes sejam executados de acordo com a configuração deste arquivo.

A documentação necessária explicando tudo sobre o arquivo ruleset.xml está no link PHPMD doc.


PHP Copy/Paste Detector (PHPCPD)

O PHP Copy/Paste Detector (em uma tradução livre, pode ser algo como: Detector de Copia e Cola) é uma ferramenta para checagem de código duplicado nos arquivos em PHP do módulo. É necessário ter o PHPCPD como dependência de desenvolvimento no arquivo composer.json.

{
    ...
    "require-dev": {
        ...
        "sebastian/phpcpd": "{version}",
        ...
    },
    ...
}
Enter fullscreen mode Exit fullscreen mode

Para executar os testes com o PHPCPD, deve-se chamar o comando phpcpd que estará dentro do diretório ./vendor/bin.

./vendor/bin/phpcpd ./app/code/{Vendor}/{Module} --exclude=./vendor/e3/$1/Test/ --fuzzy --progress --min-lines=0
./vendor/bin/phpcpd ./vendor/{vendor}/{module} --exclude=./vendor/e3/$1/Test/ --fuzzy --progress --min-lines=0
Enter fullscreen mode Exit fullscreen mode

A documentação necessária explicando tudo sobre as opções para a execução do PHPCPD está no link PHPCPD Manual.


PHP Static Analysis (PHPStan)

O PHP Static Analysis (em uma tradução livre, pode ser algo como: Análise Estática) é uma ferramenta focada em encontrar erros no código sem executá-las de fato e sem que sejam feitos testes para as classes, a exatidão de cada linha do código pode ser verificada antes de executar a linha real, ou seja, a PHPStan tem a proposta de adaptar a funcionalidade de um compilador para análise estática do código. Algumas das verificações que o PHPStan realiza são:

  • Verifica a utilização das chamadas de classes, verificando se o código está realmente sendo utilizado;
  • Verifica a acessibilidade dos métodos e funções e a coesão entre os argumentos das chamadas com sua assinatura;
  • Verifica a tipagem do retorno dos métodos e funções;
  • Verifica a acessibilidade dos atributos e sua tipagem;
  • Verifica a existência de variáveis (respeitando o escopo e laços de repetição);
  • Verifica comparações estritas e tipagem de variáveis inúteis.

Para utilizar o PHPStan no Magento 2 é necessário uma extensão que permita a análise do código, é recomendável o módulo PHPStan Inviqa. Basta instalar esse módulo através do composer, é necessário ter o PHPStan como dependência de desenvolvimento no arquivo composer.json.

{
    ...
    "require-dev": {
        ...
        "phpstan/phpstan": "{version}",
        "inviqa/phpstan-magento2": "{version}",
        ...
    },
    ...
}
Enter fullscreen mode Exit fullscreen mode

Para executar os testes com o PHPStan, deve-se chamar o comando analyse que estará dentro de ./vendor/bin/phpstan, referenciar o caminho do arquivo phpstan.neon que será utilizado para configuração e a pasta de destino.

./vendor/bin/phpstan analyse ./app/code/{Vendor}/{Module} --configuration=phpstan.neon
./vendor/bin/phpstan analyse ./vendor/{vendor}/{module} --configuration=phpstan.neon
Enter fullscreen mode Exit fullscreen mode

phpstan.neon

O PHPStan utiliza o formato de configuração chamado neon, que é muito semelhante ao yml.

parameters:
    bootstrap: ../../../../vendor/inviqa/phpstan-magento2/phpstan-bootstrap.php
    level: 5
    paths:
        - ./
    fileExtensions:
        - php
    excludes_analyse:
        - ./etc/*
        - ./Test/*
        - ./test-reports/*
        - ./view/*
    ignoreErrors:
        - '#Call to an undefined method [a-zA-Z0-9\\_]+::(get|set|uns|has)[A-Z]#'
Enter fullscreen mode Exit fullscreen mode

Caso seja necessário a customização do arquivo phpstan.neon basta consultar a documentação abaixo:

Top comments (0)

Timeless DEV post...

How to write a kickass README

Arguably the single most important piece of documentation for any open source project is the README. A good README not only informs people what the project does and who it is for but also how they use and contribute to it.

If you write a README without sufficient explanation of what your project does or how people can use it then it pretty much defeats the purpose of being open source as other developers are less likely to engage with or contribute towards it.