Мои отчеты NDepend предупреждают, что «нестатические классы должны быть созданы или превращены в статические». Большинство классов в возвращаемом списке регистрируются через мой контейнер IOC (Unity) и создаются моей инфраструктурой IOC во время выполнения.
Учитывая, что NDepend выполняет статический анализ, он не будет знать о создании экземпляра во время выполнения. Я надеюсь, что можно настроить CQL, чтобы он знал о моем контейнере.
Это стандартный запрос, который выполняет NDepend:
warnif count > 0
from t in JustMyCode.Types
where t.IsClass &&
//!t.IsPublic && // if you are developping a framework,
// you might not want to match public classes
!t.IsStatic &&
!t.IsAttributeClass && // Attributes class are never seen as instantiated
!t.DeriveFrom("System.MarshalByRefObject".AllowNoMatch()) // Types instantiated through remoting infrstructure
// find the first constructor of t called
let ctorCalled = t.Constructors.FirstOrDefault(ctor => ctor.NbMethodsCallingMe > 0)
// match t if none of its constructors is called.
where ctorCalled == null
select new { t, t.Visibility }
Могу ли я настроить этот запрос, чтобы исключить классы, на которые есть ссылки в моей регистрации контейнера IOC?