Хорошие инструменты визуализации кода / рефакторинга для C ++? - PullRequest
7 голосов
/ 18 мая 2010

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

Существуют ли какие-либо хорошие инструменты визуализации для периода C ++, и есть ли такие, которые действительно хорошо работают с "продвинутыми" функциями C ++? Возможно, сейчас все будет лучше, чем мой подход, в основном это ручка + бумага или пошаговое выполнение отладчика. Метод отладчика может быть полезен для отслеживания определенного пути кода, но не подходит для просмотра всей картины, которая вам действительно нужна при серьезном рефакторинге.

РЕДАКТИРОВАТЬ: я должен упомянуть, что плагины Visual Studio не будут мне сильно помогать, так как наши вещи в основном только для Linux.

Ответы [ 7 ]

3 голосов
/ 18 мая 2010

Вы можете использовать Doxygen, чтобы начать; После того, как простая часть сделана (макет класса, иерархии, ...), вам нужно написать об остальной части программного обеспечения, которое не может быть легко обработано такими инструментами, как doxygen.

удачи.

М.

2 голосов
/ 18 мая 2010

Визуализация:

Я не в курсе того, что происходит за пределами мира UML, но то, что доступно в нем, не очень хорошо реконструирует современный C ++ на основе шаблонов. В лучшем случае вы получите простые диаграммы классов.

Рефакторинг:

Mozilla создала dehydra / Pork инструменты для анализа и рефакторинга их источника C ++, чтобы изменить их XPCOM старого стиля и управление памятью с лучшими идиомами. Он не привязан к инструменту визуализации, а использует сопоставление с образцом и JavaScript. Я сам не пробовал, потому что мне повезло, что я не оказался в положении, когда это требуется.

1 голос
/ 21 мая 2010

Существует плагин KDevelop для визуализации кода: http://liveblue.wordpress.com/2009/08/21/gsoc-wrap-up-static-code-visualization-in-kdevelop/

1 голос
/ 18 мая 2010

Мне не известен инструмент рефакторинга для C ++, который находится даже в той же лиге, что и, например, инструменты рефакторинга, которые вы можете найти для Java. Eclipse / CTD имеет несколько небольших рефакторингов (методы извлечения, сделать public / private / getter + setter), но это все.

Тем не менее Eclipse / CDT - хороший инструмент для обзора огромной базы кода. Функции навигации по коду (показ ссылок, показ определения, объявление объявления, иерархия классов и т. Д.) - лучшее, что я видел в редакторе C / C ++.

1 голос
/ 18 мая 2010

Нет. Нет. Нет. Вам нужно будет документировать и составлять схему кодовой базы вручную; что-то, что уже должно было быть хотя бы частично выполнено.

Существует инструмент рефакторинга, или, по крайней мере, так утверждается, для xemacs. Есть один для VS, но он не очень хорошо работает и знает только 5-10 рефакторингов. Xemacs один, как 250 долларов или что-то. Не знаю ни одного для Затмения. Скорее всего, вам придется выполнять рефакторинг вручную.

0 голосов
/ 21 мая 2010

DMS Software Reengineering Toolkit - это механизм преобразования программ, параметризованный определениями языка. Он имеет полный интерфейс C ++ и используется для массового рефакторинга программных систем, написанных на C ++.

См. Акерс Р., Бакстер И., Мелих М., Эллис Б., Люк К., Практический пример: реинжиниринг моделей компонентов C ++ с помощью автоматического преобразования программ, информационно-программных технологий 49 (3) : 275-291 2007 г. для обсуждения DMS и его применения к модулям C ++ для поддержки программного обеспечения авионики.

0 голосов
/ 18 мая 2010

Я не могу ручаться за это, но существует проект рефакторинга CDT .
edit: эта страница выглядит устаревшей. Может быть, кто-то еще может засвидетельствовать статус рефакторинга CDT?

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