Mejorando el código Laravel y PHP con Larastan

Todos aquellos que hayan trabajado con PHP antes les sonará PHPStan muy muy probablemente, en Symfony por ejemplo es ampliamente usado para mantener la calidad del código sobretodo si trabajan en un mismo repo varias personas. Para todos aquellos que no sepan lo que es:

Larastan es una extensión de PHPStan específicamente diseñada para aplicaciones Laravel. PHPStan es una herramienta de análisis estático que encuentra errores en el código sin necesidad de ejecutarlo. Larastan aprovecha esto y proporciona análisis más profundos adaptados a la estructura y convenciones de Laravel.

¿Suena bien, no? Poder mantener la calidad del código y anticiparse a posibles problemas

Requisitos

  • PHP 7.4 o superior
  • Laravel 8.x o superior
  • Composer (No sé ni porqué lo pongo)

Instalación

Lo primero de todo:

composer require --dev nunomaduro/larastan

No debería de dar ya ningún problema pero cuando lo probé por primera vez el comando me dio problemas, en mi caso lo pude solucionar instalando una versión en específico:

composer require --dev nunomaduro/larastan:2.9.4

Aunque ya ha llovido desde entonces, no debería dar problemas.

Siguiente paso, el archivo de configuración. Es necesario crear un archivo phpstan.neon en la raíz del proyecto para poder configurar todos los parámetros de Larastan:

includes:
    - ./vendor/nunomaduro/larastan/extension.neon

parameters:
    level: 5
    paths:
        - app
        - database
    excludePaths:
        - bootstrap/cache
        - storage
    checkMissingIterableValueType: false
  • level: El nivel de análisis va de 0 a 9. 0 es el más permisivo y 9 es el más estricto.
  • paths: Indica los directorios que Larastan debe analizar.
  • excludePaths: Excluye directorios que no deben ser analizados (como archivos de caché o almacenamiento).

PHPStan tiene más configuraciones que se pueden consultar en su Web Oficial

Ya se puede testear si está todo OK y funciona, para ello se debe ejecutar el comando:

./vendor/bin/phpstan analyse

Con artisan podemos generar un alias para que sea más fácil de recordar el comando.

Ahora ya solo queda terminar de configurar el phpstan.neon con el nivel que se quiera, dónde debe revisar, tal vez haya código legacy que no se va a tocar más y que por tanto sería una locura incluir.

Consejos adicionales

Trata de aumentar el nivel de forma gradual, poner un nivel muy estricto de golpe puede llegar a frustrar y lastrar durante mucho tiempo.

Define exactamente donde se debe analizar, por ejemplo si estás empleando una arquitectura hexagonal puede que no te compense analizar el resto de carpetas que se encuentran fuera.

Recuerda ejecutarlo antes de realizar un commit con herramientas como Husky y ejecutarlo también al ejecutarse tu CI/CD.

Fuentes
f3rran - 2024