TECHNOLOGIES

PHPStan, analyse statique PHP

PHPStan analyse le code PHP sans l'exécuter et détecte les erreurs de type, les appels invalides et les incohérences avant qu'elles n'atteignent la production. Il est activé sur tous nos projets Symfony avec les extensions Doctrine et Symfony.

Cette fiche documente notre configuration type, notre gestion de la baseline et notre intégration dans les pipelines CI/CD.

PHPStan

POURQUOI PHPSTAN

Ce qui en fait notre outil d'analyse de référence

PHPStan est activé sur tous nos projets Symfony. Voici pourquoi il fait partie de notre pipeline CI sans exception.

Détection d'erreurs sans exécution

PHPStan analyse le code source statiquement — sans l'exécuter — et détecte les appels à des méthodes inexistantes, les types incompatibles, les variables non définies et des dizaines d'autres catégories d'erreurs.

Filet de sécurité avant la production

Les erreurs détectées par PHPStan auraient causé des exceptions en production. En les bloquant en pipeline CI, on évite les incidents et on réduit le temps passé à déboguer des problèmes évitables.

Niveaux progressifs (0 à 10)

PHPStan propose 10 niveaux d'analyse de plus en plus stricts. On peut adopter PHPStan sur un projet legacy en démarrant au niveau 0 et monter progressivement sans tout bloquer d'un coup.

Extensions Symfony et Doctrine

Les extensions phpstan-symfony et phpstan-doctrine comprennent les conteneurs de services, les repositories, les entités et les formulaires — PHPStan analyse correctement notre stack sans faux positifs.

Baseline pour les projets legacy

Sur un projet existant avec des erreurs héritées, la baseline capture l'état actuel et PHPStan ne signale que les nouvelles erreurs introduites. Cela permet d'activer l'outil sans bloquer le travail courant.

Intégration PHPStorm native

Le plugin PHPStan pour PHPStorm affiche les erreurs directement dans l'éditeur avant même le push. Les développeurs voient les problèmes au moment où ils les introduisent, pas lors de la revue de code.

NOTRE USAGE

Comment nous utilisons PHPStan chez SmartBooster

Notre approche s'adapte à l'état du projet : niveau max dès le départ sur les nouveaux projets, baseline progressive sur les projets repris.

Niveau max sur les nouveaux projets

Sur tout nouveau projet Symfony, PHPStan est configuré au niveau 8 minimum dès le départ. Le coût est nul quand le code est écrit avec les types dès le début.

Baseline sur les projets existants

Sur les projets repris ou en migration, on génère une baseline initiale pour ne bloquer que les nouvelles régressions. La baseline est réduite progressivement à chaque sprint.

Job bloquant en pipeline CI

PHPStan tourne dans le stage test de nos pipelines GitLab CI. Une erreur PHPStan bloque le merge de la MR — la qualité est structurelle, pas optionnelle.