Comment effectuer l'analyse statique de code en php?
Est-il un outil d'analyse statique pour la source de vos fichiers PHP? Le binaire lui-même pouvez vérifier pour les erreurs de syntaxe, mais je suis à la recherche de quelque chose qui n'est plus, comme:
- inutilisés affectations de variables
- tableaux qui sont affectés dans sans être initialisé première
- et, éventuellement, le code de style avertissements
- ...
- Site web connexe: Le PHP Assurance de la Qualité de la Chaîne (phpqatools.org) et l'autre statique l'outil est PHP_CompatInfo.
- Droitier-o: fermé par SI, une fois clairement ce genre de réponse est incroyablement utile.
- d'accord. Cette question est cruciale. php lint (php -l fichier) ne parvient pas à fournir à l'autre partie d'exécuter le chargement automatique, assurez-vous d'une fonction appelée existe, que les variables existent, les propriétés de l'objet existe. etc.
- Phan (pour php-7) a tout juste de sortir.
- utile, mais pas, à proprement parler, sur le sujet. softwarerecs.stackexchange.com est certainement plus sur le sujet de l'emplacement. Bien sûr, l'ironie ici est que beaucoup plus de développeurs sont familiers avec, de SORTE que c'est de la fratrie...
- Le fait que de nombreuses personnes de trouver ce type de question utile est probablement pourquoi softwarerecs existe maintenant. Il semblait sur le sujet en arrière quand c'était la seule pile de site d'échange. Maintenant qu'il y a une place pour elle, est-il sensé de migrer?
- Fermée en raison à la gâchette facile et ferme. Bah!
- Le jour de Noël trop 🙁
Vous devez vous connecter pour publier un commentaire.
Tourner php en charpie en mode ligne de commande pour valider la syntaxe sans exécution:
php -l FILENAME
De niveau supérieur analyseurs statiques comprennent:
De niveau inférieur analyseurs comprennent:
Exécution des analyseurs de plus utile pour certaines choses en raison de PHPs nature dynamique, comprennent:
Les bibliothèques de documentation phpdoc et doxygen effectuer une sorte d'analyse de code. Doxygen, par exemple, peut être configuré de manière à rendre agréable l'héritage des graphes avec des graphviz.
Une autre option est xhprof, qui est similaire à l'extension xdebug, mais plus léger, le rendant approprié pour les serveurs de production. L'outil comprend un PHP-base de l'interface.
php -l
comme ceci:find /your/path -name '*.php' | xargs -r php -l
ne fonctionne pas de manière fiable. Il manque souvent des fichiers avec des erreurs de syntaxe dans les.--error-severity
option entièrement.php -l
ne peut lire un fichier d'entrée à la fois (c'est, il ne fonctionnera pas si vous nephp -l file1.php file2.php
). Au lieu de cela, vous devez utiliser le-n 1
option, qui racontexargs
utiliser une seule ligne de saisie pour la commande de processus. Qui sera plutôt la cause pour exécuterphp -l file1.php
suivie parphp -l file2.php
, séparément. Dans le même temps, vous pouvez utiliser-P <n>
l'exécution de "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 {} \;
travaux fiable.php -n -l filename.php
à rendre l'utilisation de valeurs par défaut pour les paramètres ini lors de l'exécution de contrôles sur un grand nombre de fichiers.php -l
) au travail, vous devez définirdisplay_errors = on
dansphp.ini
, sinon vous n'obtiendrez un message générique à propos de l'existence d'erreurs de syntaxe, mais pas de détails sur ce message d'erreur(s) ou quelle(s).-d
commutateur. E. g.php -l -d display_errors=on $FILENAME
--dry-run
option).find . -name "*.php" -print0 | xargs -0 -n1 -P8 php -l
En ligne PHP peluches
PHPLint
Non initialisé les variables de vérifier. Lien 1 et 2 semblent déjà faire, il suffit de bien, quoique.
Je ne peux pas dire que j'ai utilisé l'un de ces intensivement, bien 🙂
Pour l'exhaustivité -- vérifiez également phpCallGraph.
PHP Mess Detector 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 scheck des outils pfff. J'ai entendu parler de ouf sur Quora (http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool)
Vous permet de compiler et de l'installer. Il n'y a pas de jolies paquets (sur mon mint Debian, j'ai dû installer libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev et libgimp2.0-dev d'abord les dépendances), mais il doit être en valeur un intsall.
Les résultats sont présentés comme
Voir Sémantique Designs " CloneDR, un "clone" de détection de l'outil qui trouve des copier/coller/modifié le code. Il exacts et à proximité de miss fragments de code, en dépit des espaces, des commentaires et même variable renommages. Un exemple de rapport de détection de PHP peuvent être trouvés sur le site. (Je suis l'auteur).
NetBeans IDE vérifie les erreurs de syntaxe, unusued variables. Il n'est pas automatisé, mais fonctionne très bien pour les petits et moyens projets.
- Il un nouvel outil appelé nWire pour PHP. C'est une exploration du code du plugin pour Eclipse PDT et Zend Studio 7.x. Il permet en temps réel d'analyse de code pour PHP et fournit les outils suivants:
PHP PMD (projet mess detector) et PHP DPC (copier coller le détecteur) comme l'ancienne partie de PHPUnit
Il est RIP - statique du code source de l'analyseur de vulnérabilités dans les scripts PHP. Sources de RIP disponibles à SourceForge.
De la DÉCHIRE site:
Il n'y a absolument nouvel outil pour l'analyse statique de code appelé L'Analyseur PHP.
Parmi de nombreux types de l'analyse statique, il fournit également la base de l'auto-fixation de la fonctionnalité, voir la documentation.
Mise à JOUR: PHP-Analyseur est maintenant obsolète projet, mais vous pouvez toujours y accéder à partir de l'héritage de la branche
Vous pouvez essayer de compiler avec Facebook du hip-hop.
Il fait une analyse statique sur l'ensemble du projet, et peut-être ce que vous cherchez.
https://github.com/facebook/hiphop-php