Configurazione di 'Quality Tools' in un'immagine Docker di PHPSTORM

Ecco una domanda su cui ho riflettuto di recente. Di solito, installo gli strumenti QA direttamente sul mio host o nell'immagine Docker. Se gli strumenti sono installati sul mio host, non ci sono problemi a configurare PhpStorm.

Se gli strumenti sono configurati direttamente nell'immagine Docker, non ci sono problemi ad usarli all'interno dell'immagine. Tuttavia, come si può combinare la potenza di PhpStorm e Docker per collegare i due?

Allora, ecco come procedere con l'installazione di php_codesniffer, Mess Detector, CS Fixer, PSalm, PhpStan.

image

Per il nostro articolo, ti darò alcuni consigli da aggiungere al tuo Dockerfile o per crearne uno appositamente per il tuo flusso di lavoro di sviluppo. Personalmente, ho un Dockerfile per gestire tutte le versioni PHP che include tutti gli strumenti di cui ho bisogno per impostare uno stack di sviluppo.

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

Puoi usare un'immagine speciale per la CLI. Personalmente, uso un'immagine con Apache. Quindi, monto la mia immagine 'qa' quando ne ho bisogno sovrascrivendo l'entrypoint predefinito 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"

Quindi sarà necessario configurare gli interpreti. Per questo, vai su Impostazioni > Strumenti di Qualità e sceglieremo il primo della lista, PHP_Code_Sniffer.

image-2

Una volta nella interfaccia di configurazione degli interpreti, clicca sul “+” e seleziona “Da Docker

image-3

Questo è solo un esempio che puoi adattare a tuo piacimento. Io userò direttamente il mio Docker Compose.

image-4
image-5

Una volta creato, avrai accesso alla pagina di configurazione. Prima di confermare, ricordati di eseguire il ricaricamento della tua configurazione affinché riconosca il tuo eseguibile PHP.

image-6
image-7

Se, come me, hai scelto "/composer" come tua COMPOSER_HOME, allora troverai tutti gli strumenti installati in /composer/vendor/bin. Quindi, puoi specificare (aggiusta se necessario) i seguenti valori:
Percorso PHP_Code_Sniffer: /composer/vendor/bin/phpcs

Percorso a phpcbf: /composer/vendor/bin/phpcbf

Conferma per assicurarti che tutto sia a posto.

image-8

Continuiamo con il prossimo della lista: Mess Detector. Basta selezionare l'interprete che è già configurato.

image-9

Inserisci l'interprete e clicca su "…".

image-11

Specifica il mapping dei percorsi: /composer/vendor/bin/phpmd e sei a posto!

image-10

Continuiamo con Mess detector. Scegliamo sempre la nostra configurazione su qa-php-7.4 e clicchiamo “...”. Poi clicchiamo sul "+".

image-13

Specifica il percorso PHP CS Fixer: /composer/vendor/bin/php-cs-fixer e conferma.

image-14

Procediamo con Psalm. Continuiamo ad usare il nostro interprete.

image-16
image-17

Inserisci il percorso psalm: /composer/vendor/bin/psalm e conferma.

image-18

Terminiamo con l'ultimo della lista, PHPStan. Lo attiviamo e clicchiamo su "…"

image-19
image-20

Specifica il percorso PHPSTAN: /composer/vendor/bin/phpstan, conferma, e sei a posto.

image-21

Ed ecco fatto! Abbiamo collegato correttamente tutti i nostri strumenti di qualità al nostro container Docker.

Ora puoi verificare che tutto funzioni bene prima di perfezionare le tue impostazioni.

image-22
image-23

Nell'elenco, espandi PHP > Strumenti di Qualità e ricordati di controllarli tutti:

image-24
image-25

Clicca su Analizza:

image-26

Tutte le osservazioni appariranno direttamente nella scheda "Problemi" di PhpStorm. Attenzione se hai incluso l'intero progetto. Potresti preferire di includere solo la cartella src o escludere la directory vendor a meno che tu non voglia essere sommerso di notifiche!

E questo è tutto! Buona programmazione 😊