La forma de realizar el análisis estático de código en php? [cerrado]
-
22-08-2019 - |
Pregunta
¿Hay una herramienta de análisis estático para archivos de código fuente de PHP? El binario en sí mismo puede comprobar si hay errores de sintaxis, pero estoy buscando algo que hace algo más, como:
- asignaciones de variables no utilizadas
- matrices que están asignados a sin ser inicializado primero
- y, posiblemente, de estilo advertencias código
- ...
Solución
Ejecutar PHP en modo de pelusa de la línea de comandos para validar la sintaxis sin ejecución:
php -l FILENAME
analizadores estáticos de nivel superior incluyen:
- php-sat - Requiere http://strategoxt.org/
- PHP_Depend
- PHP_CodeSniffer
- Detector de PHP Mess
- PHPStan
- PHP-CS-Fixer
- Phan
analizadores de nivel inferior son:
- PHP_Parser
- token_get_all (función primitiva)
analizadores de tiempo de ejecución, que son más útiles para algunas cosas debido a PHPS naturaleza dinámica, incluyen:
- Xdebug tiene código de cobertura y traza .
- herramienta trazador PHP utiliza un enfoque estático / dinámico combinado, sobre la base de los rastros de la función de Xdebug.
Las bibliotecas de documentación phpdoc y doxygen realizar una especie de análisis de código. Doxygen, por ejemplo, se puede configurar para hacer buenos gráficos de herencia con graphviz .
Otra opción es xhprof , que es similar a Xdebug, pero más ligero, lo que es adecuado para servidores de producción. La herramienta incluye una interfaz basada en PHP.
Otros consejos
las variables no inicializado comprobar . Enlace 1 y 2 parecen ya de hacer esto muy bien, sin embargo.
No puedo decir que he utilizado ninguno de estos intensamente, sin embargo:)
Para completar -. También puedes ver phpCallGraph
PHP detector Mess es impresionante y rápido.
He intentado usar -l $ php y par de otras herramientas. Sin embargo el mejor en mi experiencia (tu caso es distinto, por supuesto) es de pfff conjunto de herramientas . Me enteré de pfff en Quora ( http://www.quora.com / es-no-un-buen-PHP-pelusa-análisis-herramienta estática )
Se puede compilar e instalarlo. No hay paquetes agradables (en mi menta Debian, tuve que instalar libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev y dependencias primeros libgimp2.0-dev) pero debe valer una intsall.
Los resultados se presentan como
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.
Los controles NetBeans IDE para errores de sintaxis, variables unusued y tal. No es automático, pero funciona bien para los proyectos pequeños o medianos.
Hay una nueva herramienta llamada nWire para PHP . Es un plugin de código de exploración para Eclipse PDT y Zend Studio 7.x Permite el análisis de código en tiempo real para PHP y proporciona las siguientes herramientas:
- visualización de código - representación gráfica interactiva de los componentes y las asociaciones .
- Código de navegación -. Singular vista de navegación muestra todas las asociaciones y trabaja con usted mientras usted escribe o lee el código
- Búsqueda rápida -. Búsqueda a medida que escribe para los métodos, campos, archivo, etc.
PHP PMD (detector lío proyecto) y PHP CPD (detector de goma de la copia) como la primera parte de PHPUnit
Hay RIPS - Un analizador de código fuente estático para las vulnerabilidades de scripts PHP . Fuentes de RIPS disponibles en SourceForge .
Desde el sitio RIPS:
RIPS es una herramienta escrita en PHP para encontrar vulnerabilidades en PHP las aplicaciones que utilizan análisis de código estático. Por tokenizar y analizar todos fuente de los archivos de código RIPS es capaz de transformar el código fuente PHP en una modelo de programa para detectar y sumideros sensibles (potencialmente vulnerables funciones) que pueden ser contaminados por userinput (influenciados por una maliciosa usuario) durante el flujo del programa. Además de la salida del estructurada encontrado vulnerabilidades RIPS también ofrece un marco de auditoría de código integrado para su posterior análisis manual.
No hay absolutamente nueva herramienta para el análisis de código estático llamado PHP Analizador .
Entre los muchos tipos de análisis estático sino que también proporciona la funcionalidad básica de auto-fijación, ver documentación .
ACTUALIZACIÓN: PHP-analizador está obsoleto proyecto, pero todavía se puede acceder a él en la rama legado
Es posible que desee para tratar de compilar con hiphop de Facebook.
Se hace un análisis estático en todo el proyecto, y puede ser lo que estás buscando.