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
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
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.
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.