Запрос, который считает новые операторы
Я пытаюсь создать другой пользовательский запрос с NDepend, но не могу понять это.
Вот в псевдокоде, что я хотел бы запросить:
var list
foreach type t
int newCount = 0
foreach type u in t.TypesUsed
if "new"-operator of u is called anywhere within t
newCount++;
end foreach
list.Add( new Tuple<Type, int>(t, newCount) )
end foreach
return list
Я хотел бы знать, сколько раз "новый"-оператор вызывается где-либо внутри типа.
Я очень плохо знаком с синтаксисом запросов NDepend. Так что некоторые подсказки очень помогут:)
Спасибо!
1 ответ
Решение
Вы можете попробовать этот запрос, который перечисляет для каждого типа t
Все экземпляры создаются в коде t
(то есть тип создается, когда один из его конструктора вызывается через new
оператор).
from t in JustMyCode.Types
let typesInstantiated = from tUsed in t.TypesUsed
where tUsed.Constructors.Any(c => c.IsUsedBy(t))
select tUsed
where typesInstantiated.Count() > 0
select new { t, typesInstantiated }
Результат выглядит так: