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.