Retour au Blog

PHPStan 2.0 : Niveau 10 et nouvelles fonctionnalités pour un code impeccable

PHPStan 2.0 : Niveau 10 et nouvelles fonctionnalités pour un code impeccable

Le monde de l'analyse statique PHP vient de franchir un nouveau cap avec la sortie de PHPStan 2.0. Cette version majeure apporte de nombreuses améliorations, notamment un niveau d'analyse encore plus strict (le niveau 10), une meilleure prise en charge des types génériques et une réduction de la consommation mémoire. Découvrez comment PHPStan 2.0 peut vous aider à écrire du code PHP plus propre, plus sûr et plus performant.

PHPStan 2.0 : Un guide complet pour les développeurs

Le niveau 9 de PHPStan offre une analyse rigoureuse en détectant des problèmes complexes comme les incohérences de typage, les propriétés non initialisées, et les conditions inutiles, idéal pour des projets matures cherchant un code de qualité.

Le niveau 10 va encore plus loin avec des vérifications détaillées, incluant la détection des dépendances inutiles et des appels dynamiques non sécurisés, parfait pour des projets critiques nécessitant une rigueur maximale.

Les développeurs d'extensions PHPStan y trouveront des informations essentielles. Ils découvriront en détail les modifications apportées à l'API de PHPStan, ainsi que les meilleures pratiques pour mettre à jour leurs extensions. Ce guide leur permettra d’adapter rapidement leurs outils pour assurer une compatibilité avec PHPStan 2.0 et tirer parti des nouvelles fonctionnalités offertes par cette version.

PHPStan 10 : Une nouvelle dimension dans l'analyse statique de PHP

Un nouveau défi s'adresse aux développeurs ambitieux prêts à relever le niveau maximum. Le niveau 6 demande déjà d'ajouter des types manquants, mais certaines situations peuvent permettre de contourner cette exigence, comme l’utilisation d’une ligne de base ou l’appel à du code tiers mal typé. Cela peut laisser des types inconnus dans votre projet, souvent considérés implicitement comme mixed, que seul le niveau 10 est capable de détecter avec précision.

Quant au niveau 9, il met l’accent sur les valeurs explicitement typées mixed dans le code et souligne leurs risques. Bien qu’il s’agisse d’une avancée importante, il présente encore des lacunes en laissant passer certaines erreurs. Ce niveau, connu sous le nom interne checkExplicitMixed, détecte et signale les problèmes liés à ce type spécifique, encourageant les développeurs à sécuriser davantage leur code. Avec le niveau 10, ces analyses sont poussées encore plus loin pour garantir un code sans ambiguïtés.

Des listes plus précises pour un code plus sûr

Les tableaux PHP sont très flexibles, mais cette flexibilité peut parfois rendre le code plus difficile à comprendre et à maintenir. PHPStan introduit le concept de "liste" pour représenter des tableaux dont les clés sont des entiers consécutifs, commençant à 0. Cela permet de mieux exprimer l'intention du développeur et d'éviter les erreurs courantes liées aux tableaux.

Exemple : 

Fonction PHP typée add avec annotation @phpstan-pure

Cette annotation indique clairement que la fonction doFoo attend un tableau d'entiers avec des clés numériques consécutives.

Autre exemple : 

Fonction PHP printFruits annotée avec @param

En utilisant list<string>, vous indiquez clairement que la fonction printFruits attend un tableau de chaînes de caractères avec des clés numériques.

Moins de mémoire, plus de vitesse

Il est désormais devenu un outil bien plus performant, passant d’un consommateur gourmand en ressources à un moteur optimisé. Grâce à des améliorations majeures, notamment sur les arbres abstraits (AST) et l’élimination des fuites de mémoire, il a permis de réduire considérablement les temps d’analyse, parfois divisés par trois. 

Oui, c'est exact. La version 2.0 de PHPStan a considérablement amélioré les performances d'analyse de code. Par exemple, l'analyse du code de PrestaShop 8.0, qui prenait auparavant 9 minutes avec 2 cœurs CPU, ne prend plus que 3 minutes, tout en consommant environ 50 à 70 % de mémoire en moins.

Diagramme illustrant la structure des relations entre blocs TryCatch et instructions (Stmt)

PHPStan vérifie la cohérence de vos annotations @var

Lorsque vous utilisez une annotation @var, vous indiquez à PHPStan le type de données que vous attendez. PHPStan 2.0 va vérifier si cette information correspond bien au type réel de la variable. En cas de divergence, PHPStan vous signalera une erreur potentielle, vous aidant ainsi à éviter les bugs.

Exemple :

Exemple de code PHP avec une fonction doFoo et une erreur liée à l'incompatibilité de types string|null

Écrivez du code plus propre et plus fiable avec les fonctions pures

Les fonctions pures offrent de nombreux avantages :

  • Testabilité: Les fonctions pures sont plus faciles à tester, car leur comportement est prédictible.
  • Réutilisabilité: Elles peuvent être utilisées dans différents contextes sans risque d'effets de bord indésirables.
  • Parallélisme: Les fonctions pures peuvent être exécutées en parallèle sans risque de conflits.

En utilisant l'annotation @phpstan-pure, vous vous assurez que vos fonctions respectent ces principes et contribuent ainsi à améliorer la qualité de votre code.

Exemple :

Fonction PHP add annotée @phpstan-pure, ajoutant deux entiers et retournant un entier

Cette fonction est pure, car elle ne modifie pas l'état du programme et renvoie toujours la somme de ses arguments.

Un cache plus léger pour des analyses plus rapides

Il a profondément revu son système de cache dans la version 2.0 pour améliorer ses performances d’analyse. En allégeant la quantité de données stockées en cache et en optimisant les structures de données, ils sont particulierement plus éfficace pour des projets de grande envergure, notamment :

  • Des analyses plus rapides grâce à un cache plus léger et mieux structuré.
  • Une consommation de mémoire réduite, permettant de traiter des projets plus volumineux.
  • Un gain d’espace disque en supprimant les données inutiles du cache.

PHPStan : La référence incontournable pour les développeurs PHP

Porté par une communauté passionnée et un écosystème d'extensions florissant, il s'impose comme une référence dans le monde du développement PHP. Grâce au soutien continu de PHPStan Pro et de ses sponsors, il bénéficie d'un développement constant. L'ajout du support de PHP 8.4, prévu pour fin 2024, marque une nouvelle étape dans son évolution et témoigne de son ambition de rester à la pointe de la technologie.

Peluches ElePHPant, mascottes emblématiques de PHP et de PHPStan

Mais ce n'est pas tout ! Pour célébrer cette nouvelle version, PHPStan arbore désormais sa mascotte éléphant, rejoignant ainsi la famille des éléphants PHP !

Quel que soit votre projet, Efficience IT met son expertise PHP à votre service pour vous accompagner vers la réussite.

Grâce à une équipe passionnée et à l'écoute, nous utilisons PHP pour transformer vos idées en solutions performantes et sur-mesure.

Vous souhaitez en savoir plus sur l’évolution de PHP au cours des trois dernières années et découvrir les perspectives passionnantes qui s'annoncent pour cet outil incontournable ? La Fondation PHP fête ses trois ans d’existence, l’occasion parfaite pour explorer les avancées technologiques qu’elle a impulsées et les innovations à venir.

Rejoignez-nous dans cette aventure et laissez-nous écrire ensemble l’avenir de vos projets numériques.

Contactez-nous !
Je veux en savoir plus !