Usar PHP CodeSniffer con WordPress instalar y usar las reglas de WordPress

Si acaba de unirse a la serie, hemos estado discutiendo el tema de los olores de código, cómo refactorizarlos y las herramientas disponibles para ayudarnos a automatizar parte de la monotonía que conlleva hacerlo, especialmente dentro de la programación PHP..

Si no ha leído los dos primeros artículos de la serie, lo recomiendo ya que cubren algunos requisitos previos que tenemos en su lugar antes de seguir adelante con el resto del artículo..

Los artículos son:

  1. Usando PHP CodeSniffer con WordPress: Entendiendo los olores de código
  2. Usando PHP CodeSniffer con WordPress: Instalando y usando PHP CodeSniffer

En resumen, los artículos anteriores presentarán el concepto de olores de código, que hemos definido como los siguientes:

[A] olor de código, también conocido como mal olor, en el código de programación de computadoras, se refiere a cualquier síntoma en el código fuente de un programa que posiblemente indique un problema más profundo. 

Y lo guiaré a través de los pasos necesarios para instalar PHP CodeSniffer en su máquina.

Pero si lo ha logrado hasta ahora, asumo que es un desarrollador de WordPress, y está interesado en configurar PHP CodeSniffer de manera que pueda detectar cualquier problema en su código en relación con los Estándares de codificación de WordPress..

¡Eso es bueno! Porque en el resto de este artículo, eso es exactamente lo que vamos a cubrir.

Prerrequisitos

Esta debería ser una lista muy corta. Si has seguido la serie hasta este punto, debes tener:

  • una versión de PHP (preferiblemente 5.6.10 o posterior)
  • PHP CodeSniffer
  • Compositor

Todo esto está cubierto en detalle a lo largo de los artículos anteriores de la serie, pero si ha llegado tan lejos y se siente cómodo con la línea de comandos, esto debería ser un juego de niños en comparación con lo que hemos hecho hasta ahora..

Con todo lo dicho, vamos a empezar.

Las reglas de WordPress para PHP CodeSniffer

Primero, localice las reglas de los estándares de codificación de WordPress en GitHub. Son fáciles de encontrar.

Puede leer todo sobre los detalles del proyecto en la página del proyecto, pero lo más importante que me gustaría compartir es el siguiente:

Este proyecto es una colección de reglas PHP_CodeSniffer (sniffs) para validar el código desarrollado para WordPress. Asegura la calidad del código y el cumplimiento de las convenciones de codificación, especialmente las normas oficiales de codificación de WordPress..

Me gustaría llamar su atención sobre la frase que hace referencia a las "Normas oficiales de codificación de WordPress". Tenga en cuenta que estas reglas se basan en los estándares de codificación de WordPress. Es decir, no puedes referenciarlos oficialmente..

Si está buscando una manera de ver las reglas que define WordPress, consulte este artículo en el Codex. Es fácil de seguir, fácil de leer, pero mucho para recordar. Afortunadamente, tenemos el conjunto de reglas vinculado anteriormente.

Lo importante a tener en cuenta es que incluso si no está familiarizado con las reglas, el CodeSniffer encontrará los problemas con su código y le notificará lo que necesita corregir. Aunque no tiene que leer el artículo del Codex, a veces puede ayudar a identificar lo que se necesita en función de los errores o advertencias que genera el rastreador..

1. Instalar las reglas de WordPress

Suponiendo que haya instalado correctamente PHP CodeSniffer, agreguemos las reglas de WordPress al software. Para este tutorial, voy a hacer todo a través de la línea de comandos para ser lo más agnóstico posible de la plataforma. Voy a ofrecer algunas palabras con respecto a los IDE y las reglas al final de la serie..

Abra su Terminal y navegue hasta donde tenga instalada su copia de PHP CodeSniffer. Si has estado siguiendo esta serie de tutoriales, entonces probablemente recuerdes que tenemos un compositor.json archivo que tirará de esto para nosotros. Si no, recuerda crear compositor.json en la raíz de su proyecto y agregue esto al archivo:

"require": "squizlabs / php_codesniffer": "2. *"

Una vez hecho esto, corre $ actualización del compositor desde tu Terminal y tendrás todo lo que necesitas para ponerte en marcha. Para verificar la instalación, ejecute el siguiente comando:

