La code review nello sviluppo software

La code review nello sviluppo software

Cos’è una code review?
La code review è una revisione paritaria del codice che aiuta gli sviluppatori a garantire o migliorare la qualità del codice prima di unirlo e distribuirlo.

Cosa sono le code review nello sviluppo software e come funzionano?
Le revisioni del codice , note anche come revisioni tra pari, svolgono la funzione di garanzia della qualità della base del codice.

Le code review nello sviluppo software sono valutazioni metodiche del codice progettate per identificare bug, aumentare la qualità del codice e aiutare gli sviluppatori a imparare il codice sorgente.

Dopo che uno sviluppatore software ha completato la codifica, una code review è un passaggio importante nel processo di sviluppo software per ottenere una seconda opinione sulla soluzione e l’implementazione prima che venga unita a un ramo upstream come un ramo di funzionalità o il ramo principale. Il revisore può anche fungere da secondo passaggio nell’identificazione di bug, problemi logici, casi limite scoperti o altri problemi.

Questa pratica consente agli autori di codice e ai revisori di identificare falle di sicurezza, rispettare gli standard di qualità e condividere le conoscenze tra linguaggi di programmazione e framework. I revisori possono appartenere a qualsiasi team o gruppo, purché siano esperti di dominio. Se le righe di codice coprono più di un dominio, due esperti dovrebbero esaminare il codice.

Perché le code review nello sviluppo software sono importanti?
Sviluppare un solido processo di code review getta le basi per un miglioramento continuo e impedisce che codice instabile venga spedito ai clienti. Le revisioni del codice dovrebbero diventare parte del flusso di lavoro di un team di sviluppo software per migliorare la qualità del codice e garantire che ogni pezzo di codice sia stato esaminato da un altro membro del team.

Il processo di code review è anche una parte importante nella diffusione della conoscenza in tutta un’organizzazione. Per queste e altre ragioni, il 76% degli sviluppatori che hanno partecipato al Global DevSecOps Survey del 2022 ha affermato che le revisioni del codice sono “molto preziose”.

Quali sono i vantaggi delle code review nello sviluppo software?

  • Condividere la conoscenza: quando gli sviluppatori software esaminano il codice non appena un membro del team apporta modifiche, possono apprendere nuove tecniche e soluzioni. Le revisioni del codice aiutano gli sviluppatori junior a imparare dai membri più senior del team, in modo simile a come la programmazione in coppia aiuta efficacemente gli sviluppatori a condividere competenze e idee. Diffondendo la conoscenza nell’intera organizzazione, le revisioni del codice assicurano che nessuna persona sia un singolo punto di errore. Tutti hanno la possibilità di esaminare e fornire feedback. La conoscenza condivisa aiuta anche i membri del team a prendersi una vacanza, perché tutti nel team hanno una conoscenza di base su un argomento.
  • Scoprire i bug prima: anziché scoprire i bug dopo che una funzionalità è stata distribuita e affrettarsi a rilasciare una patch, gli sviluppatori possono trovare e risolvere immediatamente i problemi prima che i clienti li vedano. Spostare il processo di revisione prima nel ciclo di vita dello sviluppo software tramite test unitari aiuta gli sviluppatori a lavorare sulle correzioni con nuove conoscenze. Quando si aspetta fino alla fine del ciclo di vita per fare una revisione, gli sviluppatori spesso hanno difficoltà a ricordare codice, soluzioni e ragionamento. L’analisi statica è un modo economico ed efficiente per soddisfare il valore aziendale e del cliente.
  • Mantenere la conformità: gli sviluppatori hanno background e formazione diversi che influenzano i loro stili di codifica. Se i team vogliono avere uno stile di codifica standard, le revisioni del codice aiutano tutti ad aderire agli stessi standard. Ciò è particolarmente importante per i progetti open source in cui più persone contribuiscono al codice. Le revisioni tra pari coinvolgono i manutentori per valutare il codice prima di spingere le modifiche.
  • Migliora la sicurezza: le revisioni del codice creano un elevato livello di sicurezza, soprattutto quando i professionisti della sicurezza si impegnano in una revisione mirata. La sicurezza delle applicazioni è parte integrante dello sviluppo software e le revisioni del codice aiutano a rilevare problemi di sicurezza e a garantire la conformità. I ​​membri del team di sicurezza possono esaminare il codice per le vulnerabilità e avvisare gli sviluppatori della minaccia. Le revisioni del codice sono un ottimo complemento alle scansioni e ai test automatizzati che rilevano le vulnerabilità della sicurezza.
  • Aumenta la collaborazione: quando i membri del team lavorano insieme per creare una soluzione, si sentono più responsabili del loro lavoro e hanno un più forte senso di appartenenza. Autori e revisori possono lavorare insieme per trovare le soluzioni più efficaci per soddisfare le esigenze dei clienti. È importante rafforzare la collaborazione lungo il ciclo di vita dello sviluppo software per prevenire silos di informazioni e mantenere un flusso di lavoro fluido tra i team. Per condurre con successo le revisioni del codice, è importante che gli sviluppatori sviluppino una mentalità di code review che abbia solide basi nello sviluppo collaborativo.
  • Migliora la qualità del codice: le revisioni del codice sono un modo importante per assicurarti di spedire codice e software di alta qualità. Un essere umano che conosce la tua base di codice può notare problemi di qualità del codice che i test automatizzati potrebbero non notare. Possono persino aiutarti a ridurre il debito tecnico.


