Comment effectuer une analyse statique de code en php? [fermé]
-
22-08-2019 - |
Question
Y at-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 suis à la recherche de quelque chose qui ne se contente pas, comme:
- affectations de variables inutilisées
- tableaux qui sont assignés sans être initialisé en premier
- et éventuellement des avertissements de style de code
- ...
La solution
Run php en mode-fibre à partir de la ligne de commande pour valider la syntaxe sans exécution:
php -l FILENAME
analyseurs statiques de niveau supérieur comprennent:
- php-SAM. - Nécessite http://strategoxt.org/
- PHP_Depend
- PHP_CodeSniffer
- Détecteur de Mess PHP
- PHPStan
- PHP-CS- Fixateur
- phan
analyseurs de niveau inférieur comprennent:
- PHP_Parser
- token_get_all (fonction primitive)
analyseurs d'exécution, qui sont plus utiles pour certaines choses en raison de la nature dynamique phps, comprennent:
- Xdebug a la couverture du code et rel="noreferrer"> trace.
- Mon PHP Tracer outil utilise une approche statique combinée / dynamique, bâtiment sur les traces de la fonction de Xdebug.
Les bibliothèques de documentation phpdoc et doxygen effectuer une sorte d'analyse de code. Doxygen, par exemple, peut être configuré pour rendre agréables graphes d'héritage avec graphviz .
Une autre option est xhprof , qui est similaire à xdebug, mais plus léger, le rendant approprié pour les serveurs de production. L'outil comprend une interface PHP.
Autres conseils
des variables non initialisées vérifier . Lien 1 et 2 semblent déjà faire très bien, cependant.
Je ne peux pas dire que je l'ai utilisé l'une de ces intensive, cependant:)
Pour être complet -. Jetez également phpCallGraph
PHP détecteur de mess est génial et rapide.
Je l'ai essayé d'utiliser -l php $ et quelques autres outils. Cependant, le meilleur dans mon expérience (YMMV, bien sûr) est Scheck du jeu d'outils de pfff . J'ai entendu parler pfff sur Quora ( http://www.quora.com / Est-il-a-bon-PHP-lint-analyse-outil statique )
Vous pouvez compiler et l'installer. Il n'y a pas de beaux paquets (sur ma menthe Debian, je devais installer libpcre3-dev, OCaml, libcairo-dev, libgtk-3-dev et dépendances libgimp2.0-dev premier), mais il devrait être d'une valeur intsall.
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.
Les contrôles NetBeans IDE pour les erreurs de syntaxe, les variables inutilisées et autres. Il est pas automatisé, mais fonctionne très bien pour des projets de petite ou moyenne.
un nouvel outil appelé nWire pour PHP . Il est un plug-in 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:
- La visualisation de code - représentation graphique interactive des composants et des associations .
- navigation Code -. Vue unique de navigation montre toutes les associations et travaille avec vous pendant que vous écrivez ou lisez le code
- Recherche rapide -. Recherche que vous tapez des méthodes, des champs, fichier, etc
PHP PMD (projet détecteur de mess) et CPD PHP (détecteur de pâte de copie) en tant que première partie de PHPUnit
Il est RIPS - Un analyseur de code source statique pour les vulnérabilités dans les scripts PHP . Sources de RIPS disponibles à SourceForge .
A partir du site RIPS:
RIPS est un outil écrit en PHP pour trouver des vulnérabilités dans PHP applications en utilisant l'analyse de code statique. Par tokenizing et l'analyse syntaxique tous les fichiers de code source de Rips est capable de transformer le code source PHP dans un modèle de programme et de détecter les puits sensibles (potentiellement vulnérables fonctions) qui peuvent être entachées par userinput (influencé par un malveillant utilisateur) pendant le déroulement du programme. En plus de la sortie structurée de trouvé vulnérabilités RIPS offre également un cadre d'audit de code intégré Pour plus d'analyse manuelle.
Il est tout à fait un nouvel outil d'analyse de code statique appelé PHP Analyzer .
Parmi les nombreux types d'analyse statique, il fournit également une fonctionnalité automatique de fixation de base
Vous pouvez essayer de compiler avec hiphop Facebook. Il effectue une analyse statique sur l'ensemble du projet, et peut-être ce que vous cherchez.