Definire uno stile per il codice PHP utilizzando PHPCS

Come accennavo anche in uno dei post precedenti (3 cose che ho imparato dopo la laurea) una delle lezioni più importanti che ho imparato è quella relativa all'importanza di mantenere uno stile di scrittura del codice unico in tutto il progetto.
Quando il numero di sviluppatori che lavorano allo stesso progetto aumenta diventa sempre più difficile riuscire a mantenere uno stile di scrittura unico che garantisca lo stesso livello di leggibilità del codice in ogni punto.


Nella vita a tutti è capitato di incontrare un codice scritto come questo qui sopra. E' possibile vedere subito che questo codice è stato scritto da almeno due sviluppatori differenti:

  • uno che preferiva mettere le parentesi graffe in linea con gli if separandole con uno spazio (es riga 4),
  • uno che preferiva mettere le parentesi graffe in una riga propria (es riga 3)

Sebbene questo codice sia sintatticamente valido e funzioni correttamente in realtà risulta di difficile lettura per un nuovo sviluppatore che debba collaborare al progetto o cercare di individuare possibili bug.

Sarebbe bello quindi se ci fosse uno strumento in grado di controllare automaticamente che il codice scritto sia conforme a certe regole stilistiche. Fortunatamente per chi sviluppa con PHP questo strumento esiste e si chiama PHP_CodeSniffer!
Tramite PHP_CodeSniffer (o semplicemente PHPcs) il codice scritto viene analizzato alla ricerca di eventuali violazioni delle regole stilistiche definite.

Come configurarlo 

Per dimostrare come configurare PHPcs all'interno di un progetto utilizzerò come riferimento un'applicazione Laravel. Se vuoi sapere come preparare un ambiente di sviluppo per Laravel sfruttando Docker dai una letta a questo post.

Come prima cosa devi installare PHPcs all'interno del progetto. Se utilizzi composer come packer manager puoi farlo semplicemente digitando:
composer require squizlabs/php_codesniffer --dev

Non appena composer avrà finito di installare tutto potrai analizzare fin da subito il codice del progetto tramite il comando:
vendor/bin/phpcs --extensions=php app tests

tramite questo comando ho indicato a PHPcs di analizzare solo i file con estensione .php e che si trovano all'interno delle cartelle .\app e .\tests.

Se dopo questa prima passata vedi un infinità di errori non ti preoccupare, molti sono errori banali e molti sono errori che magari non sono importanti per il nostro progetto. Infatti di default PHPcs cerca di validare il codice seguendo le regole dello standard di codifica PEAR.

Analizzando il codice con lo standard PEAR ci sono un'infinità di errori

Per cambiare standard di validazione quello che conviene fare è definire nella root del progetto il file phpcs.xml. In questo file, oltre a definire lo standard da utilizzare, puoi definire nuove regole particolari e/o eccezioni allo standard.

Personalmente nei miei progetti preferisco adottare lo standard PSR-2 personalizzando alcune regole per cui di solito modifico il file phpcs.xml in questo modo:

Scansionando nuovamente il progetto con il comando precedente PHPcs caricherà automaticamente le regole definite nel file phpcs.xml

analizzando il codice con lo standard PSR-2 non ci sono più errori

Consiglio finale

Come ultima cosa, se anche te utilizzi git per i tuoi progetti, mi sento di consigliarti di inserire il comando per analizzare il codice all'interno di uno degli hook di git
Nei miei progetti tipicamente inserisco questo comando all'interno del file .git/hooks/pre-push in modo che ogni volta che viene tentato un push verso il repository il codice scritto sia sempre valido con le regole imposte.

Spero che PHPcs possa esserti di aiuto quanto lo è stato per me. Se anche tu utilizzi PHPcs e hai qualche consiglio da darmi non esitare a lasciare un commento!

Commenti