Abbiamo ancora bisogno di una revisione manuale del codice se usiamo gli strumenti di revisione del codice sonarqube

7

Stavamo usando git gerrit per la revisione manuale del codice. ma recentemente stiamo pianificando di integrare sonarqube nel nostro server di integrazione Jenkins. Abbiamo ancora bisogno di revisione manuale del codice? Oppure possiamo fermare la revisione manuale del codice e il sonarqube è sufficiente. Apprezzerei se condividi la tua esperienza con sonarqube.

    
posta Sharif 28.11.2014 - 03:44
fonte

2 risposte

19

Sì, dovresti mantenere le revisioni del codice.

SonarQube, come qualsiasi altro strumento automatico, è grande come uno strumento che aiuta a segnalare alcuni dei possibili problemi , inclusi problemi che non sono facilmente visibili dagli esseri umani.

Il codice duplicato, ad esempio, può essere controllato automaticamente, come mostrato da Visual Studio o SonarQube, mentre un revisore potrebbe non vedere facilmente che lo stesso pezzo di codice è stato incollato e modificato leggermente in seguito.

Allo stesso modo, il controllo dello stile può e deve essere automatizzato, perché un controllore automatico funzionerà meglio di un umano. L'analisi statica è un altro grande esempio.

Ma poi ci sono problemi che difficilmente possono essere automatizzati . Ad esempio, uno strumento automatico potrebbe trovare qualcosa di sbagliato in questo codice JavaScript?

// The price should be incremented when a rebate is available.
if (this.rebates.findFor(this.customer, this.product)) {
    this.customPrice -= this.computeRebate(this.customer);
}

D'altra parte, qualsiasi revisore troverà immediatamente due problemi:

  • Il commento è chiaramente sbagliato e fuorviante. Non stiamo incrementando il prezzo.
  • Anche se fosse corretto, il commento rimane inutile. Se le due righe di codice non sono chiare nel contesto, un refactoring minore può renderlo abbastanza esplicito da essere in grado di eliminare il commento.

Un altro vantaggio delle revisioni del codice è la capacità di insegnare ai programmatori junior . Ad esempio, un controllore automatico troverà questo pezzo di codice C # scritto da un programmatore principiante corretto:

var result = new List<Day>();
foreach (var day in days)
{
    if (day.HasAppointment)
    {
        result.Add(day);
    }
}

return result;

mentre uno sviluppatore più esperto suggerirà di riscriverlo in questo modo:

return days.Where(day => day.HasAppointment);

Anche se uno strumento automatico farà tali suggerimenti (dopotutto, è possibile rilevare a livello di codice procedurale che può essere riscritto usando lo stile funzionale), questo strumento sarebbe in grado di spiegare al programmatore principiante i caveat di tale riscrittura ( valutazione pigra)?

    
risposta data 28.11.2014 - 04:07
fonte
6

IMO, le revisioni manuali del codice aiutano a formare una comprensione condivisa del codice base, riducendo la dipendenza da un singolo o un piccolo gruppo di individui. Può anche insegnare una cosa o due nelle funzioni di programmazione stile / linguaggio per il revisore che rivede il codice. Funziona alla grande se tutti esaminano il codice di ogni altra persona o se sono in coppia con un senior che è in grado di esaminare.

Quindi, a meno che non sia una singola persona a riesaminare il codice di 10+ individui e si introduca il sonarqube per automatizzare parte di quel processo, preferirei mantenere le revisioni manuali del codice per i punti sopra indicati.

    
risposta data 28.11.2014 - 06:10
fonte

Leggi altre domande sui tag