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)?