Psalm 7 activa el análisis de seguridad por defecto y lo hace 10 veces más rápido

Psalm 7 release: PHP security&static analysis software

Psalm 7 activa el análisis de seguridad por defecto y lo hace 10 veces más rápido

Psalm 7 llega con el análisis de taint activado por defecto y hasta 10 veces más rápido, integrado en la misma ejecución que la comprobación de tipos y la detección de código muerto. Añade seguimiento de inyección en NoSQL, prompts de LLM y URLs, un nuevo modelo de pureza basado en capacidades de Hack, detección de código muerto sobre grafos, valores por defecto en templates y soporte para PHP 8.5 y 8.6.

Un stub solo se carga cuando tu código usa la librería.
  1. idoubtit

    Para cualquiera que no esté familiarizado con PHP, el análisis estático es prácticamente obligatorio porque el sistema de tipos oficial de PHP es mínimo. Los tipos detallados se añaden mediante comentarios phpdoc, y también ayudan a los IDEs a proporcionar un autocompletado sensato. Por ejemplo, el simple "array" debería detallarse con phpdoc:

    /**

    * @param array<string, MyRecord> $input

    * @return list<int>

    */

    function foo(array $input): array

    {

    foreach ($input as $string => $record) {

    // El IDE sabe que $record es una instancia de MyRecord

    El análisis estático usará ambos sistemas de tipos, y es la única forma de comprobar que los phpdoc son consistentes. Psalm tiene varios niveles de rigor, e incluso en un nivel muy laxo, puede ayudar a detectar errores o malos olores en el código.

    Hay dos herramientas principales de análisis estático para PHP, Psalm y PHPstan, ambas escritas en PHP. Esta última solía ser mucho más lenta, pero la última vez que la probé había poca diferencia (unos 20 s para 100k líneas + dependencias).

    Mi conjetura es que un nuevo contendiente, Mago, escrito en Rust, probablemente reemplazará pronto a esas otras herramientas. Sus comandos (analyze, lint) ya son casi tan completos como psalm/phpstan. Aunque la migración no será fácil porque no tiene noción de niveles.

  2. anthk

    Usarás la reescritura en Rust de PHP.

  3. origini

    Ay hombre, ay hombre, PHP fue el primer lenguaje que aprendí por mi cuenta, pero ¿de verdad sigue necesitando comentarios PHPDoc en los tipos de retorno?

    Venga ya, PHP tiene muchísimas cosas malas, pero ¿incluso algo básico como esto sigue sin estar en el propio lenguaje?

Más de este día

2026-11-09