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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2012, 12:36   #1
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию Поиск дубликатов/повторов идентификаторов в файлах проекта

Доброго всем! (хех , почти что "лучи добра в тред!")

Озадачился тут для своей работки провести некий рефакторинг. Проект средний - около 100+ модулей, часть из которых мелкие динамические формочки, а некоторые вполне крупные модули, более 1килостроки.

Проблема в том, что, как известно, дельфи подключает идентификаторы из разных модулей в порядке их объявления в юзес, и, в принципе, на вагон модулей может набраться много чего-то такого. Хотелось бы почистить, для чего хочу прогнать поиск по файлам с подсчетом элементов попадающим в определённый шаблон, хотя бы просто 'procedure *(' и потом составить сравниловку - вот мол в таких-то файлах замечены такие-то дубли.

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

Если есть осведомленность - ознакомьте меня, пожалуйста.

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

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



Задачка не конкретно по дельфи, можно и в общий какой раздел кинуть, но для дельфи она просто актуальнее , плюс писать программу буду на дельфи (если соберусь таки)
phomm вне форума Ответить с цитированием
Старый 07.09.2012, 12:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вот мол в таких-то файлах замечены такие-то дубли.
Что-то я не понял как дубли могут появиться?
Насколько я знаю если какой-то из модулей, подключенный в проект не используется (в смысле не используются его ресурсы), он не участвует в компиляции.
Откомпилируй и посмотри Warnings, что скажет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2012, 12:57   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Что-то я не понял как дубли могут появиться?
Вполне могут. Объявленные в секции interface разных модулей одноименные процедуры, функции, переменные и константы. Только эту секцию и проверял бы, если бы задача такая вдруг возникла
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.09.2012, 13:08   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Объявленные в секции interface разных модулей одноименные процедуры, функции, переменные и константы.
Так это же не считается дублем, раз принадлежит разным модулям.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2012, 13:40   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Как я понял ТС хочет избавиться от возможности неоднозначного толкования вызова подобных процедур. Дельфи разберется в зависимости от расположения юнитов в uses, а глазками проблемно.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.09.2012, 13:57   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Пересечения быть не может, может просто не та процедура/функция вызыватся, либо константа не та используется.
Если просто почистить "дубли", то может посмотреть на "code to doc" тулы? заодно и документация будет.
eval вне форума Ответить с цитированием
Старый 07.09.2012, 14:05   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а глазками проблемно.
Теперь ясно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2012, 14:18   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

А ненадо глазками, укажите юнит и все будет ОК.
eval вне форума Ответить с цитированием
Старый 07.09.2012, 14:20   #9
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

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

Раз нет мыслей про готовые решения, чую надо будет писать ))

пс. Системы автодокументирования не помогут мне с автоматизацией нахождения пар файлов с дублями

Последний раз редактировалось phomm; 07.09.2012 в 14:22.
phomm вне форума Ответить с цитированием
Старый 07.09.2012, 14:28   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
чую надо будет писать
и эксперта сразу, чего уж тут, всяко пригодится..

а вообще в поисковик вбейте "delphi refactoring tool" ...
eval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск дубликатов по двум столбцам?! mojo Microsoft Office Excel 5 15.11.2012 00:13
Выделение, поиск дубликатов и копирование nbw Microsoft Office Excel 2 04.06.2011 12:55
Поиск дубликатов в массиве. Mister_Originalnos Помощь студентам 0 09.12.2010 20:13
поиск дубликатов файлов(имя, тип, размер). Вывод дубликатов на экран с отображением их пути faraon1792 Помощь студентам 4 19.03.2010 23:46
Поиск дубликатов Студент-снова Microsoft Office Excel 10 16.01.2010 18:57