Окно Call Hierarchy в Visual Studio

175

Окно Call Hierarchy появилось в версии Visual Studio 2010 - оно отображает все вызовы, поступающие в метод и исходящие из него (а также свойства или конструкторы, но при условии, что на них ссылаются как на методы). Это позволяет увидеть, где используется метод и как эти вызовы влияют на другие методы. Кроме того, благодаря этому окну можно легко отследить выполняемые ветки и поток управления.

Для того чтобы увидеть иерархию вызовов метода, выберите определение этого метода в окне редактора кода и выберите команду View Call Hierarchy в контекстном меню, появляющемся после щелчка правой кнопкой мыши. Это действие добавляет данный метод в дерево, отображаемое в окне Call Hierarchy вместе с двумя подузлами - Calls То (MethodName) и Calls From (MethodName), как показано на рисунке ниже:

Окно Call Hierarchy

Раскрыв узел Calls То (MethodName), можно увидеть список всех методов, которые вызывают данный метод. Раскрыв узел Calls From (MethodName), можно увидеть все остальные методы, которые вызываются из указанного метода. Окно Call Hierarchy позволяет проследить результаты анализа вызовов и построить иерархию потока выполнения программы - т.е. увидеть, какие коды вызывают данный метод, какие методы вызывает он, и т.д.

Дважды щелкнув на методе, можно перейти на определение метода в окне редактора кода.

Кроме того, иерархию вызовов можно увидеть в окне Class View или Object Browser, если щелкнуть правой кнопкой на методе и выбрать команду View Call Hierarchy в контекстном меню.

Несмотря на то что окно Call Hierarchy может быть как плавающим, так и закрепленным, оно работает не так, как окно Code Definition. Перемещение по разным методам в окне редактора кода не приводит к автоматическому выводу на экран иерархии классов для метода, на который указывает курсор. Для того чтобы это произошло, необходимо явно потребовать, чтобы на экран была выведена иерархия классов для этого метода и показано, в какой точке она должна отобразиться в окне Call Hierarchy. Окно Call Hierarchy может отображать иерархию классов для нескольких методов сразу, и каждый раз в окно будет добавляться новая иерархия вызовов для нового метода, а не обновляться существующая иерархия классов. Если вы не хотите, чтобы отображалась иерархия классов для конкретного метода, удалите ее, выбрав окно и нажав клавишу <Delete> (или на красном крестике на инструментальной панели).

Это окно может оказаться очень удобным при работе с неизвестным проектом или при переделке проекта.

Пройди тесты
Лучший чат для C# программистов