Существует ли рабочий инструмент рефакторинга C++?

вообразите страницу Excel. Со столбцами, заполненными с формулами для вычисления Вас налоговая декларация.

Вся логика сделана объявленная в ячейках, порядок вычисления, определяют самой формулой, а не процедурно.

, Который является видом того, о чем декларативное программирование - все. Вы объявляете пространство задач и решение, а не поток программы.

Пролог является единственным декларативным языком, у меня есть использование. Это требует другого вида размышления, но хорошо учиться, представить ли только Вас чему-то другому, чем типичный язык процедурного программирования.

159
задан RED SOFT ADAIR 27 March 2015 в 14:03
поделиться

9 ответов

Я считаю Visual Assist X с Visual Studio очень полезным. Другой вариант - Refactor for C ++ .

37
ответ дан 23 November 2019 в 21:37
поделиться

Если вы используете Visual C ++ (Express Edition предоставляется бесплатно ), вы можете использовать Visual Assist с сайта www.wholetomato.com (ссылка на функции рефакторинга C ++).

1
ответ дан 23 November 2019 в 21:37
поделиться

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

Кстати, SlickEdit отказался от своих функций рефакторинга?

6
ответ дан 23 November 2019 в 21:37
поделиться

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

3
ответ дан 23 November 2019 в 21:37
поделиться

У Mozilla есть собственный инструмент рефакторинга под названием Pork ( Wiki , Developer Wiki ). Вот блог разработчика, стоящего за Pork. Из того, что я читал, Pork успешно использовался при рефакторинге в Mozilla.

Pork должен помочь, если вы из страны * nix, для Visual Studio я тоже рекомендую Visual Assist.

17
ответ дан 23 November 2019 в 21:37
поделиться

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

41
ответ дан 23 November 2019 в 21:37
поделиться

Если вы хотите реинжиниринг своей кодовой базы: MOOSE. Но это большой набор инструментов для анализа и реинжиниринга, а не редактор.

1
ответ дан 23 November 2019 в 21:37
поделиться

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

Он имеет полный синтаксический анализатор C ++ с разрешением имени и типа, строит AST кода, может применять процедурные преобразования или преобразования исходного кода (с поверхностным синтаксисом C ++) для изменения этих деревьев и регенерировать компилируемый вывод с сохраненными комментариями. (Редактировать: 01.07.2011: Теперь C ++ 1X в той мере, в какой мы понимаем стандарт :)

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

DMS также используется для создания инструментов анализа произвольных источников. Примеры включают обнаружение клонов, покрытие тестами, интеллектуальное различие (сравнение структур исходного кода и абстрактные операции редактирования вместо строк с простой вставкой и удалением) и т. Д.

То, чем он не является (в настоящее время), является интерактивным инструментом рефакторинга. Мы считаем, что для правильного выполнения большинства рефакторингов требуется глубокий контроль и анализ потока данных. DMS имеет общий механизм для поддержки этого, и этот механизм на данный момент реализован для C, COBOL и Java, а C ++ - следующим на очереди. Это тяжелая работа. Вы не увидите много серьезных инструментов для рефакторинга C ++, пока не решите проблему подобного рода. Сначала вам понадобится полный синтаксический анализатор C ++: -}

РЕДАКТИРОВАТЬ 05.07.2011: Похоже, мы собираемся опробовать интерактивную версию. Мы выиграли SBIR Фазы I Министерства энергетики, чтобы выяснить, как это сделать. См. http://science.energy.gov/sbir/awards-and-general-stats/fy-2011/phase-i-by-state/?p=1#tx (Ищите семантические схемы под «Техасом»). В спешке не ждите результата; это всего лишь начало трехэтапной многолетней программы для перехода к инструменту.

РЕДАКТИРОВАТЬ 8/11/2011: Первый прогресс ... теперь мы обрабатываем все директивы C ++ 0x и OpenMP.

РЕДАКТИРОВАТЬ 1/4/2012: Выполняет полный анализ потока управления кода C ++.

РЕДАКТИРОВАТЬ 15/9/2014: Теперь у вас есть интерфейсный синтаксический анализатор / механизм преобразования C ++ 14. Даже переименование довольно надежно на данный момент: -}

9
ответ дан 23 November 2019 в 21:37
поделиться

Если вы используете emacs, попробуйте Xrefactory . Он поддерживает извлечение методов, переименование классов / функций / переменных и параметры вставки / удаления / перемещения. Он также имеет очень хороший / быстрый механизм завершения кода.

8
ответ дан 23 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

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