Drupal

PHP CodeSniffer con Drupal 7/8

En una entrada anterior vimos cómo utilizar la herramienta PHP CodeSniffer para garantizar que el código de nuestros módulos para Drupal 7 cumplen los estándares de Drupal. Hoy os contamos cómo utilizar la misma herramienta pero para módulos Drupal 7/8. Además, a diferencia de la otra entrada, hoy hablaremos de cómo corregir automáticamente alguno de los errores detectados. Antes de nada, recordemos que es PHP CodeSniffer.

Drauta agencia digitalDrauta

PHP CodeSniffer con Drupal 7/8

¿Qué es PHP CodeSniffer?

PHP_CodeSniffer es una librería que nos permite escanear el código fuente de nuestros proyectos en función de un conjunto de reglas llamadas Sniffer para saber si se cumplen o no. Para Drupal existen dos Sniffer: Drupal y DrupalPractice. El primero comprueba reglas más genéricas y el segundo ayuda a los desarrolladores de módulos a evitar los errores más comunes.

¿Como instalar PHP CodeSniffer?

Para instalarlo en nuestro entorno de desarrollo tendremos que seguir los siguientes pasos (instrucciones para Drupal 7/8 en un entorno Macintosh):

  1. Descargamos la última versión de la rama 2.x de la herramienta en el proyecto de GitHub: https://github.com/squizlabs/PHP_CodeSniffer/tree/2.9
  2. Lo descomprimimos todo en una carpeta, preferiblemente con una ruta corta (por ejemplo en la home de nuestro usuario de Mac). Llegados a este punto sólo nos falta obtener los dos Sniffer de Drupal.
  3. Descargamos la última versión del módulo coder (rama 8.x-2.x): https://www.drupal.org/project/coder. Este módulo no es un módulo normal ya que no hace falta instalación. Sólo nos interesa copiar sus Sniffer en un directorio concreto. Los dos Sniffer sirven para validar código para Drupal 7 y 8.
  4. Una vez descomprimido, copiamos la carpeta coder/coder_sniffer/Drupal dentro de PHP_CodeSniffer/CodeSniffer/Standards.
  5. Una vez hecho, copiamos la carpeta coder/coder_sniffer DrupalPractice dentro de PHP_CodeSniffer/CodeSniffer/Standards.
  6. Editamos bash_profile con el pedido vi~/.bash_profile y añadimos las tres líneas del recuadro en el archivo (IMPORTANTE: deberá cambiar la ruta al PHP_CodeSniffer en función del lugar donde lo hayáis instalado vosotros). Una vez añadidas las dos líneas, guardamos el archivo y ejecutamos el comando source~/.bash_profile para que los cambios tengan efecto.
    alias drupalcs="php /Users/drauta/PHP_CodeSniffer/scripts/phpcs 
    --standard=Drupal --extensions='php,module,inc,install,test,profile,theme,css,info,txt,md'"
    
    alias drupalcsp="php /Users/drauta/PHP_CodeSniffer/scripts/phpcs 
    --standard=DrupalPractice --extensions='php,module,inc,install,test,profile,theme,css,info,txt,md'"
    
    alias drupalcbf="php /Users/rcodina/PHP_CodeSniffer/scripts/phpcbf 
    --standard=Drupal --extensions='php,module,inc,install,test,profile,theme,css,info,txt,md'"
  7. Vamos al directorio del módulo que queremos escanear y hacemos las comprobaciones necesarias con los pedidos drupalcs (Sniff Drupal), drupalcsp (Sniff DrupalPractice) y drupalcbf (basado en Sniff Drupal). Al ejecutar cualquiera de las dos primeros pedidos, obtendremos un listado de errores/avisos de nuestros archivos PHP. Una vez que estos pedidos no devuelvan ningún mensaje, querrá decir que nuestro archivo/proyecto cumple ya con todos los estándares de Drupal. En cambio, el tercer pedido corrige automáticamente algunos de los problemas detectados por Sniff Drupal (identificación del código, colocación de llaves, espacios entre operadores, etc). En el recuadro de abajo podemos ver cómo ejecutar los tres pedidos.
    drupalcs NOM_FITXER
    drupalcs *
    drupalcsp NOM_FITXER
    drupalcsp *
    drupalcbf NOM_FITXER
    drupalcbf *

Más información:

https://www.drupal.org/node/1419988
https://www.drupal.org/node/1587138
https://www.drauta.com/herramientas-de-soporte-para-el-desarrollo-drupal-php-codesniffer

¿Quieres empezar un nuevo proyecto con nosotros?

¿Necesitas servicios para tu web? Descubre como te podemos ayudar y no dudes en contactar con nosotros.