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 }
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
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
Hier finden Sie alle Details zu NDepend CC: http://www.ndepend.com/docs/code-metrics#CC –