Cos'è una revisione del codice?
Una revisione del codice è una revisione paritaria che aiuta gli sviluppatori a garantire o a migliorare la qualità del codice prima di eseguirne il merge e di distribuirlo.
Le revisioni del codice, note anche come revisioni paritarie, fungono da assicurazione qualità della codebase.
Le revisioni del codice sono valutazioni metodiche del codice progettate per identificare i bug, aumentare la qualità del codice e aiutare gli sviluppatori a comprendere il codice sorgente.
Al termine della programmazione, eseguire una revisione del codice è una tappa importante nel processo di sviluppo, in quanto permette di valutare la soluzione e l'implementazione da un altro punto di vista prima che venga eseguito il merge a un ramo upstream, come un ramo della funzionalità o il ramo principale. Il revisore può inoltre fungere da elemento di raccordo nell'identificazione di bug, problemi logici, casi limite o problemi di altra natura.
Questa pratica consente agli autori del codice e ai revisori di rilevare le falle nella sicurezza, aderire agli standard di qualità e condividere conoscenze tra framework e linguaggi di programmazione. I revisori possono far parte di qualsiasi team o gruppo di lavoro, purché siano esperti in materia di domini. Se le righe di codice si estendono per più di un dominio, saranno necessari due revisori.
Sviluppare un processo efficace di revisione del codice pone le basi per un miglioramento continuo ed evita che il cliente riceva software con codice instabile. Le revisioni del codice dovrebbero diventare parte integrante del flusso di lavoro di un team di sviluppo, in quanto permettono di sottoporre ogni frammento di codice all'attenzione di un altro membro, migliorando la qualità complessiva del codice stesso.
Il processo di revisione del codice svolge inoltre un ruolo importante nella diffusione delle conoscenze all'interno di un'azienda. Per queste e altre ragioni, il 76% degli sviluppatori che hanno partecipato al sondaggio DevSecOps globale 2022 ha dichiarato che le revisioni del codice sono "uno strumento molto prezioso".
- Condividi le conoscenze: quando uno sviluppatore rivede il codice appena modificato da un membro del team, dà a questi la possibilità di apprendere nuove tecniche ed elaborare soluzioni alternative. Le revisioni del codice aiutano gli sviluppatori junior a imparare dai colleghi con più esperienza, proprio come la programmazione in coppia aiuta i programmatori a condividere le rispettive competenze e idee. Distribuendo le conoscenze fra tutti i membri dell'azienda attraverso la revisione del codice, è possibile evitare che l'assenza di una sola persona si riveli critica nel processo di sviluppo. Tutte le persone coinvolte hanno la possibilità di rivedere il codice e fornire un feedback. Inoltre, condividere le conoscenze evita problemi quando un membro del team è in ferie, poiché ci sarà sempre un'altra persona con le competenze necessarie per affrontare un determinato argomento.
- Scopri i bug in anticipo: anziché individuare i bug solo dopo che una funzionalità è stata distribuita, per poi rilasciare una patch in fretta e furia, gli sviluppatori possono scovare e correggere immediatamente i problemi prima che il software raggiunga il cliente. Spostare il processo di revisione all'inizio del ciclo di sviluppo attraverso test unitari permette di lavorare alle correzioni con l'ausilio di nuove competenze. Se invece si attende la fine del ciclo di vita per eseguire una revisione, gli sviluppatori spesso faticano a ricordare il codice, le soluzioni e i ragionamenti alla base delle modifiche. L'analisi statica è una soluzione economica ed efficiente che permette di generare valore economico e soddisfare le esigenze della clientela.
- Mantenimento della conformità: lo stile di programmazione di ogni sviluppatore varia a seconda della sua esperienza e formazione. Le revisioni del codice permettono ai team di mantenere uno stile uniforme e di aderire agli stessi standard di codifica. Ciò è particolarmente importante per i progetti open-source che prevedono il coinvolgimento di diversi collaboratori. Nelle revisioni paritarie, i gestori valutano il codice prima di eseguire il push delle modifiche.
- Migliore sicurezza: le revisioni del codice permettono di innalzare i livelli di sicurezza, soprattutto quando vengono effettuate in modo mirato da esperti in materia. La sicurezza delle applicazioni è parte integrante dello sviluppo software e le revisioni del codice aiutano a rilevare i ticket di sicurezza e a garantire la conformità. I membri del team di sicurezza possono esaminare il codice alla ricerca di vulnerabilità e avvisare gli sviluppatori riguardo a eventuali minacce. Le revisioni del codice rappresentano un'ottima soluzione complementare alle analisi e ai test automatizzati che rilevano le vulnerabilità.
- Maggiore collaborazione: quando lavorano insieme per creare una soluzione, i membri di un team provano un senso di appartenenza e di paternità più spiccato rispetto al proprio lavoro. Gli autori e i revisori possono collaborare per trovare le soluzioni più efficaci per soddisfare le esigenze dei clienti. È importante rafforzare la collaborazione durante tutto il ciclo di sviluppo del software per impedire la formazione di silo di dati e garantire un flusso di lavoro uniforme fra i vari team. Per eseguire con successo le revisioni del codice, è importante che gli sviluppatori coltivino un'attitudine alla revisione del codice che poggi saldamente sullo sviluppo collaborativo.
- Migliore qualità del codice: le revisioni sono uno strumento importante che permette di distribuire codice e software di alta qualità. Uno sviluppatore che conosce nel dettaglio la tua codebase riuscirà a rilevare ticket correlati alla qualità del codice che i test automatizzati potrebbero non notare, aiutandoti persino a ridurre il debito tecnico.
- Tempi di distribuzione più lunghi: le tempistiche di revisione potrebbero ritardare il processo di rilascio, in quanto i revisori devono collaborare con gli autori per discutere dei problemi. A seconda del carico di lavoro di un revisore, quest'ultimo potrebbe non riuscire a completare l'opera di revisione nei tempi previsti dall'autore. Questo ostacolo può essere superato implementando strumenti di revisione del codice che includano test automatizzati in grado di rilevare gli errori. Gli strumenti automatizzati permettono agli sviluppatori di concentrarsi sui problemi di ingegneria del software più impellenti anziché limitarsi a evidenziare semplici errori di lint.
- Attenzione distolta da altre attività: gli sviluppatori sono spesso chiamati ad assumere carichi di lavoro pesanti e una revisione del codice rischia di distoglierli dalle attività prioritarie di cui sarebbero responsabili. I membri del team potrebbero essere costretti a scegliere se completare l'attività assegnata oppure interrompere il lavoro per eseguire una revisione del codice. In entrambi i casi, l'organizzazione ne risentirebbe a livello di tempistiche di distribuzione. Per risolvere questa criticità, è possibile utilizzare una reviewer roulette (strumento per la selezione casuale dei revisori di codice) o affidarsi a un gruppo di esperti in materia, evitando così che le richieste di revisione vengano assegnate tutte a un singolo sviluppatore.
- Modifiche complesse comportano tempi di revisione più lunghi: se gli sviluppatori devono effettuare revisioni del codice su modifiche di una certa entità, l'analisi del codice potrebbe richiedere parecchio tempo. Poiché valutare revisioni di codice estese è piuttosto difficile, gli sviluppatori tendono a proseguire rapidamente nel processo al fine di completarlo tempestivamente. Questo comportamento, però, può compromettere la qualità del feedback. Lo sviluppo incrementale del codice evita questa problematica, permettendo ai revisori di esaminare una piccola porzione di codice diverse volte anziché una modifica di maggiore entità una sola volta.
È possibile mitigare al massimo questi svantaggi scegliendo il metodo di revisione del codice più indicato per il team. Ecco i quattro approcci alla revisione del codice più diffusi:
Programmazione in coppia
La programmazione in coppia vede impegnati due sviluppatori che collaborano in tempo reale: il conducente scrive il codice e il navigatore ne esegue la revisione. Le sessioni di programmazione in coppia sono molto diffuse tra i team di sviluppo perché offrono la possibilità di collaborare all'identificazione della soluzione più efficace. I membri del team condividono le conoscenze e possono superare rapidamente le difficoltà lavorando insieme, valutando le idee di entrambi e attingendo alle rispettive competenze.
Vantaggi della programmazione in coppia
- Trasferisce le conoscenze
- Impedisce i silo di informazioni
- Risolve problemi complessi
- Aumenta il morale
- Permette di individuare più bug
- Può essere condotta da remoto
Svantaggi della programmazione in coppia
- Richiede tempo
- Può essere utilizzata in modo eccessivo
- Difficile da misurare
Revisioni over-the-shoulder
In una revisione over-the-shoulder due sviluppatori, rispettivamente un autore e un revisore, collaborano in presenza o da remoto attraverso uno schermo condiviso. L'autore ha il compito di spiegare la modifica effettuata e di illustrare il ragionamento alla base della stessa. Il revisore pone domande e offre suggerimenti, come quando i membri del team collaborano durante le sessioni di programmazione in coppia. L'autore può apportare piccole modifiche durante la revisione e annotare le correzioni più significative, così da poterle effettuare in un secondo momento.
Vantaggi di una revisione over-the-shoulder
- Facile da implementare e da chiudere
- Può essere condotta da remoto
- Più rapida rispetto alla programmazione in coppia
Svantaggi di una revisione over-the-shoulder
- Il revisore non è direttamente coinvolto nel codice
- La revisione prosegue al ritmo dell'autore
- Mancanza di obiettività
- Nessuna verifica riguardo all'effettiva esecuzione delle modifiche
- Difficile da misurare
Revisioni assistite da strumenti
I team possono scegliere di avvalersi di alcuni strumenti per risparmiare tempo e assicurarsi di distribuire codice della massima qualità. Le revisioni assistite da strumenti permettono di acquisire automaticamente i file modificati e visualizzare le differenze, oppure semplificare la catena di feedback e di comunicazione tramite i commenti, oltre a incorporare elementi come il test statico di sicurezza delle applicazioni (SAST) per identificare e correggere le vulnerabilità.
Il modo migliore di considerare le revisioni assistite da strumenti è vederle come un metodo complementare ad altre tipologie di revisione. Gli strumenti automatizzati permettono di mantenere la conformità rispetto agli standard del codice, identificare le vulnerabilità, acquisire metriche e raccogliere file. Tuttavia, c'è il rischio che alcuni team decidano di affidarsi completamente ad essi, rinunciando a coinvolgere i colleghi nella revisione del codice. Strumenti di questo genere vanno considerati come un supporto alle revisioni del codice e come un modo per migliorare il processo di sviluppo.
Vantaggi di una revisione assistita da strumenti
- Maggiore facilità nell'acquisizione delle metriche
- Gli strumenti automatizzati permettono agli sviluppatori di concentrarsi su altre attività
Svantaggi di una revisione assistita da strumenti
- Gli sviluppatori devono occuparsi della manutenzione degli strumenti
- Costi non indifferenti
- Necessita comunque della revisione di un collega
Scambio di email per la revisione del codice
Gli scambi di email per la revisione del codice vengono spesso utilizzati per affrontare problemi di minore entità e discutere di piccole porzioni di codice. Tale pratica può essere condotta tramite posta elettronica o su sistemi di gestione del codice sorgente. Durante uno scambio di email per la revisione del codice, un autore invia ai revisori un messaggio contenente le modifiche al codice. Uno scambio di email per la revisione del codice è simile alla revisione eseguita in modo informale, in quanto può essere implementata facilmente, non richiede un'ampia curva di apprendimento né un mentore che insegni all'autore come effettuare una modifica.
Vantaggi dello scambio di email per la revisione del codice
- Facile da implementare e da chiudere
- Agevola le revisioni asincrone e da remoto
- Consente revisioni automatiche tramite SCM
Svantaggi dello scambio di email per la revisione del codice
- Acquisire i file richiede tempo
- Difficoltà a seguire le conversazioni
- Nessuna data di scadenza definita per la revisione
- Nessuna verifica riguardo all'effettiva esecuzione delle modifiche
- Difficile da misurare
- Limita le sessioni di revisione del codice per preservare la produttività. Individua gli aspetti che funzionano all'interno del team, ad esempio limitando a un'ora o a 200 righe la quantità di lavoro da dedicare al codice, e invita gli sviluppatori a non superare tale limite.
- Rendi tutti partecipi del processo, dai nuovi arrivati ai membri più esperti. Le revisioni del codice sono uno strumento eccezionale che permette ai nuovi arrivati di familiarizzare con la codebase, in quanto possono rivedere il codice in prima persona o demandare la revisione agli sviluppatori più esperti. Coinvolgere tutti i membri del team nel processo di revisione del codice consentirà di sopperire più facilmente al personale in ferie o agli sviluppatori che non faranno più parte del gruppo di lavoro.
- Distribuisci le richieste di revisione del codice al team. Alcuni sviluppatori non trovano difficoltà a occuparsi in blocco delle richieste di revisione del codice. Tuttavia, questo approccio è sconsigliabile sia per loro sia per il resto del team sul lungo periodo, senza contare le conseguenze per la codebase. Puoi creare un elenco di esperti in materia di domini o una reviewer roulette (uno strumento per la selezione casuale dei revisori di codice) per evitare che questa prassi prenda piede.
- Fai domande e chiarisci il contesto. Quando rivedi il codice di un collega, impegnati affinché entrambi possiate trarre il massimo insegnamento da questo processo. Non capisci perché abbia eseguito un'operazione in modo diverso da come l'avresti effettuata tu? Basta chiederglielo. Hai qualche suggerimento per migliorare il codice? Illustrane le motivazioni nel tuo commento. Non solo ne gioverete entrambi, ma è anche probabile che riusciate a risparmiare del tempo prezioso.
Integrando pratiche efficaci di revisione del codice nel processo di sviluppo software, le organizzazioni possono soddisfare anche le scadenze più ravvicinate senza compromettere l'integrità dei loro prodotti. Il dialogo tra l'autore del codice e il revisore pone le basi per un processo di sviluppo efficiente, affinché ogni porzione di codice possa non solo soddisfare ma persino a superare gli standard prefissati.
Adottare la pratica delle revisioni del codice significa aprirsi a un futuro in cui innovazione, collaborazione e sicurezza fungano da volano per la creazione di soluzioni di grande impatto nell'ambito dello sviluppo software.
Scopri come GitLab ottimizza il processo di revisione del codice
GitLab ottimizza lo sviluppo software grazie a un processo completo di controllo della versione e alla collaborazione fra sviluppatori.
Vuoi sapere di più sulle revisioni del codice?
View all resourcesVuoi iniziare?
Scopri cosa è capace di fare il tuo team grazie a una piattaforma DevSecOps unificata.