我想在一个类中找到在另一个类上创建的所有方法调用。
例如:
如果class1调用class2.Foo()但不调用class2.Bar(),那么我想知道它。
几乎就像耦合分析一样。这可能与反思有关吗?
答案 0 :(得分:2)
不,反思是关于类型,而不是代码。您可以通过System.Reflection找到任何您想要的类型:字段,属性,事件和方法。但方法调用在CIL中编码。反射在那里停止,你得到的只是MethodInfo.GetMethodBody()。
这并没有阻止一些人;你实际上可以解释通过该方法传递给你的CIL。 Lutz Roeder和他那令人敬畏的.NET Reflector工具闪耀着光芒。我所知道的.NET框架实际工作方式的百分之九十,以及我自己如何利用它,都被放在一个银盘上。它非常棒;给这个人一枚奖牌。并且MSFT使用Reference Source跟进。
答案 1 :(得分:0)
这是可能的,因为它由几个IDE(至少对于Java)完成。无论如何,您可能会进行部分错误的分析。在编译时很难确定在派生类中存在方法覆盖时调用哪些方法。
不,反射是不可能的。您需要静态代码分析来计算耦合度量。
答案 2 :(得分:-1)
您不会说这是代码还是实用程序。在代码中,您需要检查类的CIL。
对于实用程序,您可以尝试.NET Reflector或NCover(我不确定我是否有正确的名称)。 .NET Reflector有一个插件接口,所以你可以用它做点什么。