2009-04-07 7 views
5

Je sais que je peux accéder à la complexité cyclomatique de mon code dans Visual Studio 2008 Team Explorer en cliquant avec le bouton droit de la souris et en sélectionnant «Calculer les métriques de code». Je voudrais exposer ces données pour une application web pour l'afficher. Quelqu'un connaît-il un moyen d'accéder à ces données via une API?Déduire la complexité cyclomatique dans .NET

Merci pour votre aide!

Répondre

2

J'utilise NDepend pour des choses comme ça. Vous pouvez créer des requêtes CQL dans NDepend et les exécuter.
Exemple:

SELECT METHODS WHERE CC > 8 

renvoie les méthodes avec une complexité cyclomatique supérieure à 8.

-1

je ne fais pas - ne Visual Studio ont des API de ce genre? - mais la complexité cyclomatique est relativement facile à calculer. Gendarme pourrait être votre réponse.

+0

Est-ce Gendarme être bon remplacement pour FxCop? – Paco

1

Il n'y a pas d'API. Mais vous pouvez lire un fichier XML généré par le Code Metrics Power Tool. Donc, vous générer les métriques de code fichier XML par ligne de commande comme:

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

saisir ensuite les données que vous voulez de MetricsResults.xml.

Plus d'informations sur l'outil électrique here.

Si vous souhaitez exécuter des métriques de code dans votre build TFS, voir here et here pour les options.

2

Comme décrit dans ce answer, on peut tirer parti de l'API du Gendarme outil open source pour calculer la complexité cyclomatique d'une méthode

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); 
    } 
}
Questions connexes