使用nDepend检测直接实例化

时间:2014-07-09 13:53:07

标签: ndepend

使用nDepend API,可能会出现以下内容吗?

我想留意我们的对象工厂被绕过的实例,并且直接实例化具体类。

显然,我需要能够过滤掉以下内容:

StringBuilder stringBuilder = new StringBuilder();

可能通过添加要排除的Where子句类型名称或要检查的名称空间,但我想确保看到:

IMyCustomType item = ObjectFactory.Get<IMyCustomType>();

而不是这个:

MyCustomType item = new MyCustomType();

感谢。

1 个答案:

答案 0 :(得分:1)

下面这样的代码规则可能对你有所帮助,希望它可以理解,不必发表评论:

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 ) }