Quali sono gli svantaggi delle revisioni del codice?

  • Tempi di spedizione più lunghi: i tempi di revisione potrebbero ritardare il processo di rilascio, poiché i revisori devono collaborare con gli autori per discutere i problemi. A seconda del carico di lavoro di un revisore, potrebbe non completare una revisione così velocemente come vorrebbe l’autore. Questa sfida può essere superata utilizzando strumenti di code review che includono test automatizzati per trovare errori. Gli strumenti automatizzati sono un modo efficace per liberare tempo agli sviluppatori in modo che possano concentrarsi sui problemi di ingegneria del software più ampi anziché evidenziare semplici errori di lint.
  • Distogliere l’attenzione da altre attività: gli sviluppatori hanno spesso un carico di lavoro pesante e una code review può distogliere la loro attenzione da altre attività ad alta priorità di cui sono responsabili. I membri del team potrebbero essere costretti a decidere se completare la loro attività o interrompere il lavoro per effettuare una code review. In entrambi i casi, il lavoro viene ritardato da qualche parte nell’organizzazione. Per ridurre questo punto dolente, i membri del team possono avere una roulette di revisori o un elenco di esperti di dominio in modo che un singolo sviluppatore non venga inondato di richieste di revisione.
  • Le revisioni di grandi dimensioni comportano tempi di revisione più lunghi: se gli sviluppatori devono condurre revisioni del codice su una modifica di grandi dimensioni, potrebbero dedicare una notevole quantità di tempo all’esame del codice. Le revisioni del codice di grandi dimensioni sono difficili da valutare e gli sviluppatori potrebbero naturalmente procedere rapidamente nel processo per completarlo in modo tempestivo, con conseguente riduzione della qualità del feedback. Lo sviluppo incrementale del codice previene questa sfida consentendo ai revisori di esaminare un piccolo pezzo di codice più volte anziché una modifica di grandi dimensioni in una volta sola.


Quattro approcci alla code review
Alcuni di questi svantaggi possono essere minimizzati selezionando il metodo di code review più appropriato per il tuo team. Ecco quattro approcci comuni alla code review:

Pair programming
La pair programming (o programmazione in coppia) prevede che due sviluppatori collaborino in tempo reale: uno scrive il codice (il driver) e uno revisiona il codice (il navigatore). Le sessioni in coppia sono popolari tra i team di sviluppo perché i membri del team collaborano per identificare la soluzione più efficace a una sfida. I membri del team condividono le conoscenze e possono superare rapidamente le difficoltà elaborando insieme le idee e attingendo alla propria competenza.

I vantaggi della pair programming

  • Trasferisce la conoscenza
  • Previene i silos informativi
  • Risolve problemi complessi
  • Aumenta il morale
  • Trova altri bug
  • Può essere condotto da remoto


Gli svantaggi della programmazione in coppia

  • Richiede tempo
  • Può essere abusato
  • Difficile da misurare


Over-the-shoulder Review
In una revisione over-the-shoulder, due sviluppatori, l’autore e il revisore, collaborano di persona o da remoto tramite uno schermo condiviso e l’autore spiega la proposta di modifica completata e offre motivazioni per le soluzioni scelte. Il revisore pone domande e fornisce suggerimenti, in modo simile a come i membri del team collaborano durante le sessioni di pairing. L’autore può apportare piccole modifiche durante la revisione e annotare le correzioni più importanti per un momento successivo.

I vantaggi delle revisioni over-the-shoulder

  • Facile implementazione e completamento
  • Può essere condotto da remoto
  • Più veloce della pair programming


Gli svantaggi delle recensioni “over-the-shoulder”

  • Il revisore è staccato dal codice
  • La revisione si muove al ritmo dell’autore
  • Mancanza di obiettività
  • Nessuna verifica che siano state apportate modifiche
  • Difficile da misurare


