Fala devs, tudo certo?
No artigo anterior escrevi aqui sobre o PHP CS Fixer, 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:
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:
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!