Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.26;
Скачать: CL | DM;

Вниз

Парсер PAS/DPR/DPK+-DFM   Найти похожие ветки 

 
msts   (2002-12-06 10:33) [0]

Народ, может кто сталкивался с задачей анализа исходников Delphi?
Нужно получить списки используемых юнитов, связи между ними, где и какие используются классы, где они описаны и т.п.
Может компонент есть какой?, т.е. у которого можно спросить на какие юниты ссылается загруженный, какие в нем описаны классы, где они используютя еще.

ps: нужно для анализа исходников с целью их оптимизации, ну а файлов наберется ~18000 соответсвенно ручная обработка некатит


 
Skier   (2002-12-06 10:38) [1]

>msts

> нужно для анализа исходников с целью их оптимизации

Ого! Да тебя после этого сразу в Borland возьмут работать. :))

По существу имею сказать следущее
В книге Марко Кэнту есть пример по построению иерархии классов
Delphi. Посмотри, может пригодиться...


 
msts   (2002-12-06 10:54) [2]

Не, пока решается количесвенная задача а не качественная
Например в системе есть 5 юнитов которые проще было бы объеденить в один а как это узнать? только собрав статистику
или например система состоит и ядра, набора сервисов ну и прикладной части - задача определить какие функции нужно выделить в отдельный сервис (по частоте использования) соответсвенно есть набор юнитов которы желательно объеденить в один пакет опять же как это определить?
Еще со временем появилось дублирование функций/объектов - тоже нужен анализ.
Далее люди приходят - уходя - годы идут, щас даже трудно сказать на что система способна - никто не знает Ж)


 
Игорь Шевченко   (2002-12-06 10:58) [3]

Я занимаюсь аналогичным поиском....К сожалению, безуспешным...
Мне нужно что-то вроде declared but never used на уровне всего проекта.
Взаимосвязь между unit"ами есть в GExperts
(www.gexperts.org)


 
Skier   (2002-12-06 11:07) [4]

А механизмы определния недостижимого кода, неиспользуемых переменных, методов и т.д. из теории компиляторов не подойдут ?
(Это просто в качестве гипотезы...)


 
DarkGreen   (2002-12-06 11:46) [5]

2 Игорь Шевченко ©
К сожелению GExpert есть только под 5 делфи, а вот под 6 нету :-(
Иль я не прав?


 
MBo   (2002-12-06 11:56) [6]

DarkGreen
есть


 
Игорь Шевченко   (2002-12-06 11:58) [7]

Даже под Delphi 7 есть


 
msts   (2002-12-06 11:59) [8]

Это в будущем ща нужно просто выполнить ту же работу по парсингу текста что и дельфа - с учетом перекрытий пространств имен одного юнита другим и тому продобное
вот тока нету даже полного описания синтаксиса
например как часто используется конструкция

type

IMyInterface = interface
procedure P1;
procedure P2;
end;
TMyImplClass = class
procedure P1;
procedure P2;
end;
TMyClass = class(TInterfacedObject, IMyInterface)
FMyImplClass: TMyImplClass;
property MyImplClass: TMyImplClass read FMyImplClass implements IMyInterface;
procedure IMyInterface.P1 = MyP1;
procedure MyP1;

end;

а? вот и я тоже только один раз и то попробовал



Страницы: 1 вся ветка

Текущий архив: 2002.12.26;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.009 c
1-85931
Vlad
2002-12-17 14:36
2002.12.26
Как???


14-86076
nickolayLI
2002-12-04 14:29
2002.12.26
Game Клуб.


1-85881
Pasha_
2002-12-15 04:37
2002.12.26
TMetaClass


14-86183
makt_liCh
2002-12-07 14:21
2002.12.26
Скоро олимпиада


1-85985
Daf
2002-12-15 11:33
2002.12.26
Mid в ресурс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский