Ricerca nel sito web

Come creare una pipeline CI GitLab per analizzare staticamente i progetti PHP


L'esecuzione dell'analisi statica sul codice consente di risparmiare tempo scoprendo problemi nascosti. PHPStan è uno strumento di analisi statica per PHP che ti aiuta ad aumentare la qualità della tua base di codice. Ecco come eseguire PHPStan all'interno delle tue pipeline GitLab CI.

È utile eseguire regolarmente PHPStan mentre crei nuove funzionalità. Usarlo localmente ti porta solo così lontano però. Fai affidamento sul fatto che gli altri membri del tuo team siano disciplinati quanto te. L'integrazione dell'analisi statica in un flusso di lavoro CI/CD garantisce che il codice non possa essere unito se interromperebbe il ramo principale del progetto.

Ottenere la configurazione con PHPStan

Devi prima aggiungere PHPStan al tuo progetto. Abbiamo già una guida dettagliata sull'installazione e la configurazione di PHPStan, quindi tratteremo solo le basi qui.

Innanzitutto, usa Composer per installare PHPStan:

composer require --dev phpstan/phpstan

Successivamente, crea un file di configurazione di base phpstan.neon nel tuo progetto:

class="co4">parameters:class="co3">
  levelclass="sy2">: maxclass="co4">
  pathsclass="sy2">:
    - src
    - testsclass="co3">
  tmpDirclass="sy2">: .tmp

La directory temporanea viene sovrascritta per assistere la memorizzazione nella cache di GitLab CI, configurazione di seguito.

Ora puoi eseguire PHPStan localmente per verificare che la tua configurazione funzioni:

vendor/bin/phpstan analyse

In questa fase, non importa se i test vengono superati.

Configurazione di GitLab per CI

Assicurati di aver inviato il tuo codice a un progetto sul tuo server GitLab. Dovrai verificare che la funzione Pipelines sia abilitata per il tuo progetto: se vedi CI/CD nella barra laterale sinistra, sei a posto.

Per abilitare il sistema CI del tuo progetto, fai clic sul pulsante Impostazioni nella barra laterale. Espandi la sezione Visibilità, caratteristiche del progetto, autorizzazioni e abilita la funzione Pipelines.

Se utilizzi le Merge Request (MR) di GitLab in modo disciplinato, ora puoi configurare GitLab per impedire che le MR vengano unite a meno che non abbiano una pipeline corretta. Espandi la sezione delle impostazioni Unisci richieste e seleziona il pulsante di attivazione Le pipeline devono riuscire. Fare clic su Salva per confermare. Questo ti impedirà di unire accidentalmente un MR quando PHPStan fallisce contro le sue modifiche.

Per utilizzare GitLab CI, devi avere un GitLab Runner definito a livello di istanza, gruppo o progetto. I corridori sono responsabili dell'esecuzione dei lavori CI creati dal sistema GitLab.

Utilizzeremo l'immagine PHPStan Docker per eseguire PHPStan nella nostra pipeline CI. Ciò richiede l'uso di un GitLab Runner che utilizza l'esecutore Docker. Se ti trovi su un'istanza autogestita e devi configurare un nuovo Runner, segui le indicazioni nel nostro articolo sulla configurazione di GitLab CI.

Creazione di una pipeline CI GitLab

GitLab CI è configurato utilizzando un file .gitlab-ci.yml nella root del tuo progetto. Le pipeline CI supportano più fasi sequenziali. I lavori di ogni fase vengono eseguiti in parallelo. Per i nostri scopi di esecuzione di PHPStan, abbiamo bisogno di una singola fase che esegua un lavoro.

class="co4">stagesclass="sy2">:
  - phpstan
class="co4">
cache:class="co3">
  keyclass="sy2">: $CI_COMMIT_REF_SLUGclass="co4">
  pathsclass="sy2">:
    - .tmp/
    - vendor/
