Chez Neocraft, nous développons des applications personnalisées avec PHP/Laravel. Nous apprécions les fonctionnalités dynamiques du langage PHP, mais nous aimons également effectuer une analyse statique rigoureuse de notre code avec PHPStan. Cet outil permet d'éviter les bugs et nous aide à améliorer la qualité globale du code, renforçant ainsi notre confiance dans le code que nous écrivons.
Continuez votre lecture pour en savoir plus sur l'analyse de code PHPStan que nous utilisons depuis 2022 !
Depuis les premières versions de PHPStan, je suis un fervent défenseur de l'introduction d'un tel outil d'analyse statique dans nos projets PHP. Cela remonte à 2022, lorsque nous utilisions déjà PHPStan v1.9.0 pour notre plus grand projet CodeIgniter4. La version 1.9.0 signifiait que l'outil en était encore à ses débuts et n'était pas considéré comme stable. Même cette version précoce nous a été d'une aide précieuse pour écrire un code plus robuste pour nos clients, car nous avons appris à résoudre les cas limites de l'outil.
Le 27 Avril dernier, PHPStan a publié la version 2.1 tant attendue. Elle comprend de nombreuses nouvelles fonctionnalités et améliorations, et propose également PHPStan ElePHPants
Parmi les nombreuses améliorations apportées, on peut citer :
Introduction du niveau = 10 (plus strict sur les types mixtes)
Nouveau type list<T>
Réduction de la consommation de mémoire (et du stockage en cache)
Validation du type de balise @var PHPDoc en ligne
Mise à niveau en douceur : PHPStan v1.12 + règles strictes + indicateurs de pointe se comportent comme PHPStan v2.0
Pour plus de détails techniques, consultez l'article de blog officiel sur la sortie de PHPStan 2.0.
Cas test : gains de performance
Pour l'un des projets de test, nous avons voulu tester les améliorations de performances annoncées par PHPStan v2.0.
Il s'agit d'un ancien projet codeIgniter4 composé de 3 100 fichiers PHP et d'environ 288 000 lignes de code (sans compter les commentaires ni les lignes vides). PHPStan est configuré avec son extension PHPUnit, qui contribue à améliorer encore l'analyse statique de ce projet.
Voici quelques tests préliminaires de PHPStan v1.12 par rapport à l'exécution avec les fonctionnalités pré-v2.0 activées.
Configuration des tests : le dossier cache de PHPStan a été supprimé avant chaque exécution ; l'utilisation de la mémoire et le temps d'exécution indiqués ici sont les meilleurs résultats obtenus sur 3 exécutions.
v1.12 | pre-v2.0 | difference | |
|---|---|---|---|
Execution time | 9m 56s | 4m 3s | - 5m 50s (-60%) |
Memory usage | 3.1 GB | 1.54 GB | - 1.47 GB (-50%) |
Les améliorations sont impressionnantes pour notre projet.
Ces chiffres amélioreront les performances de nos pipelines CI/CD et l'expérience globale des développeurs lorsqu'ils travaillent sur de nouvelles modifications.



