Da diversi anni sono un grande fan dell'uso di strumenti di analisi del codice statico per verificare la qualità del codice sorgente. Per lo più stiamo sviluppando C #, quindi NDepend era il modo migliore per me. La maggior parte delle volte eseguo manualmente l'analisi, ad esempio una volta ogni due settimane.
Ultimamente ho avuto una discussione con un collega se dovessimo includere NDepend nel nostro processo di integrazione continua in modo che la compilazione diventi automaticamente rossa se, per esempio, un metodo ha una complessità troppo alta.
La mia opinione è che non è possibile definire metriche valide per l'intero codice. Penso che potresti avere accesso a molti "reclami falsi" - codice che generalmente va bene ma non corrisponde alle metriche. Il seguente codice ad esempio ha una complessità molto alta, anche se penso che a volte non puoi impedirlo.
if (remoteResult == RemoteResult.Dummy1 || remoteResult == RemoteResult.Dummy2 ||
remoteResult == RemoteResult.Dummy3 || remoteResult == RemoteResult.Dummy4 || ...
Naturalmente sarebbe anche utile aumentare le soglie delle metriche, ma in questo caso perderei preziose informazioni.
Un altro esempio, ad esempio, è il numero massimo di membri per una classe. Mi piacerebbe tenere questo inferiore a 10 per le classi con un sacco di logica. Ma d'altra parte ci sono molti "modelli di dominio" con più di 10 proprietà. Non mi piacerebbe estrarre un'altra classe solo a causa della metrica - in quanto ciò ridurrebbe la leggibilità e non la migliorerebbe, il che dovrebbe essere l'obiettivo delle metriche sulla qualità del codice.
Pensi che il controllo automatico della qualità del codice tramite metriche sia possibile? Se sì, per tutti o solo per metriche specifiche? (Un elenco delle metriche comuni di NDepend può essere trovato all'indirizzo link )