LINUX.ORG.RU

Выбрать вхождения строк в секции с помощью grep (связь между процедурами и функциями в файла с кодом)

 ,


1

1

Есть куча файлов с кодом.

Задача: определить взаимосвязь между процедурами / функциями..

Т.е. на входе файлы вида:

FileName1

Procedure NameProcedure2

NameProcedure1

NameFunction1

EndProcedure

Procedure NameProcedure1

NameFunction2

EndProcedure

Function NameFunction1

EndFunction

Function NameFunction2

EndFunction

Надо получить следующую информацию:

FileName1.NameProcedure2|FileName1.NameProcedure1

FileName1.NameProcedure2|FileName1.NameFunction1

FileName1.NameProcedure1|FileName1.NameFunction2

Можно ли эту задачу решить с помощью grep или есть другие инструменты для подобных задач?



Последнее исправление: zenechka (всего исправлений: 3)

или есть другие инструменты для подобных задач?

IDE называется. Интегрированная среда разработки. Специально делают, чтобы подобные костыли не ваять.

Radjah ★★★★★
()

то, что тебе нужно, называется call graph.

парсить исходники строковыми утилитами не стоит.

в зависимости от того, что у тебя за диалект бейсика, возможно, ты найдёшь готовый инструмент (как сказали выше, он может быть встроен в твой ide).

если у тебя visual basic.net, то сойдёт, наверное, любая утилита для статического анализа clr.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо за наводку про call graph… буду курить… По поводу ide…к сожалению, для этого языка (1с) ide не позволяет строить такие деревья вызовов (только локально в режиме отладки конкретный для конкретного вызова на текущий момент)

zenechka
() автор топика
Ответ на: комментарий от zenechka

1c – это, конечно, серьёзно.

если нет ничего готового, то имеет смысл начать с какого-нибудь инструмента для visualbasic и переделать его.

вот, например, парсер из rubberduck, который делает примерно то, что тебе надо, но для vba.

есть какие-то ошмётки открытой реализации 1c, но не уверен, что там есть что-то полезное.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.