Existe-t-il un outil d'analyse statique pour les fichiers source PHP? Le binaire lui-même peut vérifier les erreurs de syntaxe, mais je cherche quelque chose qui en fasse plus, comme:
Exécutez php en mode lint à partir de la ligne de commande pour valider la syntaxe sans exécution:
php -l FILENAME
Les analyseurs statiques de niveau supérieur incluent:
Les analyseurs de niveau inférieur incluent:
Les analyseurs d’exécution, qui sont plus utiles pour certaines choses en raison de la nature dynamique des PHP, comprennent:
Les bibliothèques de documentation phpdoc et doxygen effectuent une sorte d'analyse de code. Doxygen, par exemple, peut être configuré pour rendre les graphes d'héritage de Nice avec graphviz .
Une autre option est xhprof , qui est similaire à xdebug, mais plus légère, ce qui la rend appropriée pour les serveurs de production. L'outil comprend une interface basée sur PHP.
Vérification des variables unitaires . Les liens 1 et 2 semblent déjà très bien faire cela.
Je ne peux pas dire que j'ai utilisé ces techniques de manière intensive :)
Pour être complet - vérifiez également phpCallGraph .
Détecteur de mess PHP est génial et rapide.
J'ai essayé d'utiliser $ php -l et quelques autres outils. Cependant, le meilleur de mon expérience (YMMV, bien sûr) est schéma de l'ensemble d'outils pfff . J'ai entendu parler de pfff sur Quora ( http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool )
Vous pouvez le compiler et l'installer. Il n’existe pas de paquets Nice (sous Debian, j’ai dû installer d’abord les dépendances libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev et libgimp2.0-dev), mais cela devrait valoir le coup.
Les résultats sont rapportés comme
rjha@mint ~ $ ~/sw/pfff/scheck ~/code/github/sc/
login-now.php:7:4: CHECK: Unused Local variable $title
go-automatic.php:14:77: CHECK: Use of undeclared variable $goUrl.
Voir Semantic Designs 'CloneDR , un outil de "détection de clonage" qui trouve le code copier/coller/édité. Il trouvera des fragments de code exacts et proches, malgré les espaces, les commentaires et même les renommages variables. Vous trouverez un exemple de rapport de détection pour PHP sur le site Web. (Je suis l'auteur).
NetBeans IDE recherche les erreurs de syntaxe, les variables inutilisées, etc. Ce n'est pas automatisé, mais fonctionne bien pour les projets de petite ou moyenne taille.
Il y a un nouvel outil appelé nWire pour PHP . C'est un plugin d'exploration de code pour Eclipse PDT et Zend Studio 7.x. Il permet l'analyse de code en temps réel pour PHP et fournit les outils suivants:
PHP PMD (détecteur de projet) et PHP CPD (détecteur de copier/coller) en tant que partie antérieure de PHPUnit
Il existe RIPS - un analyseur de code source statique pour les vulnérabilités dans PHP scripts . Sources de RIPS disponibles sur SourceForge .
Sur le site RIPS:
RIPS est un outil écrit en PHP pour rechercher des vulnérabilités dans les applications PHP à l'aide d'une analyse de code statique. En segmentant et en analysant tous les fichiers de code source, RIPS est capable de transformer le code source de PHP en un modèle de programme et de détecter les récepteurs sensibles (fonctions potentiellement vulnérables) pouvant être altérés par l'entrée utilisateur (influencés par un utilisateur malveillant) le déroulement du programme. Outre la sortie structurée des vulnérabilités trouvées, RIPS offre également un cadre d'audit de code intégré pour une analyse manuelle plus poussée.
Il existe un tout nouvel outil d'analyse de code statique appelé PHP Analyzer .
Parmi de nombreux types d’analyses statiques, il fournit également une fonctionnalité de base de réparation automatique, voir documentation .
MISE À JOUR: PHP-Analyzer est maintenant un projet obsolète, mais vous pouvez toujours y accéder via une branche existante
Vous voudrez peut-être essayer de compiler avec le hiphop de Facebook.
Il effectue une analyse statique sur l'ensemble du projet et peut être ce que vous recherchez.