2011-05-15 14 views
32

Estoy buscando hacer un análisis de código estático de un proyecto PHP existente, y estoy teniendo problemas para entender las distinciones entre PHP_CodeSniffer, PHPMD y PHP Depend. ¿Son simplemente alternativas al mismo problema, o se complementan entre sí de alguna manera? ¿Por qué un desarrollador puede elegir uno sobre el otro?PHP_CodeSniffer, PHPMD o PHP Depen

Respuesta

52

copia de Shameless http://phpqatools.org

PDEPEND

PDEPEND puede generar un gran conjunto de métricas de software a partir de una base de código dado. Estos valores se pueden usar para medir la calidad de un proyecto de software y ayudan a identificar las partes de una aplicación donde se debe aplicar una refactorización de código.

phpmd

código fuente exploraciones phpmd PHP y busca problemas potenciales, tales como posibles errores, código muerto, código subóptima y expresiones excesivamente complicadas.

phpcs

phpcs tokenises PHP, JavaScript y CSS y detecta violaciónes de un conjunto definido de normas de codificación. Es una herramienta de desarrollo esencial que garantiza que su código permanezca limpio y consistente. También puede ayudar a prevenir algunos errores semánticos comunes cometidos por los desarrolladores.

Así que no, no son solo alternativas. PDepend y PMD se centran en las métricas del software, mientras que PHPCS define reglas basadas en patrones en el flujo de tokens. A PDepend no le importa lo más mínimo encontrar infracciones en el estándar de codificación. Deberías usar los tres. Si es posible en su servidor de Integración Continua, por ejemplo Jenkins.

+0

Gracias por publicar una respuesta tan clara, y por la vergüenza positiva para alentarme a comenzar a usar un servidor de CI. – jmans

+4

Después de haber configurado recientemente los tres (y más) en Jenkins para nuestros proyectos de PHP, puedo recomendar encarecidamente las tres herramientas. –

+1

Todavía el uso de pdepend adicionalmente a phpmd no está claro. Phpmd también genera métricas (y tiene un plugin espléndido para Jenkins) y se puede usar en tiempo real en PHPStorm. ¿Qué podría hacer para mí lo que no puedo obtener de phpmd? –