2009-08-13 24 views

Antwort

1

Halstead's Software Science ist eine fantastische Metriken Suite, die Sie interessanten Einblick in die tatsächlichen Konstrukte des Programms geben.

Es gibt auch ein Modell von Card and Glass, aber ich bin nicht sicher, ob das außerhalb von Büchern verfügbar ist. Ich würde es trotzdem suchen.

2

Wikipedia bietet eine simple overview of metrics.

Es gibt tatsächlich viele und viele Metriken. Tatsächlich kann die beliebige Funktion des Quellcodes, der Quellcode einer Messskala zuordnet (Integer, Reals, Klassifikationsaufzählungen), als eine Metrik angesehen werden.

Das Problem mit den meisten Code-Metriken ist, dass sie eher proportional zu SLOC sind, und wenn das der Fall ist, ist SLOC genauso gut. Was am besten mit Metriken zu tun hat, ist, Ihren Code jetzt zu messen und zu verfolgen, wie sich die Metrik im Laufe der Zeit ändert. Der Trend, nach oben oder unten, wird Ihnen fast mehr sagen als die Metrik selbst. Up bedeutet schlechte Nachrichten; Der Code wird komplizierter.

Es ist auch nützlich, Code- (Komplexitäts-) Metriken in Verbindung mit Fehlerraten zu betrachten. Eine hohe Komplexität in einem Modul, und und hohe Fehlerrate im selben Modul, deutet darauf hin, dass ein Redesign dieses Moduls eine gute Idee sein könnte, um weitere Probleme auf dem Gebiet zu verhindern. Hohe Komplexität und niedrige Fehlerraten lassen vermuten, dass der Code unheimlich aussieht, aber nicht.

0

Werfen Sie einen Blick auf die durch das Tool unterstützt 82 code metrics Definitionen NDepend in Visual Studio 2012 integriert, 2010 und 2008 Disclaimer: Ich bin einer der Entwickler des Werkzeugs

Beachten Sie, dass diese Metriken Code kann durch CQLinq queries and rules komponiert werden, um Ihre eigenen benutzerdefinierten Code-Metriken zu definieren.

Zum Beispiel ist eine beliebte Code-Metrik außer Cyclomatic Complexity die C.R.A.P metric. Grundsätzlich definiert die C.R.A.P crappy Code als komplexe Methoden (mit hohen Cyclomatic Complexity), schlecht durch Tests abgedeckt. Die default CQLinq rule zu definieren, die C.R.A.P Metrik ist:

// <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 } 
Verwandte Themen