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 fait plus, comme:
- affectations de variables inutilisées
- tableaux qui sont affectés à sans être initialisés en premier
- et éventuellement des avertissements de style de code
- ...
php
code-analysis
static-analysis
eswald
la source
la source
Réponses:
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 comprennent:
Les analyseurs de niveau inférieur comprennent:
Les analyseurs d'exécution, qui sont plus utiles pour certaines choses en raison de la nature dynamique des PHP, incluent:
Les bibliothèques de documentation phpdoc et doxygen effectuent une sorte d'analyse de code. Doxygen, par exemple, peut être configuré pour afficher de jolis graphes d'héritage avec graphviz .
Une autre option est xhprof , qui est similaire à xdebug, mais plus léger, ce qui le rend approprié pour les serveurs de production. L'outil comprend une interface basée sur PHP.
la source
php -l
ne peut lire qu'un seul fichier d'entrée à la fois (c'est-à-dire que cela ne fonctionnera pas si vous le faitesphp -l file1.php file2.php
). Au lieu de cela, vous devez utiliser l'-n 1
option, qui indiquexargs
de n'utiliser qu'une seule ligne d'entrée par processus de commande. Au lieu de cela, il s'exécuteraphp -l file1.php
suivi dephp -l file2.php
, séparément. En même temps, vous pouvez utiliser-P <n>
pour exécuter "n" processus à la fois, afin de paralléliser l'exécution:find . -name '*.inc' -o -name '*.php' -print0 | xargs -0 -n1 -P10 php -l
find /your/path -name '*.php' -exec php -l {} \;
fonctionne fiable.php -l
) au travail, vous devez définirdisplay_errors = on
dansphp.ini
, sinon vous ne recevrez qu'un message générique au sujet il y a des erreurs étant de syntaxe , mais pas de détails sur ce que l' erreur (s) ou quelle ligne (s).-d
commutateur. Par exemplephp -l -d display_errors=on $FILENAME
Lint PHP en ligne
PHPLint
Vérification des variables unitarisées . Les liens 1 et 2 semblent déjà très bien le faire.
Je ne peux pas dire que j'en ai utilisé intensivement :)
la source
Pour l'exhaustivité - vérifiez également phpCallGraph .
la source
PHP Mess Detector est génial et rapide.
la source
J'ai essayé d'utiliser $ php -l et quelques autres outils. Cependant, le meilleur de mon expérience (YMMV, bien sûr) est scheck du jeu 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'y a pas de bons packages (sur ma Debian à la menthe, j'ai dû installer libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev et libgimp2.0-dev en premier) mais cela devrait valoir la peine d'être intégré.
Les résultats sont rapportés comme
la source
Voir CloneDR de Semantic Designs , un outil de "détection de clone" qui trouve le code copier / coller / édité. Il trouvera des fragments de code exacts et presque manquants, malgré les espaces, les commentaires et même les renommages de variables. Un exemple de rapport de détection pour PHP est disponible sur le site Web. (Je suis l'auteur).
la source
L'IDE NetBeans vérifie les erreurs de syntaxe, les variables inutilisées et autres. Ce n'est pas automatisé, mais fonctionne bien pour les petits ou moyens projets.
la source
Il existe un nouvel outil appelé nWire pour PHP . Il s'agit d'un plugin d'exploration de code pour Eclipse PDT et Zend Studio 7.x. Il permet une analyse de code en temps réel pour PHP et fournit les outils suivants:
la source
PHP PMD (détecteur de désordre du projet) et PHP CPD (détecteur de copier-coller) comme ancienne partie de PHPUnit
la source
Il existe RIPS - Un analyseur de code source statique pour les vulnérabilités des scripts PHP . Sources de RIPS disponibles sur SourceForge .
Depuis le site RIPS:
la source
Il existe un outil absolument nouveau pour l'analyse de code statique appelé PHP Analyzer .
Parmi de nombreux types d'analyses statiques, il fournit également des fonctionnalités de fixation automatique de base, voir la documentation .
MISE À JOUR: PHP-Analyzer est désormais un projet obsolète mais vous pouvez toujours y accéder sur la branche héritée
la source
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.
https://github.com/facebook/hiphop-php
la source