Граф вызовов для модулей 1С + GML (YeD)


Модификация обработки http://infostart.ru/public/78976/ для работы с форматом GML, используемой программой для работы с графами Yed

Однажды я столкнулся с задачей, где надо было разобраться в обработке, которая содержала более 15000 строк в модуле и основной форме. Удержать в голове такую структуру было невозможно, и я обратился к Инфостарту, где нашел замечательную обработку: //infostart.ru/public/78976/. Она мне очень помогла, но у нее был один недостаток. Графы, которые строятся с помощью dot.exe это просто картинки, если объектов много, они становятся труднообозримыми.

Поэтому, я сделал альтернативный вывод результата в формат GML, который можно загрузить в редактор графов YeD. YeD позволяет редактировать, масштабировать и автоматически перестраиваеть граф по различным алгоритмам, что очень удобно для анализа.

В отличие от исходной обработки работает только в обычном приложении — поленился написать для управляемого.

17 Comments

  1. kapustinag

    Суперполезно для документирования и для изучения незнакомых разработок. Есть требования к номеру версии редактора Yed?

    Reply
  2. ilov_boris

    Круть! Спасибо.

    Reply
  3. hotey

    Здорово! Спасибо.

    Предыдущей упомянутой обработкой пользовался около года — незаменимая вещь. Оказывается можно и заменить. 🙂

    Reply
  4. gull22

    Открыл обработку. Выбрал действие «Настройка построения графов». В ответ получил сообщение: «Не удалось найти установленную версию graphviz!». Нажал «ОК», открылась обработка «Настройка построения графов». Указал рабочий каталог, во 2-м поле требуется выбрать файл dot.exe. Но его нет в каталоге программы. Я правильно понимаю, что надо переименовать командный файл yEd?

    Reply
  5. Pavl0

    Там кнопка есть для Yed специально, на скриншоте отмечена. Yed, естественно, надо поставить.

    Reply
  6. vec435

    «YeD позволяет редактировать, масштабировать и автоматически перестраиваеть граф по различным алгоритмам, что очень удобно для анализа» — то что доктор прописал

    Reply
  7. Pavl0

    Там есть еще пару удобных инструментов, типа показа в отдельном окне всех потомков/предков. Программа хорошая.

    Reply
  8. TSSV

    В свое время тоже разработал решение для анализа структуры вызвовов программного модуля, без использования дополнительного ПО: http://infostart.ru/public/126275/

    Reply
  9. UncleVader

    Идет построение графа ….

    Error: D:TempGraphDatagraph.txt:1676: syntax error near line 1676

    context: N001 >>> — <<< > N173 [color=»black»,label=»»]

    dot: graph is too large for cairo-renderer bitmaps. Scaling by 0.545944 to fit

    Произошла ошибка!

    Для продолжения нажмите любую клавишу . . .

    что это за ограничение?

    модуль в студию не влезет 🙂

    Reply
  10. edzz

    То же самое! Куда копать?

    Error: D:TempGraphDatagraph.txt:1676: syntax error near line 1676

    context: N001 >>> — <<< > N173 [color=»black»,label=»»]

    dot: graph is too large for cairo-renderer bitmaps. Scaling by 0.545944 to fit

    Произошла ошибка!

    Reply
  11. Chernik

    (9) UncleVader, (10) edzz,

    Похоже на пробел в конструкции «->»

    Reply
  12. Chernik

    Автору огромное спасибо за наводку. YeD — инструментище!!!

    Reply
  13. kapustinag

    (0) Если «натравить» эту обработку на обработку, имеющую одну форму, она покажет вызовы процедур из модуля объекта и модуля формы вместе, или только по-отдельности?

    Reply
  14. Pavl0

    (13) Когда мне надо было анализировать вызовы между модулем и формой я делал так:

    1) брал текст модуля;

    2) Добавлял разделитель разделов

    ////////////////////////////////////////////////////////////­////////////////////

    // ФОРМА

    3) Вставлял ниже модуль формы

    4) Выбирал тип отчета «По секциям»

    Процедуры и функции формы будут находиться в отдельной группе

    Т.е. надо немного пошаманить, но это занимает буквально минуту.

    Reply
  15. JohnConnor

    Работает!

    в связки с YeD нереально помогает !!!

    Reply
  16. Ndochp

    К сожалению не отличает вызовы к методам от вызовов функций внутри модуля. Например, есть у меня «очистить» и часто чищу коллекции в коде. Все валит в одну кучу. Думаю логично было бы не считать вызовом функции из таблицы то, что стоит после точки.

    Reply
  17. hotey

    Вот аналог, который в управляемых формах работает: https://github.com/SergeFocus/1C-Functin-to-yEd

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *