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/srcAxe 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-analysisVotre 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=80Axe 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-runLe 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.
Votre dette technique s'accumule ?
Audit complet en 10 jours. Recommandations priorisées et actionnables.