Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Вопросы начинающих программистов
Перезагрузить страницу Посоветуйте софт для облегчения анализа и сокращения объема чужого кода.
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Исмаил Прокопенко Исмаил Прокопенко вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.07.2016
По умолчанию Посоветуйте софт для облегчения анализа и сокращения объема чужого кода. - 03.09.2016, 14:58

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

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

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

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

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

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

Расскажите как вообще принято решать у вас такие задачи.
Ну когда тебе дали "гигабайты сурцов" и "крутись как хочешь".

С чего вообще начинается у вас работа по изучению чужого кода?
Рисуете для себя какие-то картинки, диаграммки?
Или что? Дайте конкретики.
Как вы разбираетесь в объемном чужом коде?
Ответить с цитированием
  (#3 (permalink)) Старый
Исмаил Прокопенко Исмаил Прокопенко вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.07.2016
По умолчанию 04.09.2016, 16:35

Господа! Неужели никому не приходилось разбираться в больших чужих проектах?
Ответить с цитированием
  (#4 (permalink)) Старый
Исмаил Прокопенко Исмаил Прокопенко вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.07.2016
По умолчанию 12.09.2016, 16:55

Вообщем, попробовал то, это...
Ковыряю пока Understand.
Кто-нибудь его юсал?
Как он в деле?
Ответить с цитированием
  (#5 (permalink)) Старый
ur_naz ur_naz вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.11.2011
По умолчанию 14.09.2016, 03:14

неблагодарная это работа - копаться в чужом белье
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Исмаил Прокопенко Исмаил Прокопенко вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.07.2016
По умолчанию 06.11.2016, 13:42

Цитата:
Сообщение от ur_naz Посмотреть сообщение
неблагодарная это работа - копаться в чужом белье
Напротив. Столько нового узнаешь.
Программист, никогда не копавшийся в чужом коде, - плохой программист.
Это как автомеханик, который за всю свою жизнь чинил только одну машину.
Свою собственную.
Ответить с цитированием
  (#7 (permalink)) Старый
StudDraw2017 StudDraw2017 вне форума
Banned
 
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2017
По умолчанию 23.11.2017, 15:28

Цитата:
Сообщение от Исмаил Прокопенко Посмотреть сообщение
Программист, никогда не копавшийся в чужом коде, - плохой программист.
Это как автомеханик, который за всю свою жизнь чинил только одну машину
-чушь однако! Вы берёте чужой код и хотите облегчить себе жизнь. Я угнал машину, теперь помогите мне убрать весь колхоз и запах дерьма в салоне.
Ответить с цитированием
Ads
Ответ

Метки
инструменты программиста

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте удобную программу для сохранения кусков кода tumanovalex Вопросы начинающих программистов 7 19.06.2013 14:32
Посоветуйте софт InsomniaNsk Софт и программы 7 22.12.2012 19:11
информация с чужого сайта DolphiN_ PHP 3 17.04.2012 15:27
Защита кода от анализа и модификации Armiol .NET 9 13.03.2012 13:48
как проследить за действиями чужого компьютера? Владислав Анатольевич Любые вопросы от новичков 13 26.12.2010 20:13
Компьютерные термины, сокращения... Семен Подбор комплектующих 6 30.10.2009 01:03
посоветуйте софт для зеркального копирования Nigelhorst Софт и программы 9 20.03.2009 03:22
Посоветуйте оптимальный принтер для не большого объема печати. sunshinesea07 Любые вопросы от новичков 8 02.08.2008 12:58
Как перехватить сообщения чужого окна lpn_com Visual C++ 2 20.11.2006 12:48
Получить текст из чужого окна const WinAPI 2 17.08.2006 09:31
Отслеживание чужого закрытия NewDracon C++ Builder 3 14.05.2006 21:46
Выдергивание текста из чужого RichEdit Noiseman Delphi 1 31.12.2005 00:04



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов