Code style con Laravel Pint: tutto ciò che ti serve sapere

Laravel Pint è un tool CLI per assicurarsi che lo stile del codice all’interno di una applicazione Laravel sia coerente e uguale per ogni singola classe. Questo tool è un wrapper di PHP-CS-fixer, un tool molto utilizzato nelle applicazioni PHP, spesso in coppia con il proprio IDE o nelle pipeline di continuous integration.

“Laravel pint is a zero-dependency PHP code style fixer for minimalists – built on top of PHP-CS-Fixer.” – dalla documentazione su GitHub.

Come installare Laravel Pint

L’installazione è molto semplice e può essere fatta tramite composer:

 

composer require laravel/pint –dev

 

Con l’opzione –dev si installa il pacchetto come dipendenza in ambiente di sviluppo, non essendo necessario in ambiente di produzione.

A questo punto il binario di esecuzione viene messo nella cartella vendor e può essere invocato in questo modo da command line:

./vendor/bin/pint

Come si utilizza

Creiamo un file json di configurazione nella cartella root del progetto chiamato pint.json, con questo contenuto:

Preset rappresenta un set di configurazione predefinito. I valori correntemente supportati sono: laravel, psr12, e symfony.

 

Una volta lanciato il comando di esecuzione, si otterrà un output simile a questo:

Il comando esegue fix automaticamente, quindi è sufficiente eseguire Pint prima di ogni commit, o comunque prima di eseguire il push della propria branch. In questo modo si otterrà un code style pulito e coerente.

Personalizzazione

È possibile che non siate entusiasti delle 3 configurazioni di base e che vogliate personalizzare i criteri di controllo del code style. Ad esempio potreste voler ignorare una regola come quella di dover andare a capo dopo la definizione di una funzione, o qualsiasi altra.

Per personalizzare la configurazione è sufficiente dichiarare nel file di configurazione pint.json quali regole applicare o meno. Un esempio:

 

{

“preset”: “laravel”,

“rules”: {

     “simplified_null_return”: true,

     “braces”: false,

     “new_with_braces”: {

         “anonymous_class”: false,

         “named_class”: false

         }

}

}

 

Ottimo! Ma come facciamo a sapere quali regole posso abilitare o disabilitare? Beh, come detto all’inizio di questo articolo, Laravel Pint è stato creato sopra PHP-CS-fixer, quindi le regole sono definite nella sua documentazione che potete trovare a questo link:

 

https://mlocati.github.io/php-cs-fixer-configurator/#version:3.13

 

È possibile inoltre ignorare specifiche cartelle o file semplicemente modificando il file pint.json. Ecco alcuni esempi:

 

Ignorare una cartella

 

{

“exclude”: [

     “my-specific/folder”

]

}

 

Ignorare file tramite pattern

 

{

“notName”: [

     “*-my-file.php”

]

}

 

Ignorare file specificando la path completa

 

{

“notPath”: [

     “path/to/excluded-file.php”

]

}

 

Aggiungere Laravel Pint alla pipeline di continuous integration

È buona norma aggiungere uno step alla continuous integration verificando il code style, prima di fare merge nella main (o master) branch. Di default, Pint esegue il fix del codice e noi non vogliamo che il codice sorgente venga modificato durante l’esecuzione in CI.

Per fare in modo che lo stile del codice venga solo verificato possiamo aggiungere un argomento all’esecuzione di pint, in questo modo:

 

./vendor/bin/pint –test

 

Aggiungendo questo step alla CI, la build fallirà se il code style non rispetta le regole di configurazione che abbiamo definito nel file pint.json.

Leave a reply