Evil 域

当Evil遇上先知

导航

Visual Studio 2010 中的 Call Hierarchy

Posted on 2009-01-24 11:22  Saar  阅读(3066)  评论(2编辑  收藏  举报

Call Hierarchy是Visual Studio 2010中的一个新的特性,它用来查看函数之间的调用层次关系。它跟原来的Find All References功能相似,但是,更加强调调用层次,而且能够比后者提供更多的信息。

调用方法:

我们首先创建一个示例程序(C#,Console Application):

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 

namespace ConsoleApplication3
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            Console.WriteLine(fun1().ToString());
        }
 

        
private static int fun1()
        
{
            
return fun2();
        }
 

        
private static int fun2()
        
{
            
return fun3();
        }
 

        
private static int fun3()
        
{
            
return 100;
        }
 

        
private static int fun4()
        
{
            
return fun2() * 2;
        }

    }

}

在fun2上右击,在上下文菜单中选择View Call Hierarchy:

InvokeCallHierarchy

然后,一个叫“Call Hierarchy”的工具窗口就出现在了VS底端,把fun2作为根节点显示。

打开“+”,Call Hierarchy会在后台对整个Solution里进行搜索,然后,把找到的节点添加到当前节点以下(例如fun1(),fun4()之类的)。于是,我们就看到所有调用fun2的函数(Calls To)和fun2所调用的函数(Calls From)。

CallHierarchyToolbox

点击具体的函数,可以看到函数所在的具体位置;双击右边的Call Sites行,即可将当前光标导航到对应位置。

同时,右击函数名,还可以把任意出现的函数添加为新的根节点,删除节点按钮可以移除根节点:

CallHierarchyAddNewRoot

通过Call Hierarchy,我们可以更加清晰的去理解程序之间调用关系,帮助我们更多好的阅读程序。

Call Hierarchy在VS 2010 CTP里已经实现,大家已经可以先玩玩。用VB的朋友可能还要稍等上一阵子,期望在Beta1或者Beta2阶段,这个功能在VB中得以实现。