Vous pouvez écrire C# LINQ code queries pour obtenir à peu près n'importe quelle métrique de code dont vous avez besoin.
longueur d'identificateurs
from t in Application.Types
select new { t, t.SimpleName.Length }
ventilateur/ventilateur sur
from t in Application.Types
select new { t, t.TypesUsed, t.TypesUsingMe }
méthode pondérée de classe
from t in Application.Types
select new { t, t.CyclomaticComplexity }
couplage d'objets de classe (selon 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 }
Vous pouvez ensuite transformer une requête de code en une règle de code avec le préfixe warnif count > 0
et enregistrer la règle pour l'exécuter dans Visual Studio et/ou dans votre BuildProcess.
// <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 }
Cependant, je suis encore à explorer NDepend, pourriez-vous jeter un oeil à cette question: http: //stackoverflow.com/questions/37083906/how-to-use-cqlinq-to- get-metrics-of-methods-and-fields-within-a-single-query, c'est à peu près la même chose, mais je pense que je ferais mieux d'en discuter dans une question séparée, merci. – VincentZHANG
En outre, quel est l'algorithme de complexité cyclomatique pour les méthodes? Est-ce le même que décrit ici: http://staff.unak.is/andy/StaticAnalysis0809/metrics/cyclomatic_complexity.html? J'ai trouvé une discordance. – VincentZHANG
Retrouvez tous les détails sur NDepend CC ici: http://www.ndepend.com/docs/code-metrics#CC –