PHP_CodeSniffer, PHPMD o PHP Depende

3 minutos de lectura

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

Copia desvergonzada de http://phpqatools.org

depender

pdepend puede generar un gran conjunto de métricas de software a partir de un código base 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

phpmd escanea el código fuente de PHP y busca posibles problemas, como posibles errores, código muerto, código subóptimo y expresiones demasiado complicadas.

phpcs

phpcs tokeniza archivos PHP, JavaScript y CSS y detecta violaciones de un conjunto definido de estándares de codificación. Es una herramienta de desarrollo esencial que asegura que su código permanezca limpio y consistente. También puede ayudar a prevenir algunos errores semánticos comunes que cometen los desarrolladores.

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

  • Gracias por publicar una respuesta tan clara y por la vergüenza positiva que me animó a comenzar a usar un servidor CI.

    – jmans

    15 mayo 2011 a las 20:13

  • Habiendo configurado recientemente las tres (y más) en Jenkins para nuestros proyectos PHP, puedo recomendar de todo corazón las tres herramientas.

    –David Harkness

    2 de junio de 2011 a las 1:07

  • Aún no está claro el uso de pdepend además de phpmd. Phpmd también genera métricas (y tiene un complemento espléndido para Jenkins) y se puede usar en tiempo real en PHPStorm. ¿Qué haría pdepend por mí lo que no puedo obtener de phpmd?

    – Alejandro Palamarchuk

    23 de diciembre de 2013 a las 11:45

  • @AlexanderPalamarchuk bueno, ¿no es obvio a partir de la documentación? pdepend.org/documentation/software-metrics/index.html es bastante diferente de phpmd.org/rules/index.html. A excepción de NPath y Cylcomatic Complexity, hay poca superposición.

    – Gordon

    23 de diciembre de 2013 a las 15:51

  • @Gordon Y también cosas como “Número de métodos”, “Líneas de código”, “Acoplamiento entre objetos”, etc. Quiero decir que, lógicamente, estas herramientas parecen bastante similares. Corregiría mi opinión de que sí, depender proporciona características para las métricas del paquete y puede considerarse como una razón para usar en lugar de phpmd. Pero juntos es bastante molesto. Tienes que configurar los mismos parámetros en dos productos diferentes. Además depender no se puede integrar en PhpStorm, por lo que es difícil controlar sus inspecciones sobre la marcha. Así que no veo cómo usarlo en Integración Continua.

    – Alejandro Palamarchuk

    30 de diciembre de 2013 a las 16:31


¿Ha sido útil esta solución?