Lanzamento de PHPStan 1.0, un analizador estático para código PHP

Despois de seis anos de desenvolvemento, tivo lugar a primeira versión estable do analizador estático PHPStan 1.0, que permite atopar erros no código PHP sen executalo e utilizando probas unitarias. O código do proxecto está escrito en PHP e distribúese baixo a licenza MIT.

O analizador ofrece 10 niveis de comprobación, nos que cada nivel posterior amplía as capacidades do anterior e proporciona comprobacións máis rigorosas:

  • Comprobacións básicas, definición de clases, funcións e métodos descoñecidos ($this), variables sen definir e pasar o número incorrecto de argumentos.
  • Identificando variables posiblemente indefinidas, métodos máxicos descoñecidos e propiedades das clases con __call e __get.
  • Detección de métodos descoñecidos en todas as expresións, sen limitarse ás chamadas a través de $this. Comprobando PHPDocs.
  • Comprobación de tipos de retorno e asignación de tipos ás propiedades.
  • Identificación básica do código "morto" (nunca chamado). Identifique instancias de chamadas que sempre devolven falsos, bloques "else" que nunca se disparan e código tras devolución.
  • Comprobación dos tipos de argumentos pasados ​​a métodos e funcións.
  • Aviso acerca de que faltan anotacións de información de tipo.
  • Aviso sobre tipos de unión incorrectos que definen coleccións de dous ou máis tipos.
  • Aviso sobre a chamada de métodos e o acceso a propiedades con tipos "nullable".
  • Comprobación do uso do tipo "mixto".

    Exemplos de problemas subxacentes identificados:

    • A existencia de clases utilizadas en instanceof, catch, typehints e outras construcións lingüísticas.
    • A existencia e dispoñibilidade de métodos e funcións chamados, así como o número de argumentos pasados.
    • Comprobando que o método devolve datos co mesmo tipo que o definido na expresión de retorno.
    • A existencia e visibilidade das propiedades ás que se accede, e a comprobación dos tipos de datos declarados e reais utilizados nas propiedades.
    • O número de parámetros pasados ​​ás chamadas sprintf/printf no bloque de formato de cadea é correcto.
    • A existencia de variables tendo en conta bloques formados por operadores de ramificación e bucles.
    • Casts de tipos inútiles (por exemplo, "(cadea) 'foo'") e probas estritas ("===" e "!==") en datos con diferentes tipos e operandos que sempre devolven falso.

    Innovacións clave en PHPStan 1.0:

    • Implementouse o nivel de comprobación “9”, que verifica o uso do tipo “mixto”, destinado a organizar a recepción de parámetros da función con distintos tipos. O nivel XNUMX identifica usos inseguros de "mixto", como pasar valores de tipo "mixto" a outro tipo, chamar a métodos de tipo "mixto" e acceder ás súas propiedades porque poden non existir.
    • Controla se os valores de retorno son idénticos para chamadas de funcións idénticas usando as anotacións @phpstan-pure e @phpstan-impure.
    • Análise de tipos en construcións try-catch-finally usando anotacións @throws.
    • Identificación de propiedades, métodos e constantes internas (privadas) definidas pero non utilizadas.
    • Pasando devolucións de chamada incompatibles a funcións de matriz como array_map e usort.
    • Inspección de tipo para as anotacións de indicación de tipo que faltan.
    • Fixo declaracións de tipos compatibles con PHPDocs, permitindo que os tipos de mensaxes de erro se utilicen en PHPDocs.

    Fonte: opennet.ru

  • Engadir un comentario