Снегопат
https://snegopat.ru/forum/

Иерархия вызовов функций/процедур
https://snegopat.ru/forum/viewtopic.php?f=3&t=317
Страница 1 из 2

Автор:  GrigoryPtashko [ 12 дек 2012, 13:11 ]
Заголовок сообщения:  Иерархия вызовов функций/процедур

Всем привет.

Кто-нибудь испытывает потребность в скрипте, который бы показывал иерархию вызовов функции или процедуры? То есть из какой функции/процедуры была вызвана данная функция/процедура.
Мне, например, при разборке кода БСП офигеть, как нужна эта функция. Когда пытаешься понять, кто кого вызывал и в этой цепочке больше 3 методов - это уже сложно держать в уме. Вот, например, как в IntellijIdea (это IDE для java) сделано https://dl.dropbox.com/u/8057759/screens/2012-12-12%2014_02_16.png
Там, кстати, вообще 2 режиме: показ иерархии вызывающих методов и вызываемых. Самый используемый, конечно, показ вызывающих.

Автор:  artbear [ 12 дек 2012, 14:06 ]
Заголовок сообщения:  Re: Иерархия вызовов функций/процедур

На инфостарте есть публикации автора stal76 и еще некоторых.
посмотри/поищи

Автор:  artbear [ 12 дек 2012, 14:06 ]
Заголовок сообщения:  Re: Иерархия вызовов функций/процедур

stal76 http://infostart.ru/public/77909/
http://www.stal76.ru/ak/

Автор:  sosnae [ 12 дек 2012, 16:42 ]
Заголовок сообщения:  Re: Иерархия вызовов функций/процедур

я уже приводил пример подключения внешней обработки на 1С и показа структуры модуля(в пределах пока одного модуля), думаю добавить туда иерархию вызовов можно без проблем. Проблема только в скорости, т.е. если посмотреть в процедуре ее вызовы можно и потом распарсить в глубь, то можно, а вот посмотреть откуда вызывается та или иная функция - необходимо считай запускать глобальный поиск, искать где присутствует вызов этой функции и потом строить дерево...
Может взять
artbear писал(а):
http://www.stal76.ru/ak/
и добавить загрузку в базу модулей и функций сразу из конфигуратора?

Автор:  artbear [ 12 дек 2012, 16:50 ]
Заголовок сообщения:  Re: Иерархия вызовов функций/процедур

sosnae писал(а):
Может взять
artbear писал(а):
http://www.stal76.ru/ak/
и добавить загрузку в базу модулей и функций сразу из конфигуратора?

Отличная мысль.

Автор:  GrigoryPtashko [ 12 дек 2012, 23:44 ]
Заголовок сообщения:  Re: Иерархия вызовов функций/процедур

Насколько я понял в http://www.stal76.ru/ak/ отчет по вызовам в пределах одного модуля есть. Но мне нужна именно структура вызовов по всей конфигурации.
У меня платформа 8.2.16.368 и на ней Анализ конфигураций 1.0.1.15 не заводится - 1с-ка не хочет грузить cf-файл из этой поставки( Я отписал автору насчет апдейта.

Автор:  sosnae [ 13 дек 2012, 01:06 ]
Заголовок сообщения:  Re: Иерархия вызовов функций/процедур

GrigoryPtashko писал(а):
отчет по вызовам в пределах одного модуля есть
там вроде эта информация в отчеты не выведенна, а в базе хранятся все вызовы.
GrigoryPtashko писал(а):
1с-ка не хочет грузить cf-файл из этой поставки
cf файл там нужен только для парсинга вызовов из интерфейсов, в принципе я и без него обхожусь.

Автор:  GrigoryPtashko [ 13 дек 2012, 11:46 ]
Заголовок сообщения:  Re: Иерархия вызовов функций/процедур

2 sosnae
В общем натупил я вчера с АК. Всё завелось.
И всё-таки - это не то, что мне нужно. В АК можно посмотреть иерархию вызовов, но только на один уровень вверх/вниз. Мне хотелось, чтобы было, как на картинке в первом посте - вся иерархия вызовов.
Понятно, что для этого нужно писать отдельный движок. Который будет индексировать модуль и хранить граф вызовов. И инкрементально его апдейтить. Так это сделано в IntellijIdea. Она в начале индексирует код, это занимает немного времени. Потом просто поддерживает свои метаданные. Зато навигация там суперская.

Автор:  sosnae [ 13 дек 2012, 11:59 ]
Заголовок сообщения:  Re: Иерархия вызовов функций/процедур

По мне так еще необходима трассировка вызовов из замера производительности или как-то еще, простым парсингом мы ведь не получим, что из общего модуля вызывается "ЗаполнитьСчетаУчета" в 3 документах.

Ну на базе АК думаю можно делать такой функционал, даже для скрипта все равно где-то хранить необходимо результат первоначального парсинга, почему бы и не база на 1С...

Автор:  orefkov [ 13 дек 2012, 14:40 ]
Заголовок сообщения:  Re: Иерархия вызовов функций/процедур

Я уже думал над этим. Собираюсь прикрутить sqlite к снегопату (маленькая база данных завсегда пригодится).
Идея такова - один раз распарсиваем все модули конфы, переводя их в некий промежуточный формат, удобный для поиска.
И укладываем все во внешнюю базу sqlite. Потом уже быстренько ищем по ней - кросс референции, параметры методов и тд и тп.
Надо только с этими итд итп более детально определится, чтобы промежуточный формат для поиска правильный сделать.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/