Aller au contenu principal
Retour au blog

Audit de code PHP : méthodologie complète en 6 axes

Flavien Métivier11 novembre 202510 min

Auditer un projet PHP, ce n'est pas lancer PHPStan et regarder le nombre d'erreurs. Un audit technique complet couvre 6 axes, chacun avec ses métriques, ses outils et ses seuils. Voici la méthodologie que nous appliquons chez The Bearded Bear pour nos audits Bear Scan.

Axe 1 : Architecture et design

L'architecture est le squelette de votre application. Un squelette mal formé, et chaque nouvelle fonctionnalité sera plus douloureuse que la précédente.

  • Ce qu'on mesure — Couplage entre modules, cohésion des classes, respect des couches (MVC, hexagonal), cycles de dépendances
  • Outils — Deptrac (règles de dépendances), PhpMetrics (couplage/cohésion), PHPMD (complexité)
  • Seuils — Complexité cyclomatique < 10 par méthode, couplage afférent/efférent équilibré, zéro cycle de dépendance
# Analyse de l'architecture avec Deptrac
docker run --rm -v $(pwd):/app deptrac/deptrac analyse

# Métriques complètes avec PhpMetrics
docker run --rm -v $(pwd):/app phpmetrics/phpmetrics --report-html=report/ /app/src

Axe 2 : Qualité du code et complexité

La qualité du code impacte directement la vitesse de développement future. Du code complexe, c'est du code coûteux à modifier.

  • Ce qu'on mesure — Complexité cyclomatique, duplication de code, code smells, conformité PSR-12
  • Outils — PHPStan (level max), Psalm, PHPMD, PHPCPD (duplication), PHP-CS-Fixer
  • Seuils — PHPStan level 8+ sans erreur, zéro block dupliqué > 30 lignes, indice de maintenabilité > 65
# Analyse statique complète
docker run --rm -v $(pwd):/app phpstan/phpstan analyse --level=max src/

# Détection de duplication
docker run --rm -v $(pwd):/app php phpcpd src/

Axe 3 : Sécurité et vulnérabilités

La sécurité n'est pas un « nice to have ». Une seule injection SQL ou une faille XSS peut coûter bien plus qu'un audit.

  • Ce qu'on mesure — OWASP Top 10, CVE dans les dépendances, secrets hardcodés, CSRF, injection SQL
  • Outils — Psalm (taint analysis), composer audit, Progpilot, grep/regex pour secrets
  • Seuils — Zéro CVE critique, zéro secret dans le code, zéro SQL brut non paramétré
# Vérifier les vulnérabilités des dépendances
docker run --rm -v $(pwd):/app composer audit

# Analyse de taint (flux de données non sûrs)
docker run --rm -v $(pwd):/app vimeo/psalm --taint-analysis

Votre dette technique s'accumule ?

Demander un audit

Axe 4 : Performance et optimisation

  • Ce qu'on mesure — Requêtes N+1, SELECT * inutiles, absence de cache, requêtes lentes
  • Outils — Symfony Profiler, Doctrine debug toolbar, analyse de requêtes manuelles
  • Seuils — Zéro N+1 détecté, cache activé en production, temps de réponse P95 < 200ms

Axe 5 : Tests et couverture

  • Ce qu'on mesure — Couverture de code, ratio tests/code, qualité des assertions, mutation score
  • Outils — PHPUnit (coverage), Infection (mutation testing)
  • Seuils — Coverage >= 80%, MSI (Mutation Score) >= 70%, ratio assertions/tests > 2
# Coverage avec PHPUnit
docker run --rm -v $(pwd):/app -e XDEBUG_MODE=coverage \
  php vendor/bin/phpunit --coverage-text

# Mutation testing
docker run --rm -v $(pwd):/app \
  vendor/bin/infection --min-msi=70 --min-covered-msi=80

Axe 6 : Dépendances et maintenabilité

  • Ce qu'on mesure — Versions PHP et framework, packages obsolètes, deprecations, documentation
  • Outils — Composer outdated, Rector dry-run (deprecations), analyse composer.json
  • Seuils — Zéro package avec CVE, PHP supporté (>= 8.1), framework dans fenêtre LTS
# Packages obsolètes
docker run --rm -v $(pwd):/app composer outdated --direct

# Détection de deprecations avec Rector
docker run --rm -v $(pwd):/app vendor/bin/rector process --dry-run

Le rapport : de l'analyse aux actions

Un audit sans recommandations actionnables est inutile. Le rapport Bear Scan produit un score global de A à F (moyenne pondérée des 6 axes) et une roadmap priorisée par ROI : chaque action est chiffrée en effort et en impact.

  • A (85-100) — Codebase saine. Maintenance standard.
  • B (70-84) — Bon état. 2-4 actions ciblées.
  • C (55-69) — Dette modérée. Plan d'action recommandé.
  • D (40-54) — Dette significative. Intervention prioritaire.
  • E (25-39) — État critique. Refactoring majeur ou migration.
  • F (0-24) — État alarmant. Réécriture potentiellement plus rentable.

Chaque point perdu a une solution chiffrée. C'est la philosophie de Bear Scan : un diagnostic technique objectif, avec des actions concrètes et un budget estimé pour chacune. Découvrir Bear Scan.

Cet article vous a plu ? Partagez-le !

Votre dette technique s'accumule ?

Audit complet en 10 jours. Recommandations priorisées et actionnables.