Configuración de 'Herramientas de Calidad' en una Imagen de Docker en PHPSTORM

Aquí hay una pregunta que recientemente consideré. Normalmente, instalo herramientas de control de calidad (QA) directamente en mi máquina anfitriona o en la imagen de Docker. Si las herramientas están instaladas en mi máquina anfitriona, no hay problema en configurar PhpStorm.

Si las herramientas están directamente configuradas en la imagen de Docker, tampoco hay problema en usarlas dentro de la imagen. Sin embargo, ¿cómo se puede combinar el poder de PhpStorm y Docker para vincular los dos?

Entonces, aquí está cómo proceder con la instalación de php_codesniffer, Mess Detector, CS Fixer, PSalm, PhpStan.

image

Para los propósitos de nuestro artículo, te daré algunos consejos para añadir a tu Dockerfile o para crear uno especialmente para tu flujo de trabajo de desarrollo. Personalmente, tengo un Dockerfile para manejar todas las versiones de PHP que incluye todas las herramientas que necesito para configurar un stack de desarrollo.

FROM php:7.4.31-apache-buster

ARG COMPOSER_HOME=/composer

RUN composer global require squizlabs/php_codesniffer
RUN composer global require phpmd/phpmd
RUN composer global require friendsofphp/php-cs-fixer  --with-all-dependencies
RUN composer global require vimeo/psalm
RUN composer global require phpstan/phpstan

Puedes usar una imagen especial para la interfaz de línea de comandos (CLI). Personalmente, uso una imagen con Apache. Entonces, monto mi imagen 'qa' cuando la necesito sobrescribiendo el punto de entrada predeterminado con un comando infinito.

version: "3.8"
services:
    qa:
        image: 'devpartitech/php:7.4-apache'
        tty: true
        environment:
            COMPOSER_HOME: '/composer'
        volumes:
          - "./:/var/www/"
        entrypoint: ["/bin/bash", "-c"]
        command: "tail -f /dev/null"

Así que necesitarás configurar los intérpretes. Para esto, ve a Configuración > Herramientas de Calidad y elegiremos la primera opción en la lista, PHP_Code_Sniffer.

image-2

Una vez en la interfaz de configuración de intérpretes, haz clic en el “+” y selecciona “Desde Docker

image-3

Esto es solo un ejemplo que puedes adaptar como desees. Voy a usar mi Docker Compose directamente.

image-4
image-5

Una vez creado, tendrás acceso a la página de configuración. Antes de confirmar, recuerda ejecutar la recarga de tu configuración para que reconozca tu ejecutable de PHP.

image-6
image-7

Si, como yo, has elegido "/composer" como tu COMPOSER_HOME, entonces encontrarás todas las herramientas instaladas en /composer/vendor/bin. Por lo tanto, puedes especificar (ajustar si es necesario) los siguientes valores:
Ruta de PHP_Code_Sniffer: /composer/vendor/bin/phpcs

Ruta a phpcbf: /composer/vendor/bin/phpcbf

Confirma para asegurarte de que todo está en orden.

image-8

Continuemos con el siguiente en la lista: Mess Detector. Simplemente selecciona el intérprete que ya está configurado.

image-9

Ingresa al intérprete y haz clic en el "…".

image-11

Especifica el mapeo de ruta: /composer/vendor/bin/phpmd y ¡listo!

image-10

Continuamos con Mess Detector. Siempre elegimos nuestra configuración en qa-php-7.4 y hacemos clic en “...”. Luego hacemos clic en el "+".

image-13

Especifica la ruta de PHP CS Fixer: /composer/vendor/bin/php-cs-fixer y confirma.

image-14

Procedamos con Psalm. Seguimos usando nuestro intérprete.

image-16
image-17

Ingresa la ruta de psalm: /composer/vendor/bin/psalm y confirma.

image-18

Terminamos con el último de la lista, PHPStan. Lo activamos y hacemos clic en “...”

image-19
image-20

Especifica la ruta de PHPSTAN: /composer/vendor/bin/phpstan, confirma y ya estás listo para continuar.

image-21

¡Y ahí lo tienes! Hemos vinculado todas nuestras herramientas de calidad adecuadamente a nuestro contenedor de Docker.

Ahora puedes probar que todo funciona bien antes de ajustar más tus configuraciones.

image-22
image-23

En la lista, despliega PHP > Herramientas de Calidad y recuerda revisarlas todas:

image-24
image-25

Haz clic en Análisis:

image-26

Todas las observaciones aparecerán directamente en la pestaña "Problemas" de PhpStorm. ¡Ten cuidado si has incluido tu proyecto entero! Podrías preferir incluir solo el directorio src o excluir el directorio vendor a menos que quieras ser abrumado con notificaciones.

¡Y eso es todo! Feliz codificación 😊