2009-04-07 6 views
5

Ich weiß, dass ich auf die zyklomatische Komplexität meines Codes in Visual Studio 2008 Team Explorer zugreifen kann, indem ich mit der rechten Maustaste klicke und "Berechne Code-Metriken" auswähle. Ich möchte diese Daten für eine Webanwendung zur Verfügung stellen, um sie anzuzeigen. Kennt jemand eine Möglichkeit, auf diese Daten über eine API zuzugreifen?Ableiten der zyklomatischen Komplexität in .NET

Danke für Ihre Hilfe!

Antwort

2

Ich verwende NDepend für solche Sachen. Sie können CQL-Abfragen in NDepend erstellen und ausführen.
Beispiel:

SELECT METHODS WHERE CC > 8 

gibt die Methoden mit einer zyklomatische Komplexität von mehr als 8

-1

ich nicht - nicht Visual Studio hat keine APIs dieser Art? - Aber die Berechnung der zyklomatischen Komplexität ist relativ einfach. Gendarme könnte Ihre Antwort sein.

+0

Ist Gendarme sein guter Ersatz für FxCop zu berechnen? – Paco

1

Es gibt keine API. Aber Sie können eine XML-Datei lesen, die von Code Metrics Power Tool generiert wird. So würden Sie den Code-Metriken XML-Datei über die Befehlszeile wie erzeugen:

metrics /f:MyAssembly.dll /o:MetricsResults.xml 

dann die Daten greifen Sie aus MetricsResults.xml wollen.

Weitere Informationen zum Elektrowerkzeug here. Wenn Sie Code-Metriken in Ihrem TFS-Build ausführen möchten, finden Sie unter here und here Optionen.

2

Wie in dieseranswer beschrieben, kann man die API des Gendarme Open-Source-Tool nutzen, um die zyklomatische Komplexität eines Verfahrens

ModuleDefinition module = ModuleDefinition.ReadModule(fullPathToTheAssembly); 

foreach (var type in module.Types) 
{ 
    foreach (var me in type.Methods) 
    { 
     if (!me.HasBody || me.IsGeneratedCode() || me.IsCompilerControlled) 
      continue; 
     var r = AvoidComplexMethodsRule.GetCyclomaticComplexity(me); 

     Console.WriteLine("{0}: {1}", me.ToString(), r); 
    } 
}