class="co4">
phpstan:class="co3">
  stageclass="sy2">: phpstanclass="co3">
  imageclass="sy2">: ghcr.io/phpstan/phpstanclass="co4">
  scriptclass="sy2">:
    - analyse --no-progress --error-format gitlab > phpstan.jsonclass="co4">
  artifacts:class="co3">
    whenclass="sy2">: alwaysclass="co4">
    reports:class="co3">
      codequalityclass="sy2">: phpstan.json

Questo file GitLab CI contiene tutto ciò di cui abbiamo bisogno per eseguire PHPStan all'interno della nostra pipeline. Definiamo uno stage, phpstan, contenente un lavoro chiamato anche phpstan. Il lavoro utilizza l'immagine Docker PHPStan ufficiale dal registro del contenitore GitHub.

La cache GitLab CI è configurata per memorizzare nella cache le directory .tmp e vendor. Ciò migliorerà le prestazioni delle esecuzioni successive sullo stesso ramo. La cache verrà ripristinata automaticamente. Tornando al nostro phpstan.neon, abbiamo impostato tmpDir su .tmp per questo motivo: significa che ora possiamo farvi riferimento con sicurezza nell'elemento della configurazione configurazione della cache della pipeline.

Inoltre, memorizziamo nella cache vendor per evitare di reinstallare inutilmente le dipendenze di Composer a ogni esecuzione. Tieni presente che non è necessario eseguire composer install manualmente: l'immagine ufficiale di PHPStan Docker lo richiama automaticamente.

Il flag --error-format viene passato al comando analyse di PHPStan. Questo configura PHPStan per creare un file JSON nel formato accettato dal report sulla qualità del codice di GitLab. Giù nella sezione artifacts, questo file viene caricato su GitLab dopo il completamento del lavoro.

Utilizzo della pipeline

Esegui il commit del tuo .gitlab-ci.yml e invia al tuo server GitLab. Il sistema CI dovrebbe ora avviarsi e creare la tua prima pipeline. Utilizzare il collegamento CI/CD nella barra di navigazione a sinistra per visualizzare l'avanzamento della pipeline.

Se ottieni un segno di spunta verde, i test di PHPStan sono stati superati! Il tuo ramo è in buono stato ed è pronto per essere unito. Se appare una croce rossa, hai altro lavoro da fare. PHPStan e GitLab CI ti hanno appena impedito di unire codice potenzialmente danneggiato.

È possibile ottenere l'elenco degli errori facendo clic sull'icona di download a destra della pipeline. Selezionare l'artefatto di qualità del codice PHPStan per ottenere il report JSON degli errori rilevati da PHPStan.

Utilizzo con richieste di unione

La lettura manuale del JSON non è un'ottima esperienza. Tuttavia, le richieste di unione di GitLab espongono automaticamente i contenuti del report. Poiché il report è contrassegnato come artefatto di qualità del codice GitLab, GitLab sa come presentare le informazioni all'interno.

Le richieste di unione con una pipeline in errore dovrebbero visualizzare una sezione espandibile Qualità del codice. Indica il numero di errori riscontrati. Espandi la sezione per visualizzare un elenco completo dei problemi rilevati da PHPStan.

Una volta risolti i problemi, invia le modifiche a GitLab. La pipeline verrà eseguita di nuovo. Una volta completato, vedrai il nuovo stato nella schermata Pipeline e nel widget della qualità del codice della tua richiesta di unione.

Conclusione

PHPStan ti aiuta a scrivere un PHP migliore che è meno suscettibile a problemi nascosti. Per ottenere il massimo da esso, lo strumento deve essere incorporato nel flusso di lavoro di sviluppo in modo tale da non poter essere ignorato o aggirato.

L'uso di PHPStan con GitLab CI ti offre la coerenza di cui hai bisogno per essere sicuro del tuo codice. La configurazione di GitLab per bloccare i MR con una pipeline non riuscita significa che le modifiche non possono entrare nel tuo ramo principale senza passare un'esecuzione PHPStan. Il supporto completo di PHPStan per i rapporti sulla qualità del codice di GitLab semplifica la valutazione degli errori senza uscire dall'interfaccia utente Web, aiutandoti a risolvere rapidamente eventuali problemi scoperti.

Articoli correlati:


Tutti i diritti riservati. © Linux-Console.net • 2019-2025