Aller au contenu principal
Retour au blog

Comparatif : 5 outils d'audit PHP (et pourquoi aucun ne suffit seul)

Flavien Métivier12 mai 20268 min

Chaque outil d'audit PHP fait bien une chose. Mais aucun ne fait tout. Si tu te fies uniquement à PHPStan pour évaluer la santé de ton code, tu passes à côté de la sécurité, de la complexité et des dépendances obsolètes. Voici un comparatif honnête des 5 outils incontournables — et leurs angles morts.

1. PHPStan — le champion de l'analyse statique

PHPStan est l'outil que tout projet PHP devrait avoir. Il détecte les erreurs de types, les appels de méthodes inexistants, les propriétés non initialisées et bien plus. Avec les extensions Symfony et Doctrine, il comprend ton framework.

  • Forces : 10 niveaux d'analyse progressifs, écosystème d'extensions riche (Symfony, Doctrine, PHPUnit), cache de résultats rapide, output JSON natif.
  • Faiblesses : Ne détecte pas les failles de sécurité (injection SQL, XSS). Ne mesure pas la complexité ou le couplage. Ne dit rien sur la duplication de code.
  • Ce qu'il manque : La sécurité, l'architecture et la maintenabilité.

2. Psalm — taint analysis et type checking

Psalm est le seul outil PHP capable de faire de la taint analysis : il trace le flux des données depuis les entrées utilisateur jusqu'aux requêtes SQL ou aux sorties HTML. C'est la meilleure défense automatisée contre les injections.

  • Forces : Taint analysis unique en PHP, détection de code mort, plugin Symfony, analyse inter-fichiers avancée.
  • Faiblesses : Plus lent que PHPStan sur les gros projets, faux positifs plus fréquents au niveau 1, configuration initiale parfois complexe.
  • Ce qu'il manque : Métriques de complexité, analyse architecturale, détection de duplication.

3. PHP_CodeSniffer — les standards de codage

PHPCS vérifie que ton code respecte un standard de codage : PSR-12, Symfony Coding Standards ou un standard custom. C'est l'outil de conformité.

  • Forces : Large bibliothèque de règles, standards préconfigurés (PSR-12, Symfony), correction automatique avec phpcbf, facile à intégrer en CI.
  • Faiblesses : Ne détecte que les problèmes de style, pas les bugs logiques. Lent sur les très gros projets. Beaucoup de bruit si le projet n'a jamais utilisé de standard.
  • Ce qu'il manque : Tout ce qui n'est pas du style de code — bugs, sécurité, architecture, performance.

4. PHPMetrics — complexité et couplage

PHPMetrics calcule des métriques avancées : complexité cyclomatique, couplage afférent/efférent, LCOM (Lack of Cohesion of Methods), indice de maintenabilité. C'est le seul outil qui te dit si ton code est maintenable à long terme.

  • Forces : Rapport HTML visuel avec graphes interactifs, métriques de Halstead, détection des God classes, analyse de couplage entre modules.
  • Faiblesses : Pas de correction automatique, métriques parfois difficiles à interpréter sans contexte, pas de détection de failles de sécurité.
  • Ce qu'il manque : Sécurité, conformité PSR, détection de bugs logiques.

Votre dette technique s'accumule ?

Demander un audit

5. Progpilot — les vulnérabilités SAST

Progpilot est un outil de SAST (Static Application Security Testing) spécialisé PHP. Il détecte les injections SQL, XSS, RCE, LFI et injections de commandes via l'analyse du flux de données (taint propagation via AST).

  • Forces : Détection des failles OWASP Top 10, analyse par propagation de taint, fonctionne sur du PHP natif sans framework, gratuit et open source.
  • Faiblesses : Faux positifs fréquents, ne comprend pas bien les patterns Symfony/Laravel (Doctrine, Eloquent), développement moins actif que PHPStan ou Psalm.
  • Ce qu'il manque : Qualité de code générale, métriques d'architecture, standards de codage.

Tableau comparatif

Voici ce que couvre (ou ne couvre pas) chaque outil :

  • Bugs/Types : PHPStan et Psalm
  • Sécurité (taint) : Psalm et Progpilot
  • Standards PSR : PHP_CodeSniffer uniquement
  • Complexité/Couplage : PHPMetrics uniquement
  • Duplication : Aucun (il faut PHPCPD en complément)
  • Dépendances/CVE : Aucun (il faut composer audit)

Pourquoi une approche combinée est nécessaire

Aucun outil ne couvre les 6 axes de santé d'un projet PHP : qualité, sécurité, architecture, tests, performance et dépendances. Utiliser PHPStan seul, c'est comme vérifier uniquement la pression des pneus lors d'un contrôle technique.

Le vrai défi n'est pas d'installer 5 outils — c'est de corréler leurs résultats. Quand PHPMetrics signale une God class avec un LCOM de 8, et que Progpilot détecte une injection SQL dans cette même classe, tu sais que c'est une bombe à retardement : un code complexe, mal structuré ET vulnérable. Séparément, chaque finding semble gérable. Ensemble, ils racontent une histoire critique.

L'autre problème des outils individuels est la fatigue d'alertes. PHPStan génère 200 warnings, PHPCS en sort 500, Progpilot détecte 30 vulnérabilités potentielles. Sans priorisation, les développeurs ignorent tout et le rapport finit dans un tiroir.

C'est exactement le problème que Bear Scan résout. Il orchestre PHPStan, Psalm, PHPCS, PHPMetrics, Progpilot, PHPCPD, Deptrac et composer audit dans un pipeline unifié, puis synthétise les résultats en un score de santé A-F avec une roadmap priorisée par ROI. Tu obtiens un diagnostic complet au lieu de 8 rapports fragmentés à interpréter toi-même.

Cet article vous a plu ? Partagez-le !

Votre dette technique s'accumule ?

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