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

Después de seis años de desarrollo, tuvo lugar la primera versión estable del analizador estático PHPStan 1.0, que permite encontrar errores en el código PHP sin ejecutarlo y utilizar pruebas unitarias. El código del proyecto está escrito en PHP y distribuido bajo la licencia MIT.

El analizador proporciona 10 niveles de verificación, en los que cada nivel posterior amplía las capacidades del anterior y proporciona comprobaciones más estrictas:

  • Comprobaciones básicas, definición de clases, funciones y métodos desconocidos ($this), variables no definidas y paso de un número incorrecto de argumentos.
  • Identificar variables posiblemente indefinidas, métodos mágicos desconocidos y propiedades de clases con __call y __get.
  • Detección de métodos desconocidos en todas las expresiones, no limitado a llamadas mediante $this. Comprobando PHPDocs.
  • Verificar tipos de devolución y asignar tipos a propiedades.
  • Identificación básica de código “muerto” (nunca llamado). Identifique instancias de llamadas que siempre devuelven falsos, bloques "de lo contrario" que nunca se activan y código después de la devolución.
  • Verificar los tipos de argumentos pasados ​​a métodos y funciones.
  • Advertencia sobre anotaciones de información de tipo faltantes.
  • Advertencia sobre tipos de unión incorrectos que definen colecciones de dos o más tipos.
  • Advertencia sobre llamar a métodos y acceder a propiedades con tipos "nullable".
  • Comprobando el uso del tipo "mixto".

    Ejemplos de problemas subyacentes identificados:

    • La existencia de clases utilizadas en instancia de, captura, sugerencias de escritura y otras construcciones del lenguaje.
    • La existencia y disponibilidad de métodos y funciones llamadas, así como el número de argumentos pasados.
    • Comprobando que el método devuelve datos del mismo tipo definido en la expresión de retorno.
    • La existencia y visibilidad de las propiedades a las que se accede, y la verificación de los tipos de datos declarados y reales utilizados en las propiedades.
    • La cantidad de parámetros pasados ​​a las llamadas sprintf/printf en el bloque de formato de cadena es correcta.
    • La existencia de variables teniendo en cuenta bloques formados por operadores de ramificación y bucles.
    • Conversiones de tipos inútiles (por ejemplo, "(string) 'foo'") y pruebas estrictas ("===" y "!==") en datos con diferentes tipos y operandos que siempre devuelven falso.

    Innovaciones clave en PHPStan 1.0:

    • Se ha implementado el nivel de verificación “9”, que verifica el uso del tipo “mixto”, destinado a organizar la recepción de parámetros por parte de la función con diferentes tipos. El nivel nueve identifica usos inseguros de "mixto", como pasar valores de tipo "mixto" a otro tipo, llamar a métodos de tipo "mixto" y acceder a sus propiedades porque es posible que no existan.
    • Controle si los valores de retorno son idénticos para llamadas a funciones idénticas utilizando las anotaciones @phpstan-pure y @phpstan-impure.
    • Análisis de tipos en construcciones try-catch-finally utilizando anotaciones @throws.
    • Identificación de propiedades, métodos y constantes internas (privadas) definidas pero no utilizadas.
    • Pasar devoluciones de llamada incompatibles a funciones de matriz como array_map y usort.
    • Inspección de tipografía para detectar anotaciones tipográficas faltantes.
    • Se hicieron declaraciones de tipos compatibles con PHPDocs, lo que permitió utilizar tipos de mensajes de error en PHPDocs.

    Fuente: opennet.ru

  • Añadir un comentario