Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2016, 13:48   #1
ИсмаилПрокопенко
Пользователь
 
Регистрация: 31.07.2016
Сообщений: 25
По умолчанию

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

1) Какие программы умеют делать свёртку одинаковых (или похожих) кусков кода в макросы/шаблоны.
Т.е. операции, обратные разворачиванию макросов (дефайнов) и шаблонов.
Просто хотелось бы как-то радикально сокращать размер исходника.
Это сделает его более обозримым и простым для изучения.
Поясню это на самом простом примере (в реале все сложней).
Есть штук 16 файлов.
И в каждом из них присутствует фрагмент из 25 строчек:

#include <assert.h>
...
#include "rfdesitm.h"

Хотелось бы чтобы программа просканировала все файлы проекта и заменила эти крупные куски кода на, к примеру, на "inc_files".

Вы скажите: задача выеденного яйца не стоит. Юзай "поиск и замену".
Или сложи все эти инклюды в один, и замени этот кусок на вызов этого инклюда.

Но не все так просто.
1) Нужно чтобы сам исходный код не менялся. Менялось только его отображение в программе.
2) Поиском и заменой можно воспользоваться когда уже знаешь, какие куски повторяются. А если не знаешь? Хотелось бы чтобы программы сама, автоматом, их обнаруживала и предлагала заменить на более короткий дефайн.
3) Нужно чтобы имя дефайна было уникальным, чтобы не произошло коллизии с идентификаторами исходного кода. Т.е. программа должна автоматом проверять вводимые юзером имена дефайнов на уникальность.
4) Нужно искать не только одинаковые куски исходника, но и ПОХОЖИЕ. Которые могут свернуться в макровызовы с параметрами.
5) Чтобы наведя мышку на такой "дефайн" можно было в тултипе увидеть его исходный код, который он заменяет
6) Иногда два куска кода можно «привести к общему знаменателю» т.е. сделать одинаковыми, просто произведя соответствующие преобразования. К примеру, поменяв местами в одном из них строки или ещё что-нибудь. Нужно чтобы программа находила и такие КВАЗИ похожие куски и предлагала юзверю сделать соответствующие преобразования (повторяюсь: сам исходник при этом не должен меняться) или напротив, чтобы юзверь указал «здесь преобразования недопустимы, так как изменится логика работы программы»

С чего вообще начинается у вас работа по изучению чужого кода?
Рисуете для себя какие-то картинки, диаграммки?
Или что?
Как Вы разбираетесь в объемном чужом коде?

Господа! Неужели никому не приходилось разбираться в больших чужих проектах?

Последний раз редактировалось Аватар; 07.09.2016 в 20:28.
ИсмаилПрокопенко вне форума Ответить с цитированием
Старый 04.09.2016, 15:46   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык в первом сообщении не о том вопрос же.

А как разбираться зависит от ситуации.
Документация, вопросы коллеге, история коммитов, поиск/git grep, отладчик (брекпоинты, стек трейс), ...
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.09.2016, 16:40   #3
ИсмаилПрокопенко
Пользователь
 
Регистрация: 31.07.2016
Сообщений: 25
По умолчанию

Нет ни коммитов, ни коллег.

Есть только исходный код
ИсмаилПрокопенко вне форума Ответить с цитированием
Старый 05.09.2016, 13:53   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Напомнило http://bash.im/abyssbest?text=%E6%E0%EB%E5%E5%F8%FC
У меня способ такой - запускаем проект на выполнение, тыкаемся в нём, находим мельчайший (или большой, не суть) косяк, и садимся его исправлять - отлаживаем чуть не от старта приложения пошагово с заходами в подпрограммы, вчитываясь в их текст, и пытаемся так или иначе поправить косяк, пара таких косяков и мы уже неплохо видим проект изнутри. Обязательно ведем репозиторий(и), чтобы можно было помнить о своих правках, и изучать чужие, естественно. если есть команда, то принудить пользоваться. Также желательно организовать схему быстрого (в идеале моментального и нагорячую) деплоя (для накатывания и откатов изменений), правда, с оглядкой на страховку от фейла, для чего можно и развернуть полную копию рабочего окружения с хорошо удостоверяемым фактом того, с какой системой работаете (я выводил заметную надпись в заголовок программы для тестовой системы).
phomm вне форума Ответить с цитированием
Старый 05.09.2016, 14:44   #5
ИсмаилПрокопенко
Пользователь
 
