호출 계층 구조Call Hierarchy

호출 계층 구조를 사용하면 선택된 메서드, 속성 또는 생성자에서 모든 호출을 표시하여 코드를 탐색할 수 있습니다.Call Hierarchy enables you to navigate through your code by displaying all calls to and from a selected method, property, or constructor. 이렇게 하면 코드가 흐르는 방식을 더 잘 이해하고 코드에 대한 변경 사항의 영향을 평가할 수 있습니다.This enables you to better understand how code flows and to evaluate the effects of changes to code. 메서드 호출의 복합 체인과 코드에 대한 추가적인 진입점을 보기 위해 여러 수주의 코드를 검토하여 모든 가능한 실행 경로를 탐색할 수 있습니다.You can examine several levels of code to view complex chains of method calls and additional entry points to the code, which enables you to explore all possible execution paths.

호출 계층 구조는 디버거를 통해 표시되는 호출 스택 달리 디자인 타임에서 사용 가능합니다.Call Hierarchy is available at design time, unlike the call stack that is displayed by the debugger.

호출 계층 구조 사용Using Call Hierarchy

호출 계층 구조 창을 표시하려면 메서드, 속성 또는 생성자 호출의 이름을 마우스 오른쪽 단추로 클릭한 다음 호출 계층 구조 보기를 클릭합니다.To display the Call Hierarchy window, right-click the name of a method, property, or constructor call, and then click View Call Hierarchy.

트리 뷰 창의 호출 계층 구조 창에 멤버 이름이 나타납니다.The member name appears in a tree view pane in the Call Hierarchy window. 멤버 노드를 확장하는 경우 호출 대상멤버 이름호출멤버 이름 하위 노드가 나타납니다.If you expand the member node, Calls Tomember name and Calls Frommember name subnodes appear. 다음 그림은 호출 계층 구조 창에서 이러한 노드를 보여줍니다.The following illustration shows these nodes in the Call Hierarchy window.

노드 하나가 열린 호출 계층 구조Call Hierarchy with one node open
호출 계층 구조 창Call Hierarchy window

  • 호출 대상 노드를 확장할 경우 선택한 멤버를 호출하는 모든 멤버가 표시됩니다.If you expand the Calls To node, all members that call the selected member are displayed.

  • 호출 시작 노드를 확장할 경우 선택한 멤버가 호출하는 모든 멤버가 표시됩니다.If you expand the Calls From node, all members that are called by the selected member are displayed.

그런 다음, 이러한 각각의 하위 멤버를 호출 대상호출 시작 노드로 확장할 수 있습니다.You can then expand each of these subnode members into Calls To and Calls From nodes. 이렇게 하면 다음 그림에 나와 있는 것처럼 호출자 스택을 탐색할 수 있습니다.This enables you to navigate into the stack of callers, as shown in the following illustration.

여러 노드가 열린 호출 계층 구조Call Hierarchy Multiple Nodes Open
호출 계층 구조 창Call Hierarchy window

가상 또는 추상으로 정의된 멤버의 경우 메서드 이름 재정의 노드가 표시됩니다.For members that are defined as either virtual or abstract, an Overrides method name node appears. 인터페이스 멤버의 경우 메서드 이름 구현 노드가 표시됩니다.For interface members, an Implements method name node appears. 이러한 확장 가능한 노드는 호출 대상호출 시작 노드와 같은 수준에서 표시됩니다.These expandable nodes appear at the same level as the Calls To and Calls From nodes.

도구 모음의 검색 범위에는 내 솔루션, 현재 프로젝트현재 문서에 대한 선택 사항이 포함되어 있습니다.The Search Scope box on the toolbar contains choices for My Solution, Current Project, and Current Document.

호출 계층 구조 트리 뷰 창에서 자식 멤버를 선택할 경우:When you select a child member in the Call Hierarchy tree view pane:

  • 호출 계층 구조 세부 정보 창은 상위 멤버에서 호출되는 해당 자식 멤버에 코드의 모든 라인을 표시합니다.The Call Hierarchy details pane displays all lines of code in which that child member is called from the parent member.

  • 코드 정의 창이 열려 있는 경우 선택한 멤버에 대 한 코드를 표시 합니다.The Code Definition Window, if open, displays the code for the selected member. 이 창은 C# 및 C++에서 사용 가능합니다.This window is available in C# and C++. 이 창에 대한 자세한 내용은 코드 구조 보기를 참조하세요.For more information about this window, see Viewing the Structure of Code.

참고

호출 계층 구조에서는 메서드가 이벤트 처리기로 추가되거나 대리자에 할당되는 위치가 포함된 메서드 그룹 참조를 찾지 않습니다.Call Hierarchy does not find method group references, which includes places where a method is added as an event handler or is assigned to a delegate. 메서드에 대한 모든 참조를 찾으려면 모든 참조 찾기 명령을 사용할 수 있습니다.To find all references to a method, you can use the Find All References command.

바로 가기 메뉴 항목Shortcut Menu Items

다음 표는 트리 뷰 창에서 노드를 마우스 오른쪽 단추로 클릭할 때 사용할 수 있는 여러 가지 바로 가기 메뉴 옵션을 설명합니다.The following table describes several shortcut menu options that are available when you right-click a node in the tree view pane.

상황에 맞는 메뉴 항목Context Menu Item 설명Description
새 루트로 추가Add As New Root 선택한 노드를 새 루트 노드로 트리 뷰 창에 추가합니다.Adds the selected node to the tree view pane as a new root node. 이를 통해 특정 하위 트리에 집중할 수 있습니다.This enables you to focus your attention on a specific subtree.
루트 제거Remove Root 트리 뷰 창에서 선택한 루트 노드를 제거합니다.Removes the selected root node from the tree view pane. 이 옵션은 루트 노드에서만 사용할 수 있습니다.This option is available only from a root node.

또한 루트 제거 도구 모음 단추를 선택하여 선택한 루트 노드를 제거할 수도 있습니다.You can also use the Remove Root toolbar button to remove the selected root node.
정의로 이동Go To Definition 선택한 노드에서 정의로 이동 명령을 실행합니다.Runs the Go To Definition command on the selected node. 멤버 호출 또는 가변 정의에 대한 원래 정의로 이동합니다.This navigates to the original definition for a member call or variable definition.

정의로 이동 명령을 실행하려면 선택한 노드를 두 번 클릭 하거나 선택한 노드에서 F12 키를 누를 수 있습니다.To run the Go To Definition command, you can also double-click the selected node or press F12 on the selected node.
모든 참조 찾기Find All References 선택한 노드에서 모든 참조 찾기 명령을 실행합니다.Runs the Find All References command on the selected node. 그러면 클래스 또는 멤버를 참조하는 프로젝트에서 모든 코드 줄을 찾습니다.This finds all the lines of code in your project that reference a class or member.

또한 SHIFT+F12를 사용하여 선택한 노드에서 모든 참조 찾기 명령을 실행할 수도 있습니다.You can also use SHIFT+F12 to run the Find All References command on the selected node.
복사Copy 선택한 노드(하위 노드 제외)의 내용을 복사합니다.Copies the contents of the selected node (but not its subnodes).
새로 고침Refresh 선택한 노드를 축소한 다음 다시 확장하면 현재 정보가 표시됩니다.Collapses the selected node so that re-expanding it displays current information.