Scrivere un codice WordPress migliore: PHPStan
Nel post più recente di questa serie (che è certamente tempo fa), ho parlato a lungo di Composer e del suo file di blocco.
Raccomando di leggere i due articoli precedenti perché Composer alla fine giocherà un ruolo in questo materiale che questo e i futuri post condivideranno. Ma se scegli di non raggiungerli (o hai già familiarità con Composer), il succo dei post precedenti è, rispettivamente, il seguente:
Non consiglio di controllare la directory del fornitore nel tuo repository. Questo può diventare un’enorme directory in seguito e può minare l’intero scopo di Composer.
L’obiettivo è assicurarsi che tutti eseguano la stessa versione delle dipendenze del progetto, non versioni precedenti, né versioni più recenti, ma la stessa versione.
Detto questo, ci sono numerose dipendenze o pacchetti che possiamo installare che ci aiutano a assicurarci di scrivere codice della massima qualità possibile.
Certo, alcuni di questi possono avere la forma di qualcosa come gli standard di codifica, ma in realtà sono più regole che elementi per scrivere codice di alta qualità (anche se non penso che dovrebbero essere escluse dalla discussione, semplicemente tralasciate in questo momento 🙃).
Tornando agli strumenti in questione: quali sono alcuni strumenti che aiutano a scrivere codice WordPress di alta qualità? Condividerò alcuni dei miei preferiti e parlerò di come eseguirli tutti su una base di codice.
Per prima cosa, diamo un’occhiata all’analisi statica con PHPStan.
Codice WordPress migliore con PHPStan
Che cos’è l’analisi statica, comunque?
Innanzitutto, qualche parola sull’analisi statica. Vale a dire, che cos’è? È un boccone, tanto per cominciare:
L’analisi statica del codice (nota anche come analisi del codice sorgente) viene solitamente eseguita come parte di una revisione del codice (nota anche come test white-box) e viene eseguita nella fase di implementazione di un ciclo di vita dello sviluppo della sicurezza (SDL).
L’analisi del codice statico si riferisce comunemente all’esecuzione di strumenti di analisi del codice statico che tentano di evidenziare le possibili vulnerabilità all’interno del codice sorgente "statico" (non in esecuzione) utilizzando tecniche come l’analisi della contaminazione e l’analisi del flusso di dati.
Pensala in questo modo: è un modo per analizzare un programma per potenziali errori che potresti non vedere quando lavori sulla base di codice.
Cioè, ci sono problemi, bug, problemi di sicurezza, che possono essere presenti ma non puoi rilevare per una serie di motivi (l’ultimo dei quali è che sei troppo vicino al codice).
Nel corso del tempo, tuttavia, la comunità di sviluppo ha imparato i modi per analizzare il codice, generare insiemi di regole e creare strumenti per trovare esattamente tutto quanto sopra.
Analisi statica del codice incentrato su WordPress
Ed è qui che entra in gioco PHPStan.
Come accennato, l’obiettivo del pacchetto è identificare errori o bug che esistono nel codice prima che il codice venga utilizzato da qualcuno diverso dagli sviluppatori, evidenziarli e darti l’opportunità di risolverli.
Poiché strumenti come questo esaminano una base di codice (anziché eseguire il codice), non è sempre possibile ottenere un quadro chiaro. Ciò significa che possiamo ottenere falsi positivi.
Maggiori informazioni su questo in un momento però.
Se sei interessato a iniziare con l’esecuzione di PHPStan sulla tua base di codice, è facile. Dopo averlo installato, ricordati di configurarlo in modo che non appaia nella vendor
directory o, ad esempio, nel core di WordPress.
Invece, fallo esaminare il tuo codice.
Installazione di PHPStan
Innanzitutto, nel tuo composer.json
file, aggiungi la seguente riga nella require-dev
sezione:
"phpstan/phpstan": "^0.11.12"
Quindi esegui composer update
nel tuo terminale.
Una volta installato, puoi eseguirlo su un singolo file, una directory o un insieme di directory. Se hai letto i miei post precedenti sull’organizzazione del codice, allora sai che sono un fan di mantenere la maggior parte del codice sorgente del progetto dentro src
di te, potresti eseguire qualcosa del genere:
$ vendor/bin/phpstan analyse src
Questo genererà un output in base a ciò che trova l’utilità.
Ricordi prima quando ho detto che potrebbe trovare cose come falsi positivi? Ecco un riassunto più dettagliato di ciò che potresti vedere:
- Argomenti extra passati alle funzioni (ad es. la funzione richiede due argomenti, il codice ne passa tre)
- Argomenti extra passati alle funzioni print/sprintf (ad es. la stringa di formato contiene un segnaposto, il codice passa due valori da sostituire)
- Errori evidenti nel codice morto
- Comportamento magico che deve essere definito.
Tutto quanto sopra direttamente dal repository.
È qui che i livelli delle regole possono fare la differenza, anche se potrebbe essere necessario un po’ di ritocco per portarlo a un livello adatto alla tua squadra o al tuo progetto.
Che dire dell’analisi per WordPress?
Viktor Szépe ha condiviso questa risorsa con me (qualcosa di cui è l’autore, in realtà) e penso che sia qualcosa di rilevante e utile. L’idea del pacchetto è semplice:
Risolve tutti i problemi che ho avuto durante l’analisi del codice per WordPress.
Non male, vero?
Analizza il tuo codice
Indipendentemente dal tuo progetto, dalla tua organizzazione del codice o dal livello a cui esegui questa particolare utility, il punto è sempre migliorare il livello di qualità del codice di WordPress che stiamo scrivendo.
Installarlo come pacchetto Composer e quindi eseguirlo sulla tua src
directory è un passo nella giusta direzione.
Come affermato in precedenza, condividerò alcuni altri strumenti e condividerò quindi come eseguirli tutti su una base di codice prima di eseguire il commit del codice in un repository.
Nota
Se hai un problema nel tentativo di configurare il pacchetto, Dave Mackey mi ha contattato con un problema simile e la sua soluzione.