使用NDepend继承的方法依赖关系

NDepend的类浏览器似乎没有显示继承方法的选项。

例如,我们有一个场景,其中有成千上万的根单元模型对象,它们从RootModel下降。 只有RootModel定义了Save() 。 如何构造一个查询来查找SampleModel (:RootModel)调用Save()的所有实例?

SELECT METHODS WHERE IsUsing "SampleModel.Save()" ORDER BY DepthOfIsUsing

...被拒绝: 不是有效的程序集,名称空间,类型,方法或字段名称

这似乎是最好的近似值,但不是确切的:

SELECT METHODS WHERE IsUsing "SampleModel" AND IsUsing "RootModel.Save()" ORDER BY DepthOfIsUsing

这似乎是一个相当重的限制,不是吗? 什么是解决方法?


从NDepend的静态角度来看,类SampleModel没有声明一个Save()方法。 这就是为什么第一个查询不能编译的原因。

第二个查询的确对你的情况是件好事。 为了做到这一点,您可以使用LINQ上的代码查询(CQLinq功能),并用这种方式重写它:

from m in Application.Types.Where(t => t.DeriveFrom("MyNamespace.RootModel"))
         .ChildMethods()
where m.IsUsing("MyNamespace.RootModel.Save()")
select new { m, m.ParentType }
链接地址: http://www.djcxy.com/p/37727.html

上一篇: Inherited method dependencies using NDepend

下一篇: how to connect the dots?