Aller au contenu principal
Retour au blog

Votre score de santé PHP : comprendre et améliorer chaque axe

Flavien Métivier26 mai 20269 min

Quand un médecin vous dit "votre cholestérol est à 2,4", vous savez que c'est un chiffre, mais sans contexte, il ne vous dit rien. C'est pareil pour la santé de votre code PHP. Voici comment lire et améliorer votre score.

Le score global : de A à F

Le score de santé PHP est une note de 0 à 100, traduite en lettre. Chaque niveau a une interprétation claire :

  • A (90-100) — Codebase saine. Maintenance standard, veille continue. Votre équipe dort sur ses deux oreilles.
  • B (75-89) — Bon état. Quelques améliorations ciblées (2-4 actions). La plupart des projets bien gérés sont ici.
  • C (60-74) — Dette modérée. Plan d'action recommandé (5-10 actions). Ça fonctionne, mais les voyants passent à l'orange.
  • D (40-59) — Dette significative. Intervention prioritaire, budget à prévoir. Chaque mois d'inaction aggrave le problème.
  • F (< 40) — État critique. Refactoring majeur ou réécriture potentiellement plus rentable. Le point de non-retour approche.

Les 6 axes du score

Le score global est une moyenne pondérée de 6 sous-scores. Chaque axe mesure une dimension différente de la santé du projet.

score = architecture * 0.20
      + code_quality * 0.20
      + security    * 0.20
      + performance * 0.15
      + tests       * 0.15
      + dependencies * 0.10

Axe 1 : Architecture (20%)

Ce qui est mesuré : couplage entre modules, cohésion des classes (LCOM), respect des couches architecturales, cycles de dépendances. Outils : Deptrac, PHPMetrics, PHPMD.

Comment améliorer : Extraire les God classes (> 500 lignes) en services dédiés. Résoudre les dépendances circulaires. Respecter les frontières entre couches (Domain ne doit jamais dépendre d'Infrastructure).

  • Excellent : couplage afférent moyen < 8, LCOM < 1.5
  • Bon : couplage 8-15, LCOM 1.5-3
  • Mauvais : couplage > 25, LCOM > 5

Axe 2 : Qualité du code (20%)

Ce qui est mesuré : complexité cyclomatique, duplication de code, erreurs PHPStan, respect PSR-12, code smells. Outils : PHPStan, PHPMD, PHPCPD, PHPCS.

Comment améliorer : Monter PHPStan d'un level à la fois (2-8h par level). Supprimer les blocs dupliqués (0.5-1h chacun). Corriger les code smells les plus fréquents.

  • Excellent : CC moyenne < 4, duplication < 3%, 0 erreur PHPStan
  • Bon : CC 4-7, duplication 3-8%, < 0.5 erreur/fichier PHPStan
  • Mauvais : CC > 12, duplication > 15%, > 2 erreurs/fichier

Axe 3 : Sécurité (20%)

Ce qui est mesuré : failles OWASP Top 10, CVE dans les dépendances, secrets exposés, absence de CSRF. Outils : Psalm (taint analysis), Progpilot, composer audit.

Comment améliorer : Corriger les vulnérabilités critiques en priorité (0.5-1h par occurrence SQLi/XSS). Mettre à jour les dépendances avec CVE connues. Activer CSRF sur tous les formulaires.

Envie d'aller plus loin ?

Réserver un appel découverte

Axe 4 : Performance (15%)

Ce qui est mesuré : requêtes N+1, SELECT *, absence de cache, absence d'index. Outils : Analyse AST + config, regex sur les repositories.

Comment améliorer : Remplacer findAll() par des requêtes avec joins explicites. Activer le query cache Doctrine. Ajouter des index sur les colonnes de filtrage fréquentes.

Axe 5 : Tests (15%)

Ce qui est mesuré : ratio tests/classes, couverture de code, qualité des assertions. Outils : Détection fichiers test, analyse des assertions.

Comment améliorer : Viser un ratio tests/classes > 0.8. Couvrir d'abord le code critique (Domain, Services). Ajouter du mutation testing (Infection) pour vérifier la qualité des tests, pas seulement la quantité.

Axe 6 : Dépendances (10%)

Ce qui est mesuré : versions PHP et framework, dépendances obsolètes, dépréciations, documentation. Outils : Composer, PHPStan, Rector (dry-run).

Comment améliorer : Mettre à jour PHP et le framework vers les versions supportées. Remplacer les dépendances abandonnées. Lancer Rector en dry-run pour identifier les dépréciations.

Plan concret : de D (45) à B (78) en 3 mois

Voici un plan d'action réaliste pour un projet score D avec 100-200 fichiers PHP :

  • Mois 1 — Sécurité et dépendances. Corriger toutes les CVE critiques. Mettre à jour PHP si obsolète. Activer composer audit dans le CI. Gain estimé : +12 points.
  • Mois 2 — Qualité et tests. Installer PHPStan niveau 5, corriger les erreurs. Ajouter des tests sur les 20 classes les plus critiques. Supprimer les 10 plus gros blocs dupliqués. Gain estimé : +12 points.
  • Mois 3 — Architecture et performance. Extraire les 5 God classes principales. Résoudre les cycles de dépendances. Ajouter le cache Doctrine sur les requêtes fréquentes. Gain estimé : +9 points.

Le score de confiance

Chaque sous-score est accompagné d'un indice de confiance : élevé (tous les outils ont tourné sans erreur), moyen (un outil a échoué ou est incomplet) ou faible (structure atypique ou plusieurs échecs). Un score de 75 avec confiance élevée est plus fiable qu'un score de 82 avec confiance faible.

Obtenir votre score

Vous ne pouvez pas améliorer ce que vous ne mesurez pas. Bear Scan analyse votre codebase PHP sur ces 6 axes, calcule votre score et fournit une roadmap d'actions priorisées par ROI — chaque action est chiffrée en effort et en impact sur le score. En 72h, vous savez exactement où vous en êtes et quoi corriger en premier.

Cet article vous a plu ? Partagez-le !

Envie d'aller plus loin ?

Discutons de votre projet et voyons comment je peux vous aider.