Domanda

Oltre complessità ciclomatica cosa altro codice esistono sistemi metrici?

Altri suggerimenti

Wikipedia fornisce una semplice di metriche .

In realtà ci sono un sacco, e un sacco di metriche. In realtà, qualsiasi la funzione del codice sorgente che associa il codice sorgente a una scala di misura (numeri interi, reali, di classificazione enumerazioni) può essere considerato come una metrica.

Il problema con la maggior parte delle metriche del codice è che essi tendono ad essere proporzionale alla SLOC, e se questo è il caso, SLOC è altrettanto buono. Che cosa è meglio fare con metriche è quello di misurare il vostro codice ora, e tenere traccia di come i cambiamenti metrica nel tempo; la tendenza, alto o in basso, vi dirà quasi più che la volontà stessa metrica. Fino significa cattive notizie; il codice è sempre più complicata.

E 'anche utile considerare di codice (la complessità) metriche in collaborazione con i tassi di bug. Una elevata complessità in un modulo, e e alto tasso di errore nel modulo stesso, suggerisce che una riprogettazione di tale modulo può essere una buona idea per evitare ulteriori problemi nel campo. Elevata complessità e prezzi bassi bug suggerirebbero il codice sembra spaventoso, ma non lo è.

Software Scienza di Halstead è una fantastica suite metriche che si può dare interessante spaccato costrutti effettivi del vostro programma.

C'è un modello creato da carta e vetro pure, ma non sono sicuro se questo è disponibile al di fuori dei libri. Vorrei cercare a prescindere.

Dai un'occhiata ai 82 definizioni supportati dallo strumento NDepend integrato in Visual Studio 2012, 2010 e 2008. Disclaimer: io sono uno degli sviluppatori dello strumento

Si noti che queste metriche del codice possono essere composti attraverso CQLinq query e le regole per definire le proprie metriche codice personalizzato.

Per esempio, un codice popolare metrica diversa da complessità ciclomatica è CRAP metrica . Fondamentalmente, il C.R.A.P definire codice scadente come metodi complessi (con alta complessità ciclomatica ), in cui erano presenti prove. Il predefinita CQLinq regola per definire il CRAP metrica è:

// <Name>C.R.A.P method code metric</Name>
// Change Risk Analyzer and Predictor (i.e. CRAP) code metric
// This code metric helps in pinpointing overly complex and untested code.
// Reference: http://www.artima.com/weblogs/viewpost.jsp?thread=215899
// Formula:   CRAP(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m)
warnif count > 0
from m in JustMyCode.Methods

// Don't match too short methods
where m.NbLinesOfCode > 10

let CC = m.CyclomaticComplexity
let uncov = (100 - m.PercentageCoverage) / 100f
let CRAP = (CC * CC * uncov * uncov * uncov) + CC
where CRAP != null && CRAP > 30
orderby CRAP descending, m.NbLinesOfCode descending
select new { m, CRAP, CC, uncoveredPercentage = uncov*100, m.NbLinesOfCode }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top