|
Построение дерева вызова функций | ☑ | ||
---|---|---|---|---|
0
toypaul
гуру
20.12.17
✎
13:54
|
Берем любую конфигурацю на 8ке. На вход подаем список функций из общих модулей, на выходе нужно получить список вызовов где используются эти функции. Рекурсивно, то есть размотать до конца. Ну и учесть зацикливания.
Есть в природе что-то подобное? На ИС есть только встраивание кода в модули с дальнейшим их запуском. Нужно без запуска. Только анализ кода. |
|||
1
toypaul
гуру
20.12.17
✎
14:09
|
В идеале вообще на вход подать ключевое слово. Например, ПартииТоваровНаСкладах, чтобы алгоритм построил первый уровень как
-функции общих модулей -объекты системы (модули объекта, менеджера, формы) -- документы -- справочники -- отчеты |
|||
2
ixijixi
20.12.17
✎
14:10
|
Ну загнул
|
|||
3
vicof
20.12.17
✎
14:11
|
Пиши плагин на едт
|
|||
4
toypaul
гуру
20.12.17
✎
14:12
|
(2) чо загнул? типовая математическая так сказать задачка.
|
|||
5
toypaul
гуру
20.12.17
✎
14:13
|
(3) не видел я этот ЕДТ и как-то не горю желанием. у меня задачка практическая и требует как можно более скорого решения.
если ничо нет подобного, придется слабать хоть что-нибудь |
|||
6
ildary
20.12.17
✎
14:47
|
(5) поделитесь пожалуйста результатом. Куча народа спасибо скажет (и я тоже).
|
|||
7
toypaul
гуру
20.12.17
✎
14:48
|
(6) ОК
|
|||
8
Мыш
20.12.17
✎
14:53
|
(0) Выгрузить конфигурацию в файлы и анализировать результат.
|
|||
9
toypaul
гуру
20.12.17
✎
14:54
|
(8) смешно пошутил
|
|||
10
тарам пам пам
20.12.17
✎
14:58
|
(6) А что он там такого может сделать при условии "требует как можно более скорого решения"? Тут на скорую руку кроме глобального поиска мало что можно придумать, который отработает не совсем корректно.
Если делать по уму, то надо AST строить и делать анализ кода (подозреваю, что EDT примерно так и делает при выдаче своих ошибок "на лету"), а это быстро наваять не получится. И даже в этом случае вряд ли получится отследить особо извращенные вызовы типа: МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); МодульДополнительныеОтчетыИОбработки.ПриДобавленииДополнительныхОтчетовДоступныхТекущемуПользователю(ДоступныеОтчеты); (8) А это и не шутка. Как ты до текстов модулей по другому доберешься? |
|||
11
toypaul
гуру
20.12.17
✎
15:03
|
(10) ну уж чо-нить сделаю такого.
уж как выгрузить модули-то я знаю. это как бы даже не 10% решения задачи. ну могу сказать спасибо что напомнили |
|||
12
toypaul
гуру
20.12.17
✎
15:06
|
"И даже в этом случае вряд ли получится отследить особо извращенные вызовы типа: "
ну куда деваться - не без потерь конечно. благо в моем конкретном случае такой байды нет. а если сильно надо можно учесть эту "специфику" |
|||
13
toypaul
гуру
21.12.17
✎
16:41
|
Начал делать ... на данный момент создается структура модулей и почти создается структура методов этих модулей.
Дальше буду делать регистр сведений по применимости одного метода в другом и алгоритм заполнения этого регистра из выгруженных модулей. Затем буду навешивать функции разворота одного метода вверх или вниз. И добавлю еще нужный мне функционал поиска методов по ключевому слову (и дальнейший разворот этого списка) Сложности будут с методами как в (10). А еще будут сложности с вызовами методов объектов через ссылку (из модуля объекта или модуля менеджера). Тут надо думать ... конкретную ссылку на метод не подставишь. Алгоритм будет 2х проходной - сначала заполняем структуру модулей и методов. Затем строим применимость. Методы на 2м этапе ищем по полученной структуре на 1м этапе, чтобы исключить (постараться исключить) типовые методы вроде Объект.Записать() |
|||
14
xxTANATORxx
21.12.17
✎
17:08
|
а какой прикладной толк данной задачи?
|
|||
15
toypaul
гуру
21.12.17
✎
18:33
|
(14) нужно понять в каких местах используется регистр, чтобы отключить движения по нему
|
|||
16
Мимохожий Однако
21.12.17
✎
19:45
|
В отладчике стёк вызовов не помогает?
|
|||
17
GANR
21.12.17
✎
20:52
|
(0) я искал - не находил
|
|||
18
GANR
21.12.17
✎
20:53
|
(16) так надо все потенциально возможные пути, допустим, найти - дерево, так сказать будет, а не стек уже
|
|||
19
toypaul
гуру
22.12.17
✎
09:05
|
(16) смешно пошутил
|
|||
20
toypaul
гуру
22.12.17
✎
09:07
|
Хотя на ИС как раз есть ТОЛЬКО такие алгоритмы, которые модифицируют код, нужно запускать 1Ску и только тогда строится дерево. И это будет только одна ветка. А мороки дофига.
У меня же стоит задача пл ключевому слову сначала вытащить все отправные точки, а потом раскрутить их вверх до конца. |
|||
21
VladZ
22.12.17
✎
09:08
|
(0) К чему эти нелепые телодвижения?
|
|||
22
toypaul
гуру
22.12.17
✎
09:27
|
Вот есть похожая вещь http://catalog.mista.ru/public/16102/ но для 7ки
|
|||
23
ИТ директор
23.12.17
✎
11:55
|
(15) если
>>задачка практическая и требует как можно более скорого решения. собери ТЖ по событию SCALL с именем своего регистра в контексте |
|||
24
Злопчинский
23.12.17
✎
15:25
|
(15) переименовать регистр
где сломается - там и используется ;-) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |