Drupal y CodeSniffer para mantener la calidad del código de nuestros proyectos

Submitted by Oskar on Mon, 05/04/2021 - 18:03

CodeSniffer es un script de PHP5 que analiza código PHP para detectar violaciones de un conjunto definido de normas de codificación. Analiza el código fuente para ver si cumple o no con un estándar, ya sea Zend, Pear o uno personalizado.

Junta de Andalucía

 

CodeSniffer es una herramienta muy sencilla de usar y con uan instalación muy simple que permitirá mantener los estándares de codificación de nuestros proyectos.
La inslatación es muy sencillo, lo primero comprobamos que tengamos instalado CodeSniffer 

phpcs -i

Tiene que devolver algo parecido a esta salidad, no exactamente la misma ya que yo ya tengo instalada los estándares de Drupal:

The installed coding standards are Zend, PSR1, PSR12, Squiz, PEAR, MySource, PSR2, Drupal, DrupalPractice and VariableAnalysis

Si no tenemos instalado CodeSniffer lo instalamos:

composer require --dev drupal/core-dev

Y comprobamos que ahora si tengamos instalado el CodeSniffer.

 

Una vez instalado tenemos que instalar los estándares de código de Drupal:

composer require --dev dealerdirect/phpcodesniffer-composer-installer

 

Y ya tendríamos instalado lo básico que usar esta herramienta.

Para usar el analizador de CodeSniffer lo ejecutamos de la siguiente manera:

phpcs --standard=Drupal --extensions=php,module web/modules/contrib/

 

Con esta orden o nos indica que esta todo bien o nos devolverá un informe como el siguiente:

FILE: /var/www/html/web/modules/contrib/devel/devel_generate/src/Commands/DevelGenerateCommands.php
---------------------------------------------------------------------------------------------------------------------------------------------
FOUND 11 ERRORS AND 1 WARNING AFFECTING 12 LINES
---------------------------------------------------------------------------------------------------------------------------------------------
 124 | ERROR   | [ ] Parameter tags must be defined first in a doc comment
 133 | ERROR   | [ ] The array declaration extends to column 84 (the limit is 80). The array content should be split up over multiple lines
 145 | ERROR   | [ ] Parameter tags must be defined first in a doc comment
 158 | ERROR   | [ ] The array declaration extends to column 195 (the limit is 80). The array content should be split up over multiple lines
 170 | ERROR   | [ ] Parameter tags must be defined first in a doc comment
 189 | ERROR   | [ ] Parameter tags must be defined first in a doc comment
 214 | ERROR   | [ ] Parameter tags must be defined first in a doc comment
 230 | ERROR   | [ ] The array declaration extends to column 230 (the limit is 80). The array content should be split up over multiple lines
 242 | ERROR   | [ ] Parameter tags must be defined first in a doc comment
 253 | ERROR   | [ ] The array declaration extends to column 112 (the limit is 80). The array content should be split up over multiple lines
 262 | ERROR   | [ ] Parameter tags must be defined first in a doc comment
 270 | WARNING | [x] Inline @var declarations should use the /** */ delimiters
---------------------------------------------------------------------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
---------------------------------------------------------------------------------------------------------------------------------------------


Ojo, he puesto contrib para analizar algo pero lo normal es solo analizar el código creado por nosotros en el proyecto no el código de la comunidad de Drupal.