$ vendor / bin / phpcs --version

Y deberías ver algo como la siguiente salida:

PHP_CodeSniffer versión 2.6.0 (estable) por Squiz (http://www.squiz.net)

Perfecto. A continuación, instalemos las reglas de WordPress. Ya que estamos usando Composer (y continuaremos haciéndolo), esto es muy fácil de hacer.

Ejecute el siguiente comando desde el directorio raíz de su proyecto:

compositor create-project wp-coding-standards / wpcs: dev-master --no-dev

Tenga en cuenta que es posible que se le solicite la siguiente pregunta:

¿Desea eliminar el historial VCS (.git, .svn ...) existente? [Y, n]?

Si sabes lo que estás haciendo, siéntete libre de seguir adelante y seleccionar 'n'; de lo contrario, estarás bien golpeando 'y'.

2. Agregue las reglas a PHP CodeSniffer

Ahora que PHP CodeSniffer está instalado y las reglas de WordPress están instaladas, debemos asegurarnos de que PHP CodeSniffer esté al tanto de nuestro nuevo conjunto de reglas. Para hacer esto, necesitamos ingresar el siguiente comando en la línea de comandos. 

Desde la raíz de su directorio de proyectos, ingrese el siguiente comando:

$ vendor / bin / phpcs --config-set installed_paths wpcs

Para verificar que se hayan agregado las nuevas reglas, podemos pedirle a PHP CodeSniffer que nos informe los conjuntos de reglas que actualmente tiene disponibles. En la Terminal, ingrese el siguiente comando:

$ vendor / bin / phpcs -i

Y deberías ver el siguiente resultado (o algo muy similar):

Los estándares de codificación instalados son MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, WordPress, WordPress-Core, WordPress-Docs, WordPress-Extra y WordPress-VIP

Observe en la línea anterior que tenemos varios conjuntos de reglas con respecto a WordPress. Bastante limpio, ¿no? Por supuesto, veamos cómo esto se acumula cuando ejecutamos los conjuntos de reglas contra un complemento como Hola muñequita.

3. Ejecutando PHP CodeSniffer contra proyectos de WordPress

Suponiendo que está trabajando en un directorio que incluye un complemento de WordPress, puede omitir el siguiente paso. Si, por otro lado, lo haces. no tiene una copia de un script, archivo, tema o complemento de WordPress instalado en el directorio del proyecto, continúe y copie uno en el directorio de su proyecto ahora.

Como se mencionó, estaremos probando el Hola muñequita enchufar.

Para ejecutar PHP CodeSniffer con las reglas de WordPress contra los archivos en el directorio del complemento, ingrese el siguiente comando en la Terminal:

$ vendor / bin / phpcs --standard = WordPress hello-dolly

Esto dará como resultado una salida que debe corresponder a lo que ve aquí:

ARCHIVO: /Users/tommcfarlin/Desktop/tutsplus_demo/hello-dolly/hello.php -------------------------------- -------------------------------------- ERRORES ENCONTRADOS 14 QUE AFECTAN 14 LÍNEAS ------ -------------------------------------------------- -------------- 2 | ERROR | Falta breve descripción en doc comentario 5 | ERROR | Debe haber exactamente una línea en blanco después del archivo | | comentario 6 | ERROR | Línea vacía requerida antes del comentario de bloque 15 | ERROR | Debe usar los comentarios de estilo "/ **" para una función | | comentario 46 | ERROR | Los comentarios en línea deben terminar en paradas completas, exclamación | | marcas o signos de interrogación 49 | ERROR | Los comentarios en línea deben terminar en paradas completas, exclamación | | marcas o signos de interrogación 53 | ERROR | Los comentarios en línea deben terminar en paradas completas, exclamación | | marcas, o signos de interrogación 54 | ERROR | Debe usar los comentarios de estilo "/ **" para una función | | comentario 56 | ERROR | Se espera que lo siguiente sea una función de escape (ver | | Codex para 'Validación de datos'), no '"

$ elegido

"'59 | ERROR | Los comentarios en línea deben terminar en puntos completos, marcas de exclamación o signos de interrogación 62 | ERROR | Los comentarios en línea deben terminar en puntos completos, marcas de exclamación o signos de interrogación 63 | ERROR | use los comentarios de estilo "/ **" para una función | | comentario 64 | ERROR | Los comentarios en línea deben terminar en puntos completos, signos de exclamación o signos de interrogación 67 | ERROR | Lo siguiente que se espera que sea una función de escape (consulte | Códice para 'Validación de datos'), no '"| | ' ----------------------------------------------------------------------

Por supuesto, algunas de estas cosas pueden cambiar dependiendo de cuando estés leyendo este tutorial..

Los errores deben ser bastante claros en cuanto a lo que se debe arreglar:

  • La primera columna denota la línea en la que existe el problema.
  • La segunda columna determina si hay un error o una advertencia.
  • La tercera columna explica el problema y lo que se espera del código..

Tenga en cuenta que aunque estos son errores o advertencias, el código obviamente funcionará. Pero llevemos esto de extremo a extremo y veamos cómo es arreglar un complemento, posiblemente el más popular ya que viene con cada instalación de WordPress, y revisar las diferencias en la calidad del código..

4. Refactorización Hola muñequita

Tenga en cuenta que el complemento, antes de comenzar a trabajar en él, incluye el siguiente código fuente:

Hola muñequita en la parte superior derecha de la pantalla de administración en cada página. Autor: Matt Mullenweg Versión: 1.6 Autor URI: http://ma.tt/ * / function hello_dolly_get_lyric () / ** Estas son las letras de Hello Dolly * / $ lyrics = "Hola, Dolly Bueno, hola, Dolly Es es tan bueno tenerte de vuelta donde perteneces. Pareces bien, Dolly. Puedo decirte, Dolly. Todavía estás brillando, todavía estás amontonando. Todavía estás yendo fuerte. Sentimos que la habitación se mece. tocando en la banda Una de tus viejas canciones favoritas de cuando era así, llévatela, amigos. Encuéntrale una vuelta vacía, amigos. Dolly nunca se irá de nuevo. Hola, Dolly. Bien, hola, Dolly. Es tan bueno tenerte de vuelta donde. Tu perteneces. Estás mirando bien, Dolly, puedo decirlo, Dolly. Todavía estás brillando, todavía estás abarrotada. Todavía estás fuerte. Sentimos que la habitación se mueve. Mientras la banda toca. Uno de tus viejos. canciones favoritas de cuando Golly, gee, fellas Encuéntrenle una rodilla vacante, Dolly nunca se irá Dolly nunca se irá Dolly nunca se irá de nuevo "; // Aquí lo dividimos en líneas $ lyrics = explode ("\ n", $ lyrics); // Y luego elegir aleatoriamente una línea de retorno wptexturize ($ lyrics [mt_rand (0, count ($ lyrics) - 1)]);  // Esto simplemente hace eco de la línea elegida, la ubicaremos más tarde, la función hello_dolly () $ chosen = hello_dolly_get_lyric (); eco "

$ elegido

"; // Ahora configuramos esa función para que se ejecute cuando la acción admin_notices se llama add_action ('admin_notices', 'hello_dolly'); // Necesitamos algo de CSS para posicionar la función de párrafo dolly_css () // Esto asegura que el posicionamiento también es bueno para los idiomas de derecha a izquierda $ x = is_rtl ()? 'left': 'right'; echo " "; add_action ('admin_head', 'dolly_css');?>

Debería ser relativamente fácil de seguir, ya que utiliza solo algunas funciones básicas de PHP y Matt ha hecho un buen trabajo al comentar el código..

Pero dados los 14 errores que encontró el CodeSniffer, vamos a refactorizar el complemento. Teniendo en cuenta los errores que presentaron y lo que espera ver, abordemos cada uno de ellos.

Una vez hecho esto, el plugin debe tener el siguiente aspecto:

Hola muñequita en la parte superior derecha de la pantalla de administración en cada página. * Autor: Matt Mullenweg * Versión: 1.6 * Autor URI: http://ma.tt/ * / / ** * Define la letra de 'Hello Dolly'. * * @return string Una línea aleatoria de la letra de la canción. * / function hello_dolly_get_lyric () / ** Estas son las letras de Hello Dolly * / $ lyrics = "Hola, Dolly Bueno, hola, Dolly. Es tan bueno tenerte de vuelta a donde perteneces. Te estás viendo bien, Dolly I puedo decir, Dolly Todavía estás brillando, todavía estás amontonando Todavía estás yendo fuerte Sentimos que la sala se tambalea Mientras la banda toca Una de tus viejas canciones favoritas de cuando era así, llévala. , muchachos, encuéntrenla en una vuelta vacía, muchachos, Dolly nunca se irán de nuevo. Hola, Dolly. Bien, hola, Dolly. Es tan bueno tenerte de vuelta a donde perteneces. todavía resplandeciendo, sigues amontonando Todavía estás yendo fuerte. Sentimos que la habitación se tambalea. Mientras la banda toca. Una de tus viejas canciones favoritas de Golly, caramba, amigos. Encuéntrale una rodilla vacante, muchachos. Dolly nunca se irá Dolly nunca se irá Dolly nunca más se irá "; // Aquí lo dividimos en líneas. $ lyrics = explode ("\ n", $ lyrics); // Y luego elige aleatoriamente una línea. return wptexturize ($ letras [mt_rand (0, count ($ letras) - 1)]);  add_action ('admin_notices', 'hello_dolly'); / ** * Esto solo hace eco de la línea elegida, la ubicaremos más adelante. Esta función está * configurada para ejecutarse cuando se llama a la acción admin_notices. * / function hello_dolly () $ elegido = hello_dolly_get_lyric (); eco "

$ elegido

"; // WPCS: XSS OK. Add_action ('admin_head', 'dolly_css'); / ** * Agregue algo de CSS para posicionar el párrafo. * / Function dolly_css () / ** * Esto asegura que el posicionamiento también es bueno para los idiomas de derecha a izquierda. * / $ x = is_rtl ()? 'left': 'right'; echo " "; // WPCS: XSS OK.

Observe que el complemento continúa funcionando y el código es un poco más limpio. Por último, verifiquemos que esto pase la prueba PHP CodeSniffer. Vamos a volver a ejecutar el código que usamos anteriormente para evaluar inicialmente el complemento..

$ vendor / bin / phpcs --standard = WordPress hello-dolly

Y la salida que vemos:

Skyhopper5: tutsplus_demo tommcfarlin $

Exactamente: no debe haber salida. En su lugar, debería ser un retorno al símbolo del sistema estándar.

Excelente. El plugin ha sido estándar. Esta es la razón por la que tener un rastreador de código es tan valioso: encuentra los errores en su código según las reglas que define y luego informa de cualquier error que pueda existir..

En última instancia, esto garantiza que está liberando el código escrito de la más alta calidad en un sitio de nivel de producción. Ahora, esto no significa que deba evitar las pruebas unitarias u otros tipos de pruebas, ni tampoco significa que no existan errores. Solo significa que su código es de alto nivel.

Conclusión

Y con eso, concluimos la serie sobre el uso de PHP CodeSniffer. Recuerde que a lo largo de la serie, hemos cubierto la idea de los olores de código, cómo refactorizarlos y qué herramientas están disponibles cuando trabajamos con aplicaciones PHP..

En este artículo, vimos cómo podemos usar un conjunto proporcionado de reglas para los estándares de codificación de WordPress para evaluar nuestro código mientras trabajamos en un proyecto nuevo o existente. Tenga en cuenta que algunos IDE admiten la capacidad de ejecutar las reglas al escribir código.

Aunque eso está fuera del alcance de este tutorial en particular, puede encontrar recursos para esto en varios lugares de la web. Simplemente busque su IDE por nombre, determine su soporte para PHP CodeSniffer, y luego asegúrese de instalar las reglas de WordPress como hemos detallado en este tutorial..

Si te ha gustado este artículo o esta serie, quizás te interese consultar otras cosas que he escrito tanto en mi página de perfil como en mi blog. También puedes seguirme en Twitter en @tommcfarlin, donde a menudo hablo y comparto varias prácticas de desarrollo de software en el contexto de WordPress..

Dicho esto, no dudes en dejar cualquier pregunta o comentario en el feed a continuación y trataré de responder a cada una de ellas..

Recursos

  • Estándares de codificación de WordPress para PHP CodeSniffer
  • Hola muñequita
  • wptexturize
  • Validación de datos
  • WPCS: XSS OK.