web-dev-qa-db-fra.com

Comment effectuer une analyse de code statique en php?

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:

  • affectations de variables non utilisées
  • des tableaux affectés dans sans être initialisé
  • et éventuellement des avertissements de style de code
  • ...
456
eswald

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.

349
troelskn

_ en lignePHP lint

PHPLint

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 :)

38
Martijn Laarman

Pour être complet - vérifiez également phpCallGraph .

27
Till

Détecteur de mess PHP est génial et rapide.

23
aredridel

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.
17
rjha94

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).

14
Ira Baxter

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.

7
slikts

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:

  • Visualisation de code - Représentation graphique interactive de composants et d'associations.
  • Navigation de code - La vue de navigation unique affiche toutes les associations et fonctionne avec vous pendant que vous écrivez ou lisez du code.
  • Recherche rapide - recherchez au fur et à mesure que vous tapez des méthodes, des champs, un fichier, etc.
6
zvikico

PHP PMD (détecteur de projet) et PHP CPD (détecteur de copier/coller) en tant que partie antérieure de PHPUnit

5
erenon

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.

4
SteAp

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

3
Rostyslav Kinash

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

2
Martin Konecny