PSALM PARA PHP: ANÁLISIS ESTÁTICO Y DETECCIÓN DE ERRORES

Psalm es una herramienta open-source, que analiza código php sin ejecutarlo para detectar errores, bugs y problemas de tipos. Su enfoque principal es el análisis de tipos y la detección de problemas que podrían causar fallos en tiempo de ejecución, como el uso incorrecto de variables, métodos inexistentes o problemas con lógica condicional.

Características principales

  • Análisis de tipos avanzado: Psalm es muy bueno infiriendo y verificando tipos en tu código, incluso si no usas type hints explícitos. Soporta tipos avanzados como non-empty-string, list, o incluso tipos condicionales.
  • Detección de errores: Encuentra problemas como variables no definidas, argumentos incorrectos o retornos inesperados.
  • Taint analysis: Una característica única que verifica si los datos de entrada (como $_GET o $_POST) pueden introducir vulnerabilidades como inyecciones SQL o XSS.
  • Integración con frameworks: Tiene soporte específico para Laravel, Symfony, y otros mediante plugins (por ejemplo, psalm-plugin-laravel).
  • Informes detallados: Genera reportes en varios formatos (JSON, XML, etc.) para integrarse con CI/CD como GitHub Actions o GitLab.
  • Modo "baseline": Permite ignorar errores existentes en un proyecto grande para que puedas enfocarte en nuevo código sin abrumarte.

¿Cómo se compara con PHPStan?

Aunque Psalm y PHPStan son similares, hay diferencias:
    Enfoque en tipos: Psalm es más estricto con los tipos y tiene un motor de inferencia más avanzado. Por ejemplo, puede deducir tipos en más casos sin necesidad de anotaciones explícitas.
  • Taint analysis: Psalm tiene esta funcionalidad para seguridad, algo que PHPStan no ofrece de forma nativa.
  • Curva de aprendizaje: Psalm puede ser más complejo para principiantes debido a su enfoque detallado, pero es igual de configurable.
  • Comunidad y plugins: Ambos tienen buena comunidad, pero Psalm tiene un ecosistema de plugins más desarrollado para ciertos frameworks como Laravel.
  • Cómo empezar con Psalm

    • Instalación:Instalar Psalm con Composer en el proyecto: "composer require --dev vimeo/psalm".
    • Ejecutar Psalm: Analiza el código ejecutandp:"vendor/bin/psalm". Para analizar una carpeta en concreto ejecutar: "vendor/bin/psalm src/"
    • Niveles de análisis: EL "1" es el nivel más estricto, y el "8" es el nivel menos estricto. "vendor/bin/psalm --error-level=4".
    • Baseline para proyectos grandes: Si el proyecto tiene muchos errores heredados, genera un baseline para ignorarlos: "vendor/bin/psalm --set-baseline=psalm-baseline.xml". Esto permite enfocarte en errores nuevos sin lidiar con el "ruido" del código antiguo.