LINUX.ORG.RU

Посоветуйте IDE для анализа запутанного кода на C++

 , ,


0

4

Посоветуйте, пожалуйста, IDE для разбора запутанного кода крупного (несколько сотен файлов, каждый на пару тысяч строк) проекта на C++. Компиляция и дебаг, в принципе, не возможны т.к. дана только часть всех исходников. Нужны следующие фичи (из коробки или плагинами, но с минимальной допилкой):

  • Самое очевидное - возможность сворачивать/скрывать произвольные участки кода.
  • Быстрый отчёт по выбранным переменной/полю объекта - где и в каком контексте данная переменная используется и в каких местах кода выставляется её значение
  • То же самое для функций - где и в каком контексте используется выбранная функция
  • Возможность задавать свои имена переменным, функциям, классам, не изменяя исходники (оригинальное имя всегда должно быть под рукой) и не смещая нумерацию строк.
  • Возможность помечать тегами, цветами, а так же давать описание участкам кода, не изменяя исходники и не смещая нумерацию строк - наличие отдельного оглавления, где можно просмотреть и сгруппировать все теги и ссылки на подобные описания.
  • Работа с несколькими версиями кода, отслеживание изменений и сдвига нумерации строк меду ними.
  • Сохранение состояния всего этого счастья между вызовами IDE, в отдельный файл проекта.
  • Большую часть времени IDE не должна потреблять более 2 из 4 доступных гигабайтов памяти.

Пока что, временами, использую SciTools Understand, но она не умеет или умеет неочевидным путём половины из описанных фич. В ней можно просмотреть список для каждой функции - где она объявлена и где используется, и для каждой переменной - где выставляется, а где используется её значение, но, например, функции и поля с общими именами, типа GetItem() или value являются для неё одной функцией или полем и не важно, что в коде пара десятков классов где функции и поля имеют такое же имя.

Заранее извиняюсь если описал очевидные или фантастичные вещи - раньше в полноценной IDE у меня потребности не возникало, хватало текстового редактора с подсветкой кода, да и сейчас хватает, но таким темпами я в дурку отъеду.

говорила бабушка, пиши на джаве и используй idea

umren ★★★★★
()

Нет таких.

поля с общими именами, типа GetItem() или value являются для неё одной функцией или полем и не важно, что в коде пара десятков классов где функции и поля имеют такое же имя.

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

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

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

А тут разве про работу программы или про код?

SciTools Understand

и вот что, эта платная хрень реально не может различить вызовы методов разных классов?

Bad_ptr ★★★★★
()
Ответ на: комментарий от no-such-file

Но в коде же у нас явно везде пишется ClassName.value и ClassName.GetItem().

Nebuchadnezzar ★★★★
() автор топика

Говнокод

См. также: java, php, индусы, ненужно

annulen ★★★★★
()

Слишком специфические задачи - тут только самому писать.

anonymous
()

Будет тебе жизненный урок: никогда не связываться с крестами. Как только услышишь «большой проект на C++», сразу увольняйся. Иначе будет «таким темпами я в дурку отъеду».

anonymous
()

Попробуй диоксиген с диаграммами запустить, - иногда помогает с недокументированным гуано разбираться.

И да, не связывайся с крестами, никогда.

anonymous
()

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

anonymous
()

Kdevelop? Но он не всё умеет

false ★★★★★
()

Doxygen с графами, похоже, может слегка облегчить мне жизнь. Спасибо, аноны.

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

Возможно есть IDE со встроенной поддержкой Doxygen, которая сама создаёт внешние файлы с комментариями и периодически генерит документацию?

Nebuchadnezzar ★★★★
() автор топика
Ответ на: комментарий от Nebuchadnezzar

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

Значит тебе не код нужно исследовать, а выполнение. gdb в помощь.

ЗЫ

Мне тебя жаль.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от Nebuchadnezzar

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

Ха-ха-ха, типичный крестогейский прожэкт. А почему лоровские цари цепепе молчат, не помогают? Подсказали бы какой-нибудь кютекриватор, бугага.

anonymous
()
Ответ на: комментарий от anonymous

Слабоватая интеграция - он просто умеет вызывать doxywizard и открывать документацию в отдельном окне.

Nebuchadnezzar ★★★★
() автор топика

странно что никто не посоветовал clion

сам пользуюсь и очень доволен. Правда, не знаю бОльшей части функционала и использую только лишь для Си, однако

Самое очевидное - возможность сворачивать/скрывать произвольные участки кода.
Быстрый отчёт по выбранным переменной/полю объекта - где и в каком контексте данная переменная используется и в каких местах кода выставляется её значение
То же самое для функций - где и в каком контексте используется выбранная функция

имеется и я сам пользовался

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

что мешает изменить имена, затем откатить изменения? тут есть таккая фича как refactor - можно менять имена функций, переменных, макросов, whatever

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

хрен его знает, по идее есть, но я не вникал

Работа с несколькими версиями кода, отслеживание изменений и сдвига нумерации строк меду ними.

тут даже без использования репы имеется виртуальная VCS

Сохранение состояния всего этого счастья между вызовами IDE, в отдельный файл проекта

шта?

Большую часть времени IDE не должна потреблять более 2 из 4 доступных гигабайтов памяти.

http://i.imgur.com/IZjjr8e.png

reprimand ★★★★★
()

Нет такой фичи дебаггеров и IDE, которую бы не перехитрили говнокодеры.

Andrey_Utkin ★★
()
Ответ на: комментарий от anonymous

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от DELIRIUM

source navigator

По сравнению с Doxygen, он какой-то неудобный.

Nebuchadnezzar ★★★★
() автор топика

Если забить на

не изменяя исходники и не смещая нумерацию строк,

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

Suigintou ★★★★★
()
Ответ на: комментарий от Nebuchadnezzar

Clion не поддерживает x32 системы =(

судя по тому что тебе нужно - он как раз САМЫЙ лучший вариант для тебя. Т.ч. лучше найди где-нибудь 64 битную машину

reprimand ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.