使用nDepend API,是否可能实现以下内容?
我想保持一个监视的实例,我们的对象工厂已经被绕过,一个具体的类被直接实例化。
显然,我需要能够过滤掉这样的内容:
StringBuilder stringBuilder = new StringBuilder();
可以通过在Where子句中添加要排除的类型名称或要检查的名称空间,但我想确保我们看到:
IMyCustomType item = ObjectFactory.Get<IMyCustomType>();
而不是this:
MyCustomType item = new MyCustomType();
谢谢。
也许下面的代码规则可以帮助你,希望它足够容易理解,不需要注释:
warnif count > 0
let ctors = Application.Namespaces.WithNameLike("Namespaces1*").ChildMethods().Where(m => m.IsConstructor)
let codeThatMustNotCallCtors = Application.Namespaces.WithNameLike("Namespaces2*").ChildMethods()
from m in codeThatMustNotCallCtors.UsingAny(ctors)
select new { m, ctorsCalled = m.MethodsCalled.Intersect(ctors ) }