Code Review assistite da strumenti
I team possono decidere di usare strumenti per risparmiare tempo e garantire che venga spedito il codice di massima qualità. Le revisioni assistite da strumenti possono raccogliere automaticamente i file modificati e visualizzare le differenze, o semplificare la fornitura di feedback e le conversazioni tramite commenti, e incorporare elementi come i test di sicurezza delle applicazioni statiche (SAST) per aiutare a identificare e correggere le vulnerabilità.

Il modo migliore per considerare le revisioni assistite da strumenti è considerarle un complemento ad altri tipi di revisioni. Gli strumenti automatizzati sono un modo efficace per far rispettare gli standard del codice, identificare le vulnerabilità, raccogliere metriche e raccogliere file, ma alcuni team potrebbero essere tentati di affidarsi completamente agli strumenti e rinunciare al coinvolgimento dei membri del team per condurre le revisioni del codice. Gli strumenti dovrebbero essere visti come un’estensione delle revisioni del codice e un modo per migliorare il processo.

I vantaggi delle review assistite dagli strumenti

  • Più facile raccogliere metriche
  • Gli strumenti automatizzati liberano la concentrazione dello sviluppatore


Gli svantaggi delle review assistite dagli strumenti

  • Gli sviluppatori devono mantenere gli strumenti
  • Costoso
  • Richiederà comunque revisioni da parte dei compagni di squadra


E-mail pass-around
I pass-around via e-mail sono spesso utilizzati per piccole difficoltà e piccoli pezzi di codice. Possono essere condotti tramite e-mail o sistemi di gestione del codice sorgente. Durante un pass-around via e-mail, un autore invia un’e-mail contenente le modifiche al codice ai revisori. Il pass-around via e-mail è simile alle revisioni over-the-shoulder in quanto può essere facilmente implementato e non richiede una forte curva di apprendimento o una fase di tutoraggio per insegnare all’autore come apportare una modifica.

I vantaggi del pass-around delle e-mail

  • Facile implementazione e completamento
  • Facilita le revisioni asincrone e remote
  • Revisioni automatiche tramite SCM


Gli svantaggi del pass-around delle e-mail

  • Richiede molto tempo raccogliere i file
  • Difficile seguire le conversazioni
  • Nessuna data di fine della revisione definitiva
  • Nessuna verifica che siano state apportate modifiche
  • Difficile da misurare


Alcune buone pratiche per le code review

  • Limita le sessioni di code review per mantenerli produttivi. Scopri cosa funziona per il tuo team, ad esempio non più di un’ora o 200 righe di codice, e incoraggiali a rispettare quel limite.
  • Includi tutti, compresi i membri nuovi e senior del team, nel processo. Le revisioni del codice sono un modo eccellente per aiutare i nuovi membri del team a essere aggiornati sulla base di codice, sia esaminando il codice da sviluppatori più senior del team, sia facendo revisionare il loro codice da sviluppatori più senior del team. Includere tutti nel processo di code review renderà anche più facile l’adattamento quando le persone vanno in vacanza o non sono più nel team.
  • Distribuisci le richieste di code review tra il team. Può essere facile per alcuni sviluppatori ottenere la maggior parte delle richieste di code review, e questo non sarà positivo per loro o per il resto del team, o per la base di codice, a lungo termine. Puoi creare un elenco di esperti di dominio o una roulette di revisori per aiutarti a evitare questo.
  • Fai domande e fornisci un contesto utile. Quando stai esaminando il codice di qualcuno, fai del tuo meglio per aiutare entrambi a imparare durante il processo. Non sei sicuro del motivo per cui hanno fatto qualcosa in modo diverso da come avresti potuto fare tu? Chiedi. Hai un suggerimento su come migliorare il loro codice? Non dimenticare di dire loro perché lo stai suggerendo nel tuo commento. Questo non solo vi aiuterà entrambi a imparare, ma probabilmente vi farà anche risparmiare tempo.


Conclusione
Integrando pratiche efficaci di code review nel lavoro dello sviluppo software, le organizzazioni possono superare le sfide delle scadenze ravvicinate senza compromettere l’integrità dei loro prodotti. Il dialogo tra l’autore del codice e il revisore del codice getta le basi per un solido processo di sviluppo, assicurando che ogni pezzo di codice non solo soddisfi ma superi gli standard stabiliti.

Adottare la code review significa abbracciare un futuro in cui innovazione, collaborazione e sicurezza guidano il percorso verso la creazione di soluzioni software di impatto.

Gitlab è un esempio di strumento che agevola La code review nello sviluppo software.

Innovaformazione, scuola informatica specialistica promuove la code review e lo sviluppo software consapevole. Nell’offerta formativa per le aziende trovate il Corso GitLab.

(fonte)

INFO: info@innovaformazione.net – Tel. 3471012275 (Dario Carrassi)

Ti potrebbe interessare

Articoli correlati