Escribir mejor código de WordPress: PHPStan
En la publicación más reciente de esta serie (que ciertamente es de hace algún tiempo), hablé extensamente sobre Composer y su archivo de bloqueo.
Recomiendo leer los dos artículos anteriores porque Composer eventualmente jugará un papel en este material que esta y futuras publicaciones compartirán. Pero si opta por no ponerse al día con ellos (o ya está familiarizado con Composer), la esencia de las publicaciones anteriores es, respectivamente, la siguiente:
No recomiendo consultar el directorio de proveedores en su repositorio. Eso puede convertirse en un directorio enorme más tarde y puede socavar el propósito completo de Composer.
El objetivo es asegurarse de que todos ejecuten la misma versión de las dependencias del proyecto, no versiones anteriores, ni versiones más nuevas, sino la misma versión.
Dicho esto, existen numerosas dependencias o paquetes que podemos instalar que nos ayudan a asegurarnos de que estamos escribiendo código de la mejor calidad posible.
Claro, algunos de estos pueden tener la forma de algo así como estándares de codificación, pero en realidad son más reglas que elementos para escribir código de alta calidad (aunque no creo que deban dejarse fuera de la discusión, simplemente omitidos). en este momento 🙃).
Volviendo a las herramientas en cuestión: ¿Cuáles son algunas herramientas que ayudan a escribir código de WordPress de alta calidad? Voy a compartir algunos de mis favoritos y voy a hablar sobre cómo podemos ejecutarlos todos contra una base de código.
Primero, echemos un vistazo al análisis estático con PHPStan.
Mejor código de WordPress con PHPStan
¿Qué es el análisis estático, de todos modos?
Primero, unas pocas palabras sobre el análisis estático. Es decir, ¿qué es? Es un bocado, por un lado:
El análisis de código estático (también conocido como análisis de código fuente) generalmente se realiza como parte de una revisión de código (también conocida como prueba de caja blanca) y se lleva a cabo en la fase de implementación de un ciclo de vida de desarrollo de seguridad (SDL).
El análisis de código estático comúnmente se refiere a la ejecución de herramientas de análisis de código estático que intentan resaltar posibles vulnerabilidades dentro del código fuente ‘estático’ (no en ejecución) mediante el uso de técnicas como el análisis de corrupción y el análisis de flujo de datos.
Piénsalo de esta manera: es una forma de analizar un programa en busca de posibles errores que quizás no veas cuando trabajes en el código base.
Es decir, hay problemas, errores, problemas de seguridad, que pueden estar presentes pero que no puede detectar por varias razones (la menor de las cuales es que está demasiado cerca del código).
Sin embargo, con el tiempo, la comunidad de desarrollo ha aprendido formas de analizar código, generar conjuntos de reglas y crear herramientas para ayudar a encontrar exactamente todo lo anterior.
Análisis estático de código centrado en WordPress
Y aquí es donde entra en juego PHPStan.
Como se mencionó, el objetivo del paquete es identificar errores o fallas que existen en su código antes de que alguien que no sea un desarrollador lo use, resaltarlos y brindarle la oportunidad de corregirlos.
Debido a que herramientas como esta examinan una base de código (en lugar de ejecutar el código), no siempre es posible obtener una imagen clara. Esto significa que podemos obtener falsos positivos.
Sin embargo, más sobre esto en un momento.
Si está interesado en comenzar a ejecutar PHPStan en su base de código, es fácil. Después de instalarlo, solo recuerde configurarlo para que no busque en el vendordirectorio o, digamos, en el núcleo de WordPress.
En su lugar, haga que examine su código.
Instalando PHPStan
Primero, en su composer.jsonarchivo, agregue la siguiente línea en la require-devsección:
"phpstan/phpstan": "^0.11.12"
Luego ejecuta composer updateen tu terminal.
Una vez instalado, puede ejecutarlo en un archivo individual, un directorio o un conjunto de directorios. Si ha leído mis publicaciones anteriores sobre la organización del código, entonces sabe que soy fanático de mantener la mayoría del código fuente del proyecto src, puede ejecutar algo como esto:
$ vendor/bin/phpstan analyse src
Esto generará una salida basada en lo que encuentre la utilidad.
¿Recuerdas antes cuando dije que puede encontrar cosas como falsos positivos? Aquí hay un resumen más detallado de lo que puede ver:
- Argumentos adicionales pasados a funciones (por ejemplo, la función requiere dos argumentos, el código pasa tres)
- Se pasan argumentos adicionales a las funciones print/sprintf (por ejemplo, la cadena de formato contiene un marcador de posición, el código pasa dos valores para reemplazar)
- Errores obvios en código muerto
- Comportamiento mágico que necesita ser definido.
Todo lo anterior directamente desde el repositorio.
Aquí es donde los niveles de regla pueden marcar la diferencia, aunque es posible que se requieran algunos ajustes para llegar al nivel adecuado para su equipo o su proyecto.
¿Qué pasa con el análisis para WordPress?
Viktor Szépe compartió este recurso conmigo (algo de su autoría, en realidad) y creo que es algo relevante y útil. La idea del paquete es simple:
Resuelve todos los problemas que tuve durante el análisis del código para WordPress.
No está mal, ¿verdad?
Analiza tu código
Independientemente de su proyecto, la organización de su código o el nivel en el que ejecuta esta utilidad en particular, el objetivo siempre es mejorar el nivel de calidad del código de WordPress que estamos escribiendo.
Instalar esto como un paquete de Composer y luego ejecutarlo en su srcdirectorio es un paso en la dirección correcta.
Como se indicó anteriormente, voy a compartir algunas otras herramientas y luego compartiré cómo ejecutarlas todas contra una base de código antes de enviar el código a un repositorio.
Nota
Si tiene algún problema al intentar configurar el paquete, Dave Mackey me contactó con un problema similar y su solución.
