2016-05-01 15 views
3

Ich habe NDepend (14-Tage-Testversion) als Visual Studio 2015 Extension installiert, und es funktioniert jetzt.Wie man Code Metriken lke Fan-In/Fan-Out mit NDepend

Ich möchte einige Metriken einiger Klassen in meiner Lösung erhalten:

  • Länge von Identifikatoren
  • Fan in/auffächern
  • gewichtete Methode der Klasse
  • Kopplung von Klassenobjekten

Ich habe keine nützliche Anleitung von seiner offiziellen Website gefunden, weiß jemand?

Danke.

Antwort

5

Sie können C# LINQ code queries schreiben, um so ziemlich jede Code-Metrik zu erhalten, die Sie benötigen.

Länge von Identifikatoren

from t in Application.Types 
select new { t, t.SimpleName.Length } 

Ventilator in/auffächern

from t in Application.Types 
select new { t, t.TypesUsed, t.TypesUsingMe } 

gewichtete Methode der Klasse

from t in Application.Types 
select new { t, t.CyclomaticComplexity } 

Kopplung von Klassenobjekten (gemäß this definition)

from n in Application.Namespaces 
let NumberOfClasses = n.ChildTypes.Count() 
let NumberOfLinks = n.ChildTypes.SelectMany(t => t.TypesUsed).Distinct().Count() 
select new { n, CBO = NumberOfLinks/(float)NumberOfClasses } 

Sie können dann eine Code-Abfrage in eine Coderegel mit dem Präfix warnif count > 0 umwandeln und die Regel speichern, um sie in Visual Studio und/oder in Ihrem BuildProcess auszuführen.

// <Name>Type name shouldn't exceed 25 char</Name> 
warnif count > 0 
from t in Application.Types 
where t.SimpleName.Length > 25 
orderby t.SimpleName.Length descending 
select new { t, t.SimpleName.Length } 

enter image description here

+0

Aber ich bin immer noch NDepend zu erkunden, können Sie einen Blick auf diese Frage: http: //stackoverflow.com/questions/37083906/how-to-use-cqlinq-to- get-metrics-of-methods-und-fields-in-one-query, es geht um dasselbe, aber ich denke, ich sollte es lieber in einer separaten Frage besprechen, danke. – VincentZHANG

+0

Darüber hinaus, was ist der Algorithmus der Cyclomatic Complexity für Methoden? Ist es das gleiche wie hier beschrieben: http://staff.unak.is/andy/StaticAnalysis0809/metrics/cyclomatic_complexity.html? Ich habe Diskrepanz gefunden. – VincentZHANG

+0

Hier finden Sie alle Details zu NDepend CC: http://www.ndepend.com/docs/code-metrics#CC –

Verwandte Themen