Как сделать «Диаграмму стека вызовов» - PullRequest
2 голосов
/ 02 апреля 2009

Создание диаграммы стека вызовов

Мы только недавно были вовлечены в большой проект, который требует от нас войти в код (дух).

Мы используем различные методы для ознакомления с ним, точки останова и т. Д. Однако мы обнаружили, что одним из методов является создание дерева вызовов приложения, какой самый простой / быстрый способ сделать это?

по коду? Плагины? Вручную

Проект представляет собой приложение C # для Windows.

Ответы [ 6 ]

3 голосов
/ 03 апреля 2009

Статический анализатор NDepend позволяет получить статический метод граф вызовов , как показано ниже Отказ от ответственности: я один из разработчиков инструмента

Call graph

Для этого вам просто нужно экспортировать в график результат запроса кода CQLinq :

code query exporting

Такой кодовый запрос может быть сгенерирован фактически для любого метода благодаря контекстному меню, показанному ниже.

Select methods that use me directly or indirectly

1 голос
/ 02 апреля 2009

Не прямой ответ на ваш вопрос, но NDepend - хороший инструмент для получения 100-футового представления кодовой базы, и он позволяет углубиться в связи между классами (и многими другими функциями)

1 голос
/ 02 апреля 2009

Всякий раз, когда я начинаю новую работу (что часто является контрактом), я провожу два-три дня, читая каждый отдельный исходный файл в хранилище, и веду записи по каждому классу в простом текстовом файле. Это довольно трудоемко, но это означает, что вы получите действительно хорошее представление о том, как совместим проект, и у вас есть надежная карта, когда вам нужно найти класс, который что-то делает.

Хотя я люблю UML / создание диаграмм при запуске проекта, я лично не нахожу их вообще полезными при изучении существующего кода.

0 голосов
/ 02 апреля 2009

Не для того, чтобы быть застрявшей записью, но если я включу ее и остановлю несколько раз, и каждый раз получаю стек вызовов, это дает мне действительно хорошее представление о структуре вызовов, которая составляет большую часть времени. Однако это не дает мне структуры вызовов для вещей, которые происходят очень быстро.

0 голосов
/ 02 апреля 2009

Вы имеете в виду что-то вроде этого: http://erik.doernenburg.com/2008/09/call-graph-visualisation-with-aspectj-and-dot/

0 голосов
/ 02 апреля 2009

Редактировать: Я полагаю, что CLR Profiler от Microsoft способен отображать дерево вызовов для работающего приложения. Если этого недостаточно, я оставил ссылку, которую я разместил ниже, на случай, если вы захотите начать с нестандартного решения.


Вот статья CodeProject , которая может указать вам правильное направление:

Предлагаемая здесь загрузка - это Visual Studio 2008 C # проект для простого утилита для отображения вызова функции пользователя деревья в коде C #.

Этот список дерева вызовов, кажется, работает нормально для моего стиля кодирования, но будет вероятно, будет ненадежным для некоторых других стили кодирования. Предлагается здесь с двумя мыслями: во-первых, некоторые программисты могут найти это полезным, как есть; во-вторых, я был бы признателен, если кто-то, кто в курсе на C # анализ будет обновлять его включая точный C # парсер и получить улучшенную утилиту, которая надежен независимо от стиля кодирования

Исходный код доступен для загрузки - возможно, вы можете использовать его в качестве отправной точки для пользовательского решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...