Coder

Biblioteca PHP CodeSniffer para revisiones automatizadas de código Drupal y correcciones de estándares de codificación.

coder
354 sites
95
drupal.org

Overview

Coder es una herramienta de desarrollo que proporciona análisis automatizado de calidad de código para proyectos Drupal. Define reglas para PHP_CodeSniffer que aplican los estándares de codificación y las mejores prácticas de Drupal.

A diferencia de los módulos tradicionales de Drupal que proporcionan funcionalidad de interfaz de usuario, Coder opera como una herramienta de línea de comandos integrada en tu flujo de trabajo de desarrollo. Escanea archivos PHP, YAML, JavaScript y otros archivos de código para identificar violaciones de los estándares oficiales de codificación de Drupal y sugiere o aplica correcciones automáticamente.

La biblioteca incluye dos conjuntos de reglas principales: 'Drupal' que aplica los Estándares Oficiales de Codificación de Drupal, y 'DrupalPractice' que verifica las mejores prácticas en el desarrollo de módulos y temas de Drupal. Juntos, estos conjuntos de reglas contienen más de 100 sniffs individuales que cubren comentarios, convenciones de nomenclatura, espacios en blanco, seguridad y más.

Features

  • Aplica los Estándares Oficiales de Codificación de Drupal con más de 65 sniffs que cubren comentarios, clases, convenciones de nomenclatura, semántica, espacios en blanco, archivos, formato, archivos info, funciones, estructuras de control, arrays, atributos y alcance
  • Estándar DrupalPractice con más de 39 sniffs para mejores prácticas incluyendo uso de objetos, llamadas a funciones, prácticas generales, definiciones de funciones, comentarios, archivos info, constantes, variables y validación YAML
  • Corrección automática de código con phpcbf (PHP Code Beautifier and Fixer) para muchas violaciones
  • Soporte para múltiples tipos de archivos: .php, .module, .inc, .install, .test, .profile, .theme, .info, .info.yml, .txt, .md, .yml
  • Detecta funciones obsoletas y patrones de código inseguros
  • Valida la documentación de hooks de Drupal y las firmas de funciones
  • Verifica el uso correcto de las funciones de traducción (t(), st())
  • Valida la estructura del archivo .info.yml y las claves requeridas
  • Se integra con IDEs populares: PhpStorm, VSCode, Atom, Eclipse, Vim, Sublime Text y más
  • Configurable mediante phpcs.xml.dist para ajustes específicos del proyecto
  • Análisis de variables para detectar variables no utilizadas o indefinidas
  • Aprovecha estándares externos: PEAR, PSR-2, PSR-12, Squiz y SlevomatCodingStandard

Use Cases

Verificación de calidad de código pre-commit

Ejecuta phpcs antes de hacer commit del código para asegurar que todos los cambios cumplan con los estándares de codificación de Drupal. Configura un hook pre-commit de Git para ejecutar automáticamente: ./vendor/bin/phpcs --standard=Drupal --extensions=php,module,inc,install,test,profile,theme path/to/changed/files

Pipeline de integración continua

Añade Coder a tu pipeline CI/CD para hacer fallar automáticamente las compilaciones cuando se detecten violaciones de calidad de código. Crea un phpcs.xml.dist en tu repositorio y ejecuta ./vendor/bin/phpcs en tu script de CI para asegurar que todos los miembros del equipo mantengan una calidad de código consistente.

Formateo automático de código

Usa phpcbf (PHP Code Beautifier and Fixer) para corregir automáticamente muchas violaciones de estándares de codificación: ./vendor/bin/phpcbf --standard=Drupal --extensions=php,module web/modules/custom. Esto ahorra tiempo al auto-corregir espacios en blanco, indentación y muchos otros problemas de formato.

Preparación de contribuciones a Drupal.org

Antes de enviar parches o merge requests a proyectos de Drupal.org, ejecuta tanto los estándares Drupal como DrupalPractice para asegurar que tu contribución cumpla con los estándares de la comunidad y tenga mayor probabilidad de aceptación.