Регистрация: 31.07.2016
Сообщений: 25
По умолчанию

Ну систему контроля версий я поставил (чтоб всегда можно было видеть свои правки)

Настройки студии и венды в целом "законсервировал" с помощью RollBack Rx на случай если начнуться какие-то глюки при сборке проекта. А то сейчас компилиться, а потом, вдруг, перестало. И пойди разберись: "из-за чего?"

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

Что, честно говоря, мне не очень понятно: зачем ползать отладчиком если есть исходный код? Тем более что программа под венды и достаточно объемная. Замучаешься ползать

Т.е. никакие тулзы для работы именно с исходным кодом Вы не используете?

Я имею в виду тулзы для анализа кода и изменения формы его представления к более простому и понятному обобщенному виду (например в виде диаграмм, или в виде тех же ПСЕВДОмакросов - свернутых кусков кода)

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

Последний раз редактировалось Аватар; 07.09.2016 в 20:28.
ИсмаилПрокопенко вне форума Ответить с цитированием
Старый 05.09.2016, 15:18   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Вот еще немного советов: http://programmers.stackexchange.com...rge-code-bases
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 05.09.2016 в 15:23.
Alex11223 вне форума Ответить с цитированием
Старый 07.09.2016, 17:02   #7
ИсмаилПрокопенко
Пользователь
 
Регистрация: 31.07.2016
Сообщений: 25
По умолчанию

Попробовал "Source Insight".
Вообщем-то не плохая штука для навигации по большим объемам кода.
Но выяснились следующие досадные для меня вещи:
Вот они в порядке уменьшения важности для меня
1) Нет фолдинга. Совсем. Это фатальный для меня недостаток. Я не могу свернуть уже изученные части кода (например описания классов на 2-3 экрана) и каждый раз должен мозолить на них глаза и прокручивать их. Это затрудняет ориентацию в коде.
2) Невозможно добавить к идентификаторам свою всплывающую подсказку (Tooltip), в которой я бы написал свои комментарии к идентификатору. Проблема отчасти решается открытием "контекстного окна", в котором отображается исходный код определения данного идентификатора. Но мне было бы удобней, что бы просто в тултипе отображался мой коротенький коммент. Буквально 2-3 слова. Не нужен мне исходный код определения.
3) Нет SPLIT-а окон. Т.е. невозможно разделить окно пополам и его части скролить независимо

Я слышал что некоторые Doxygen юсают для получения красивых картинок/диаграмм.

Но тут плохо, что придется код "портить"/"замусоривать" внедряя в него Doxigen-комменты специального вида. А "замусоривать" исходный код не хотелось бы

Последний раз редактировалось Аватар; 07.09.2016 в 20:28.
ИсмаилПрокопенко вне форума Ответить с цитированием
Старый 07.09.2016, 20:23   #8
Максай
Пользователь
 
Аватар для Максай
 
Регистрация: 21.07.2008
Сообщений: 40
По умолчанию

Цитата:
Сообщение от ИсмаилПрокопенко Посмотреть сообщение
Я слышал что некоторые Doxygen юсают для получения красивых картинок/диаграмм.

Но тут плохо, что придется код "портить"/"замусоривать" внедряя в него Doxigen-комменты специального вида. А "замусоривать" исходный код не хотелось бы
"Замусоривать" необязательно, Doxygen парсит исходный код и строит красивые картинки и без каких-либо комментов специального вида.
Максай вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
посоветуйте программу для сравнения листингов кода Arassir Общие вопросы по программированию, компьютерный форум 16 06.11.2016 13:52
Посоветуйте программу, для добавления кода в документацию Blondy Софт 7 23.05.2014 17:39
Посоветуйте удобную программу для сохранения кусков кода tumanovalex Софт 5 20.06.2013 14:38
посоветуйте лучший софт для брута Иногданаde_dust'e2 Помощь студентам 1 09.01.2012 04:13