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

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

El analizador ofrece 10 niveles de revisión, donde cada nivel siguiente amplía las capacidades del anterior y proporciona verificaciones más estrictas:

  • Verificaciones básicas, identificación de clases, funciones y métodos desconocidos ($this), variables indefinidas, así como la transmisión de un número incorrecto de argumentos.
  • Detección de variables probablemente indefinidas, métodos mágicos desconocidos y propiedades de clases con __call y __get.
  • Detección de métodos desconocidos en todas las expresiones, sin limitarse a llamadas a través de $this. Verificación de PHPDocs.
  • Verificación de tipos de retorno y asignación de tipos a propiedades.
  • Detección básica de código 'muerto' (nunca llamado). Detección de llamadas a instanceof que siempre devuelven false, bloques 'else' que nunca se ejecutan y código que está después de return.
  • Verificación de tipos de argumentos pasados a métodos y funciones.
  • Advertencia sobre la falta de anotaciones con información de tipos.
  • Advertencia sobre tipos de unión incorrectos que definen colecciones de dos o más tipos.
  • Advertencia sobre la llamada a métodos y el acceso a propiedades con tipos 'nullable'.
  • Verificación del uso del tipo 'mixed'.

    Ejemplos de problemas básicos detectados:

    • Existencia de clases utilizadas en instanceof, catch, typehints y otras construcciones del lenguaje.
    • Existencia y accesibilidad de métodos y funciones llamados, así como el número de argumentos transmitidos.
    • Verificación de que el método devuelve datos del mismo tipo que se definió en la expresión return.
    • Existencia y visibilidad de las propiedades a las que se accede, así como verificación de los tipos de datos declarados y reales utilizados en las propiedades.
    • Correcta cantidad de parámetros pasados a las llamadas sprintf/printf en el bloque de formato de cadenas.
    • Existencia de variables considerando los bloques formados por operadores de ramificación y bucles.
    • Las conversiones de tipo inútiles (por ejemplo, «(string) ‘foo’») y las comprobaciones estrictas («===» y «!==») de datos con diferentes tipos y operandos, que siempre devuelven un valor false.

    Novedades clave de PHPStan 1.0:

    • Se ha implementado el nivel de comprobación «9», que realiza verificaciones sobre el uso del tipo «mixed», destinado a permitir que una función acepte parámetros de diferentes tipos. El noveno nivel identifica prácticas inseguras en el uso de «mixed», como pasar valores con el tipo «mixed» a otro tipo, llamar a métodos de tipo «mixed» y acceder a sus propiedades, ya que podrían no existir.
    • Gestión de la verificación de la identidad de los valores devueltos para llamadas de función 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 (private) específicas pero no utilizadas.
    • Transmisión de llamadas de callback incompatibles en funciones de manipulación de arrays, como array_map y usort.
    • Inspección de tipos para anotaciones typehint que faltan.
    • Se ha garantizado la compatibilidad de las descripciones de tipos con PHPDocs, lo que permite usar en PHPDocs tipos de mensajes de error.

    Fuente: opennet.ru

  • Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster