Хорошо, поэтому, если мы говорим о , эти метрики Chidamber Kemerer , NDepend возможность писать запросов кода и правил по запросам LINQ (CQLinq) будутответить на все ваши потребности.Например:
WMC Взвешенные методы для класса
warnif count > 0
from t in Application.Types
let methods = t.Methods
.Where(m => !m.IsPropertyGetter &&
!m.IsPropertySetter &&
!m.IsConstructor)
where methods.Count() > 20
orderby methods.Count() descending
select new { t, methods }
DIT Глубина дерева наследования
warnif count > 0
from t in JustMyCode.Types
where t.IsClass
let baseClasses = t.BaseClasses.ExceptThirdParty()
where baseClasses.Count() >= 5
select new { t, baseClasses,
// The metric value DepthOfInheritance takes account
// of third-party base classes
t.DepthOfInheritance
}
NOC Число детей
from t in Types
where t.IsClass
let childClasses = t.DerivedTypes
where childClasses.Count() > 0
orderby childClasses.Count() descending
select new { t, childClasses }
CBO Связь между классами объектов
from t in Application.Types
let typesUsed = t.TypesUsed.ExceptThirdParty()
orderby typesUsed.Count() descending
select new { t, typesUsed }
и т. Д. ...