Coder
Biblioteca PHP CodeSniffer para revisiones automatizadas de código Drupal y correcciones de estándares de codificación.
coder
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
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.
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.
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>
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.
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