Dev (Back & Front)ARTIGO

Detectando erros no seu código sem executá-lo com PHPStan

Seguindo na direção de mostrar ferramentas que podem ser úteis no cotidiano do dev PHP, gostaria de escrever hoje sobre nosso querido PHPStan!

Detectando erros no seu código sem executá-lo com PHPStan
Imagem: Gustavo Fraga

Fala devs, tudo certo?

No artigo anterior escrevi aqui sobre o PHP CS FixerLeia tambémPadronizando seu código com PHP CS FixerDev (Back & Front) · mai 2019, uma ferramenta bastante útil para verificar e aplicar correções no seu código, caso ele não esteja de acordo com os padrões de codificação e estilo de código recomendados pela comunidade.

Seguindo na direção de mostrar ferramentas que podem ser úteis no cotidiano do dev PHP, gostaria de escrever hoje sobre uma ferramenta que é capaz de detectar erros no seu código sem a necessidade de executa-lo.

Estou falando do nosso querido PHPStan!

Instalação:

php
composer require --dev phpstan/phpstan

Caso de Uso:

Escrevi uma aplicação muito simples que deve imprimir no terminal a frase: Hello + o nome que eu passar como parâmetro no construtor da classe, por exemplo: “Hello Gustavo Fraga!”

Considere a seguinte estrutura de diretórios:

E os arquivos com o seguinte conteúdo:

Rodando a Aplicação:

Utilização:

No terminal, rode o seguinte comando:

php
vendor\bin\phpstan analyse src --level 7

Resultado:

Com este comando o PHPStan executa uma análise em todos os códigos que estão nos diretórios “public” e “src”, mas é possível apontar para qualquer diretório ou arquivo específico.

O “–level” no final do comando é o parâmetro que define o nível da análise que a ferramenta irá executar em nosso código. Os níveis vão do 0 ao 7 e quanto maior, mais rigorosa será a análise. Para ver todos os detalhes sobre rule levels eu recomendo que visitem essa seção específica na documentação oficial do projeto.

Simulando Erros:

Considere as alterações no conteúdo dos arquivos abaixo:

Neste caso, estou simulando alguns erros propositalmente para que possamos ver a ferramenta em ação.

No exemplo acima os erros podem parecer óbvios, mas no dia a dia lidamos com códigos que envolvem maior complexidade, e assim, deixamos alguns erros passarem sem perceber.

Resultado da Execução do PHPStan:

Entendendo os Erros:

O primeiro erro acusado refere-se ao tipo de parâmetro que o construtor da classe “HelloController” espera receber, que neste caso é uma string, mas como forçamos a passagem de um inteiro, ele acusou o problema… Perfeito!

O segundo erro acusado refere-se ao método “sayHello()” que não foi encontrado, pois alteramos o seu nome para forçar o erro na análise.

Os demais erros, referem-se ao método “Response” que é um componente do Symfony Framework e não foi localizado, pois alteramos o “Response” para “JsonResponse”, um outro componente do mesmo framework, mas que neste caso, não atende às necessidades do código.

Conclusão:

Espero que com este artigo vocês possam incluir o PHPStan na sua stack de desenvolvimento PHP, bem como consigam usufruir de todas as funcionalidades dessa ferramenta incrível.

Para ver todos as possibilidades de uso, recomendo fortemente que visitem a página oficial do projeto no GitHub.

Forte abraço!

Software Developer, graduado em Análise e Desenvolvimento de Sistemas pela FADERGS, iMasters Certified Professional, evangelista PHP e membro da comunidade de desenvolvedores PHP do Rio Grande do Sul - PHPRS.

Ver perfil