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

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

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

Править: Я должен упомянуть, что плагины Visual Studio не будут большим количеством справки ко мне, так как наш материал главным образом только для Linux.

7
задан Paul D. 18 May 2010 в 18:38
поделиться

7 ответов

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

1
ответ дан 7 December 2019 в 03:12
поделиться

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

удачи.

М.

4
ответ дан 7 December 2019 в 03:12
поделиться

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

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

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

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

2
ответ дан 7 December 2019 в 03:12
поделиться

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

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

1
ответ дан 7 December 2019 в 03:12
поделиться

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

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

1
ответ дан 7 December 2019 в 03:12
поделиться

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

0
ответ дан 7 December 2019 в 03:12
поделиться

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

См. Akers, R, Baxter, I., Mehlich, M., Ellis, B., Luecke, K., Практический пример: реинжиниринг моделей компонентов C ++ с помощью автоматического преобразования программ, информационных и программных технологий 49 (3) : 275-291 2007 для обсуждения DMS и того, как она была применена к модулям C ++ для поддержки программного обеспечения авионики.

0
ответ дан 7 December 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: