¿Existe una herramienta de análisis estático para archivos fuente PHP? El binario en sí puede verificar si hay errores de sintaxis, pero estoy buscando algo que haga más, como:
- asignaciones de variables no utilizadas
- matrices que se asignan sin inicializarse primero
- y posiblemente advertencias de estilo de código
- ...
php
code-analysis
static-analysis
eswald
fuente
fuente
Respuestas:
Ejecute php en modo lint desde la línea de comandos para validar la sintaxis sin ejecución:
php -l FILENAME
Los analizadores estáticos de nivel superior incluyen:
Los analizadores de nivel inferior incluyen:
Los analizadores de tiempo de ejecución, que son más útiles para algunas cosas debido a la naturaleza dinámica de PHP, incluyen:
Las bibliotecas de documentación phpdoc y doxygen realizan un tipo de análisis de código. Doxygen, por ejemplo, se puede configurar para representar gráficos de herencia agradables con graphviz .
Otra opción es xhprof , que es similar a xdebug, pero más ligera, lo que la hace adecuada para servidores de producción. La herramienta incluye una interfaz basada en PHP.
fuente
php -l
solo puede leer un archivo de entrada a la vez (es decir, no funcionará si lo hacephp -l file1.php file2.php
). En su lugar, debe usar la-n 1
opción, que le indicaxargs
que use solo una línea de entrada por proceso de comando. En cambio, eso hará que se ejecutephp -l file1.php
seguidophp -l file2.php
, por separado. Al mismo tiempo, puede utilizar-P <n>
para ejecutar procesos "n" a la vez, para paralelizar la ejecución:find . -name '*.inc' -o -name '*.php' -print0 | xargs -0 -n1 -P10 php -l
find /your/path -name '*.php' -exec php -l {} \;
Funciona de manera confiable.php -l
) al trabajo, debe establecerdisplay_errors = on
enphp.ini
, de lo contrario sólo recibirá un mensaje genérico sobre la existencia de errores de sintaxis, pero no hay detalles acerca de qué error (s) o qué línea (s).-d
interruptor. Por ejemplophp -l -d display_errors=on $FILENAME
Pelusa PHP en línea
PHPLint
Verificación de variables unitarias . Sin embargo, los enlaces 1 y 2 ya parecen hacerlo bien.
Sin embargo, no puedo decir que he usado ninguno de estos intensivamente :)
fuente
Para completar, también verifique phpCallGraph .
fuente
PHP Mess Detector es impresionante y rápido.
fuente
He intentado usar $ php -l y otras herramientas. Sin embargo, el mejor en mi experiencia (YMMV, por supuesto) es el paquete de herramientas pfff . Escuché sobre pfff en Quora ( http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool )
Puedes compilarlo e instalarlo. No hay paquetes agradables (en mi Debian de menta, tuve que instalar libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev y libgimp2.0-dev primero) pero debería valer la pena un intsall.
Los resultados se informan como
fuente
Vea CloneDR de Semantic Designs , una herramienta de "detección de clones" que encuentra código de copiar / pegar / editado. Encontrará fragmentos de código exactos y casi erróneos, a pesar de los espacios en blanco, comentarios e incluso cambios de nombre variables. Un informe de detección de muestra para PHP se puede encontrar en el sitio web. (Soy el autor)
fuente
El IDE de NetBeans busca errores de sintaxis, variables inusitadas y demás. No está automatizado, pero funciona bien para proyectos pequeños o medianos.
fuente
Hay una nueva herramienta llamada nWire para PHP . Es un complemento de exploración de código 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:
fuente
PHP PMD (detector de desorden de proyecto) y PHP CPD (detector de copiar y pegar) como la parte anterior de PHPUnit
fuente
Hay RIPS: un analizador de código fuente estático para vulnerabilidades en scripts PHP . Fuentes de RIPS disponibles en SourceForge .
Desde el sitio RIPS:
fuente
Existe una herramienta absolutamente nueva para el análisis de código estático llamada PHP Analyzer .
Entre muchos tipos de análisis estático, también proporciona una funcionalidad básica de reparación automática, consulte la documentación .
ACTUALIZACIÓN: PHP-Analyzer ahora es un proyecto obsoleto, pero aún puede acceder a él en la rama heredada
fuente
Es posible que desee intentar compilar con el hiphop de Facebook.
Realiza un análisis estático de todo el proyecto y puede ser lo que está buscando.
https://github.com/facebook/hiphop-php
fuente