$30 off During Our Annual Pro Sale. View Details »

PHPStan - Analisador Estático

Jonata Weber
September 14, 2018

PHPStan - Analisador Estático

Vamos falar sobre o PHPStan, um analisador estático PHP que tem como finalidade encontrar possíveis bugs, defeitos e inconsistências antes de executar o seu código. Ele ajudará você e o seu time a ter um código mais consistente e seguro.

Jonata Weber

September 14, 2018
Tweet

More Decks by Jonata Weber

Other Decks in Programming

Transcript

  1. PHPStan Ferramenta de Análise Estática /** @author Jonata Weber */

  2. @JonataWeber

  3. @JonataWeber phpba.com.br telegram.me/phpba

  4. Linguagem Compilada vs Interpretada

  5. Linguagens Interpretadas Linguagem Pronto para Rodar! Código de Máquina Máquina

    Virtual "Interpretação"
  6. Linguagens Interpretadas Linguagem Pronto para Rodar! Código de Máquina Máquina

    Virtual "Interpretação" Analisador Léxico + Análise Sintática + Análise Semântica
  7. Linguagens Compiladas Linguagem Código de Máquina Pronto para Rodar! "Compilação"

  8. Linguagens Compiladas Linguagem Código de Máquina Pronto para Rodar! "Compilação"

    Analisador Léxico + Análise Sintática + Análise Semântica
  9. Interpretada - Vantagens • Independência de plataforma • Maior produtividade

    • Simples modelo de execução • Feedback mais rápido
  10. Mas tem desvantagens!

  11. class Foo { public function bar(\DateTimeImutable $date) { echo $date->format('d/m/Y');

    } } Encontre o Erro!
  12. class Foo { public function bar(\DateTimeImmutable $date) { echo $date->format('d/m/Y');

    } } Encontre o Erro!
  13. E o interpretador, acharia esse erro?

  14. E o interpretador, acharia esse erro? NÃO!

  15. E se PHP fosse compilado...

  16. Line 7 Parameter $date of method App\Foo::bar() has invalid typehint

    type DateTimeImutable. Line 9 Call to method format() on an unknown class DateTimeImutable. Teríamos esses erros!
  17. E alguns desses erros seriam evitados... • Erros de sintaxe;

    • Tipo de variável inválida; • Tipo do retorno do método inválido; • Método indefinido; • Número de argumentos passados ao método; • Classes inexistentes; • Variáveis não utilizadas; • Métodos não utilizados; • etc...
  18. None
  19. Escreva menos testes unitários! (e foque no que realmente importa)

  20. vs PHPStan

  21. PHPStan é rápido. (6000 files, 600k LOCs em ~1 min)

  22. PHPStan é extensível. __get, __set, __call

  23. Extensões Oficiais • Doctrine • PHPUnit • Nette Framework •

    Dibi - Database Abstraction Library • PHP-Parser • beberlei/assert • webmozart/assert • Symfony Framework • Mockery
  24. Extensões NÃO Oficiais • Phony • Prophecy • Laravel •

    myclabs/php-enum
  25. Escolha o seu nível. $levels = [0, 1, 2, 3,

    4, 5, 6, 7];
  26. DEMO.

  27. Obrigado! Twitter: @JonataWeber VIVA O FUTURO DO TRABALHO. SEJA IMPULSER

    https://impulser.me/2DetPta
  28. Referências https://medium.com/@ondrejmirtes/whats-new-in-phpstan-0-10-bbbe896cc02e https://twitter.com/OndrejMirtes https://www.phparch.com/2018/04/testing-strategy-with-the-help-of-static-analysis/ https://medium.com/@ondrejmirtes/phpstan-2939cd0ad0e3 https://github.com/phpstan/phpstan