Существуют ли какие-либо инструменты для визуализации методов шаблона / класса и их использования?

StackOverflow https://stackoverflow.com/questions/35745

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Есть ли какой-нибудь хороший инструмент, который может каким-то образом визуализировать зависимости и нарисовать красивое дерево вызовов или что-то подобное?

Код находится на C ++ в Visual Studio, если это поможет сузить какой-либо выбор.

Это было полезно?

Решение

Вот несколько вариантов:

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

Другие советы

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

Дэвид, спасибо за предложения. Я провел выходные, пробуя программы.

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

Кажется, что все 3 имеют проблемы с шаблонами C ++ в той или иной степени. CC-Rider просто разбился в середине анализа, и CodeDrawer не показывает многих взаимосвязей. Doxygen работал довольно хорошо, но он также не обнаруживал и не отображал все отношения и вместо этого перегружал меня большим количеством ссылок на макросы, пока я не отфильтровал их.

Так что, может быть, мне следует уточнить "большую кодовую базу" немного о возможных других предложениях: > 100 000 строк кода в целом распределены по более чем 100 файлам шаблонов плюс несколько файлов классов, собрав их все вместе.

Есть ли еще какие-нибудь инструменты, которые могли бы быть полезны для задачи и могли бы работать лучше (более тщательно)? Да и конкретно: что-нибудь, что понимает интерфейсы IDL и COM?

  

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

Конечно, я это сделал, но, как я уже говорил, doxygen не рассматривает интерфейсы между объектами, как они определены в IDL. Это "только" показывает прямые вызовы C ++.

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

В Java я бы начал с JDepend. В .NET, с NDepend. Не знаю о C ++.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top