nDependency查询直接间接方法以查找程序集中的所有方法 [英] nDepend querying direct indirect methods for all methods in an assembly

查看:66
本文介绍了nDependency查询直接间接方法以查找程序集中的所有方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用nDepend提供的CQL检索程序集中所有方​​法的所有直接间接方法调用. 问题是我无法遍历程序集内的所有方法来获取此信息.

I am trying to retrieve all direct indirect method calls for all methods in an assembly using the CQL provided by nDepend. Issue is I am not able to iterate through all methods inside a assembly to get this info.

DepthOfIsUsedBy仅允许使用字符串类型,而不能使用字符串的集合.

The DepthOfIsUsedBy only allows a string type and not a collection of strings.

有没有办法获取程序集中所有方​​法的此信息?

Is there a way t get this info for all methods inside an assembly?

推荐答案

使用方法

此查询是通过下面的菜单生成的. (顺便说一下,可以使用魔术方法

This query has been generated through the menu below. (Btw a more sophisticated solution could be elaborated with the magic method FillIterative(), but it is not necessary here).

记下Prasad的评论,然后尝试查询列出所有直接&的查询该怎么办? A的间接调用者,针对B的每种方法:

Taking account the comment of Prasad, what about trying this query that list all direct & indirect callers from A, for each method of B:

from m in Assemblies.WithNameIn("AsmB").ChildMethods()
where m.IsPubliclyVisible // Optimization
let indirectcallers = m.MethodsCallingMe
                      .FillIterative(
                          callers => callers.SelectMany(m1 => m1.MethodsCallingMe))
                      .DefinitionDomain
                      .Where(m1 => m1.ParentAssembly.Name == "AsmA")
                      .ToArray()  // Avoid double enumeration
where indirectcallers.Length > 0
orderby indirectcallers.Length descending
select new { m, indirectcallers }

这篇关于nDependency查询直接间接方法以查找程序集中的所有方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