Граф вызовов для модулей 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 не будет опубликован. Обязательные поля помечены *