PUDGB - Pascal Units Dependency Graph Builder

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение Лекс Айрин » 11.04.2017 20:18:07

ок. попробую

Добавлено спустя 3 минуты 16 секунд:
Результат еще хуже(((

Добавлено спустя 5 минут 5 секунд:
zub писал(а):Попробуй добавь в настройках проекта $(ProjOutDir) в -Fi (Include files) если его там еще нет


стоит, однако.

Добавлено спустя 4 минуты 12 секунд:
zub писал(а): Похоже понял, у меня поумолчанию target os стоит linux а cpu стоит i386 и эти параметры из lpi не импортируются. соответственно лежат в libi386-win32 а ищутся в libi386-linux


Самое смешное, что, судя по автоопределению, прекрасно импортируются ибо...
Код: Выделить всё
compiler options= '-FiD:lexeditor -Filib/i386-win32'
Target CPU = 'i386'


Добавлено спустя 8 минут 17 секунд:
В общем, отца русской демократии спасла галочка
Параметры проекта/разное/сохранять файлы *'lrs в каталоге вывода

Ее надо было снять. И схема сразу же усложнилась вдвое.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение zub » 11.04.2017 20:47:16

Посмотрел.
1 - вбивать win32 надо до импорта lpi
2 - тогда после импорта строчка Compiler options в инспекторе становится такой: -FiE:lexeditor -Filib/i386-win32
и тут есть бажок pudgb - не решаются разделители путей - -Filib/i386-win32 парсер не проглатывает
если исправить на -FiE:lexeditor -Filibi386-win32 то не найденых путей не будет

но будет ошибка
>>Parser error: "Identifier expected at token "then" in file E:lexeditorMain.pas at line 234 column 60" line:234 column:60 file:E:lexeditorMain.pas
это баг fcl-passrc - я посмотрю и зарепортю, пока перепеши это место подругому (вангую там кучу вложеных "полных форм" :wink: )

зы о проблеме программа пишет сразу при импорте lpi:
Version=11
UnitOutputDirectory=lib/$(TargetCPU)-$(TargetOS)
Resolve to UnitOutputDirectory=lib/i386-linux
IncludeFiles=$(ProjOutDir)
Resolve to IncludeFiles=lib/i386-linux
OtherUnitFiles=
Resolve to OtherUnitFiles=
Unit0=lexeditor.lpr

из LPI читается IncludeFiles=$(ProjOutDir) и в соответствии с настройками ресолвится в IncludeFiles=lib/i386-linux

Баг с разделителями поправлю, репорт напишу, импорт целевой платформы сделаю по возможности. Спасибо!

Добавлено спустя 2 минуты 53 секунды:
>>Ее надо было снять. И схема сразу же усложнилась вдвое.
если заработало - значит бажок Identifier expected at token "then" внесли совсем недавно, у меня fcl-passrc обновляется оч. часто
Но оно работает и без галки, просто надо решить "путаницу" с путями

Добавлено спустя 21 минуту 42 секунды:
блин форум убирает слэши((( кароче надо поправить направление слэша в опциях компилятора в инспекторе pudgb
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение Лекс Айрин » 11.04.2017 21:44:43

Как будет время, можно будет обновить FPC

zub писал(а):кароче надо поправить направление слэша в опциях компилятора в инспекторе pudgb


В принципе, я не вижу смысла возвращать все обратно. Грубо говоря, это мой недочет, что я эту галочку выставил.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение Cheb » 17.04.2017 10:04:39

1. Не находит юниты, если расширение - .pp а не .pas. Ни в какие ворота!
2. Подавилось строчкой
alcCreateContext: function (device: pointer; const attrlist: PALCint): pointer; cdecl = nil;
:
Parser error: "Expected ";" at token "=" in file D:\chentrah\modules\chentrah\src\un_al.h at line 148 column 89" line:148 column:89 file:D:\chentrah\modules\chentrah\src\un_al.h
- не принимает во внимание дефайн {$mode objfpc} ?..
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение zub » 17.04.2017 13:50:03

1 - поправил
2 - проблема не моя, написал репорт.

>>- не принимает во внимание дефайн {$mode objfpc} ?
несколько "общепринятых" дефайнов добавил буквально на днях, бинарник пока не выкладывал. Недостающие можно "прокидывать" парсеру через пункт "параметры компилятора", аналогично как это делается с самим компилятором в командной строке: -dYOURDEF

Выложил новый бинарник, попробуй. проблемные строчки (типа 2) можно временно закоментить
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение Cheb » 18.04.2017 12:46:40

проблемные строчки (типа 2) можно временно закоментить

У меня подобных строк - сотни :(
Вы представляете, сколько функций в API OpenGL ?
Так вот, я полные заголовки к себе в проект затащил (по техническим причинам, юниты стандартного пакета для меня не годятся)
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение zub » 18.04.2017 12:57:26

Тогда пока просто убрать эти юниты. Или подсунуть вместо них "заглушки" - если так важна полнота картины.
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение Cheb » 18.04.2017 23:05:35

Угх. Руки заняты портированием на Raspberry Pi по самые гланды :x
Лучше сделай зарубку стукнуть мне в личку когда это починят.
Мой игровой движок - замечательный стресс-тест для инструментария, одних внутренних ошибок fpc 3, кажется, штуки четыре помог отловить 8)
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение zub » 23.04.2017 19:02:42

Обновил версию - rev.2252
+пофикшено ~30 багов парсера выявленых парсингом исходников fpc, lazarus, jcl
+добавлен параметр Graph building\Calc edges weights - управляет расчетом веса ребер "циклических" связей, поумолчанию false, т.к. это небыстрый процесс
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение Cheb » 02.05.2017 14:59:54

По ссылке на первой странице скачалась какая-то CAD программа с невероятно сложными меню (в отличие от предыдущего раза, когда скачанное было именно очевидной утилитой для работы с исходниками).
Так и не понял, где там загружать .lpr для парсинга.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение Лекс Айрин » 02.05.2017 15:27:06

Cheb, там есть зависимости с этой программой. утилита в папке other
зависимые модули в AGrahpLaz плюс, есть компоненты... В общем, смысл качать все есть.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение zub » 02.05.2017 17:32:03

потерто
Последний раз редактировалось zub 03.05.2017 21:25:48, всего редактировалось 1 раз.
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение zub » 03.05.2017 21:25:34

Типа следующий релиз. Предидущий пост уже не актуален, ссылка снова старая.
Что нового:
Для удобства ковыряния больших проектов (типа зкада) добавил параметры SourceUnit и DestUnit. Чтобы ограничить себя от тонны зависимостей))
Указав SourceUnit - увидим зависимости им порожденные
Указав DestUnit - увидим зависимости на нем заканчивающиеся.
Указав оба параметра - увидим как связаны между собой юниты - как на скриншоте по ссылке
http://imgur.com/a/Nyxn1
Также добавил возможность "кластеризации" графа. Юниты расположеные по одному пути находятся внутри кластера, название кластера это путь к этим юнитам (слэши заменены на нижний прочерк изза особенностей языка графвиза) то что было на предыдущем скрине в "кластерном" варианте выглядит так http://imgur.com/a/Ijz08

Парсер с прошлого раза не изменился - пока еще много незакрытых багов

Добавлено спустя 4 часа 13 минут 5 секунд:
Если сравнить "кластеризированую" картинку (можно и без кластеров, но это не так наглядно) c деревом наследования классов http://imgur.com/a/mzKBb то видно основную "нитку" (красная почеркушка) и понятно что от остальных связей лучше постараться избавится. От всех избавится не получится, но от помеченых 1 и 2 вполне можно.
1 - связь образована изза одной единственной глобальной переменной в модуле uzglviewareageneral и приносит столько мусора. Переместил переменную в другой модуль и готово.
2 - для избавления нужны более глобальные изменения, оставлю это на потом))
В результате без 1 получилась более-менее годная картинка http://imgur.com/a/Ggz67

Добавлено спустя 21 минуту 44 секунды:
при "грамотной" организации путей проекта "паразитные" связи подобные 1 и 2 в большинстве случаев это связи с нижнего уровня на верхний по иерархии путей. По крайней мере в зкаде у меня так получилось. Наверно стоит добавить варнинг при обнаружении таких связей

Добавлено спустя 18 минут 15 секунд:
Также надо приделать возможность в SourceUnit и DestUnit указывать маски
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение zub » 18.05.2017 01:27:05

Приделал взможность ввода масок в SourceUnit и DestUnit, добавил IncludeToGraph и ExcludeFromGraph параметры для фильтрации того что идет в результирующий граф, тут тоже можно юзать маски.
В порядке веселухи - пофиксил "паразитную" зависимость зкада от опенгл от такого состояния http://imgur.com/a/MpHDD до такого http://imgur.com/a/e6syA ))
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: PUDGB - Pascal Units Dependency Graph Builder

Сообщение zub » 04.10.2017 20:32:21

Добавил возможность схлапывать и расхлапывать кластеры - маски "Collapse clusters mask" и "Expand clusters mask"
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru
cron