Показатели CK из проекта C# с Ndepend

У меня есть проект для школы. Теперь мне нужно сделать из него отчет по всем метрикам CK (метрики Chidamber Kemerer). Отчет должен быть похож на таблицу всех этих показателей. Вопрос в том, как сделать из Ndepend этот отчет, который он генерирует, это не то, что я ищу.

Пожалуйста, помогите и скажите, как это сделать... может быть, какие-то советы, документы или что-то это очень важно...


person szkra    schedule 20.12.2010    source источник
comment
Многие инструменты поддерживают множество метрик, но почти ни один из них не поддерживает метрики, определенные в оригинальных статьях...   -  person Gabriel Ščerbák    schedule 01.02.2011


Ответы (2)


Итак, если мы говорим об этих показателях Чидамбер Кемерер, возможность 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 
}

НОК Количество детей

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 }

и так далее...

person Patrick from NDepend team    schedule 21.12.2010

Есть ли в NDepend прямой способ измерения RFC (RFT) в CQL? Или нам нужно написать CQL-запрос для рекурсивного подсчета вызываемых методов в используемых классах (типах) самих себя? Если да, то как это выглядит?

person Aurimas Šimkus    schedule 24.03.2014