Могут быть и другие способы сделать это, но NDepend может решить эту проблему, и у вас есть пробная версия, чтобы помочь вам.Он обладает очень мощным языком запросов кода , который можно использовать для выполнения sql-подобных запросов к скомпилированному коду.Из моего ограниченного опыта, это звучит очень подходящим для вашей проблемы, так как вы можете запросить пути выполнения кода и получить графическое представление.
Вы можете начать с:
SELECT METHODS WHERE
DepthOfIsUsing "System.Int32.TryParse(String,Int32&)" >= 0
ORDER BY DepthOfIsUsing
Выполнение этого запросапротив ваших сборок вернут все методы, которые прямо и (в вашем случае, что более важно) косвенно используют «TryParse».По сути, это даст вам информацию о тех методах, которые непосредственно используют «TryParse», и методах, которые вызывают эти методы, и методах, которые вызывают эти методы и т. Д.- нажмите на заголовок результатов «n методов соответствует» и выберите в контекстном меню «Экспорт n методов, соответствующих графику».Это даст вам графическое представление всех деревьев вызовов, оканчивающихся на «TryParse».
Так для следующего кода:
using System;
namespace Scratch
{
public class Program
{
private static void Main()
{
new Test2().DoSomething2("hello");
new Test4().DoSomething4("world");
}
}
public class Test2
{
public void DoSomething2(string s)
{
new Test3().DoSomething3(s);
}
}
public class Test3
{
public void DoSomething3(string s)
{
int i;
Console.WriteLine(int.TryParse(s, out i));
}
}
public class Test4
{
public void DoSomething4(string s)
{
int i;
Console.WriteLine(int.TryParse(s, out i));
}
}
}
Результаты запроса:
http://gojisoft.com/_blog/wp-content/uploads/2010/07/CQLTryParseQueryResults.png
И сгенерированный график:
http://gojisoft.com/_blog/wp-content/uploads/2010/07/DependencyGraphSnapshot.png