Remediación de código legacy

Al trabajar con código Drupal legacy, usa Coder para identificar y corregir sistemáticamente las violaciones de estándares de codificación. Comienza generando un informe de todos los problemas, luego usa phpcbf para correcciones automáticas y aborda manualmente los problemas restantes.

Automatización de revisión de código en equipo

Integra Coder en el proceso de revisión de código de tu equipo. Los revisores pueden enfocarse en la lógica y la arquitectura mientras Coder se encarga de la aplicación de estilo y estándares, reduciendo el tiempo de revisión y asegurando consistencia.

Tips

  • Crea un archivo phpcs.xml.dist en la raíz de tu proyecto para compartir configuraciones consistentes con tu equipo y usar en pipelines de CI
  • Usa ./vendor/bin/phpcbf con las mismas opciones que phpcs para corregir automáticamente muchas violaciones
  • Añade la bandera --colors para salida colorizada en terminal: ./vendor/bin/phpcs --colors --standard=Drupal path/to/code
  • Usa la bandera -s para mostrar nombres de sniffs en la salida, útil para configurar exclusiones: ./vendor/bin/phpcs -s --standard=Drupal path/to/code
  • Ejecuta ambos estándares juntos: ./vendor/bin/phpcs --standard=Drupal,DrupalPractice --extensions=php,module,inc,install,test,profile,theme,info,txt,md,yml web/modules/custom
  • Usa --report=summary para una vista rápida de violaciones por archivo, o --report=diff para ver cambios corregibles
  • Configura la integración de PHP_CodeSniffer de tu IDE para obtener retroalimentación en tiempo real mientras codificas
  • Para proyectos nuevos, aplica tolerancia cero desde el inicio; para proyectos legacy, usa un enfoque de línea base para prevenir nuevas violaciones mientras corriges gradualmente las existentes

Technical Details

Troubleshooting 5
Estándares no encontrados después de la instalación

Ejecuta ./vendor/bin/phpcs -i para verificar que Drupal y DrupalPractice estén listados. Si no lo están, asegúrate de que dealerdirect/phpcodesniffer-composer-installer esté correctamente instalado y que los plugins de Composer estén permitidos en tu composer.json.

Demasiados errores para corregir de una vez

Crea un phpcs.xml.dist con exclusiones de reglas para suprimir temporalmente las reglas que no puedes abordar inmediatamente. Usa <exclude name='Rulename'/> para deshabilitar sniffs específicos y abórdalos incrementalmente.

Errores en código de terceros

Añade entradas exclude-pattern a tu phpcs.xml.dist para directorios vendor, módulos contrib u otro código que no controlas: <exclude-pattern>*/vendor/*</exclude-pattern>

Archivos de plantilla mostrando falsos positivos

Algunos sniffs se excluyen automáticamente de los archivos .tpl.php. Para lógica de plantilla personalizada, puede que necesites añadir exclusiones adicionales en tu configuración.

Problemas de rendimiento en bases de código grandes

Usa la opción --parallel para ejecutar verificaciones en múltiples núcleos de CPU: ./vendor/bin/phpcs --parallel=8 --standard=Drupal path/to/code

Security Notes 4
  • Coder incluye sniffs enfocados en seguridad como PregSecuritySniff para seguridad de regex e InsecureUnserializeSniff para detectar llamadas peligrosas a unserialize()
  • El RemoteAddressSniff verifica el manejo adecuado de direcciones IP remotas para prevenir vulnerabilidades de suplantación de IP
  • DrupalPractice.FunctionCalls.CurlSslVerifierSniff detecta cuando la verificación SSL de CURL está incorrectamente deshabilitada
  • Aunque Coder detecta muchos problemas de seguridad, debería complementar (no reemplazar) herramientas dedicadas de escaneo de seguridad y revisiones manuales de seguridad