В компилятор Delphi 12 добавлена возможность генерации графа зависимостей между модулями проекта в файл формата Graphviz (Graph Visualization Software). Она реализована непосредственно на уровне компилятора без дополнительного инструмента синтаксического анализа. Подобный граф может помочь разработчикам понять структуру проекта и избежать ненужных циклических ссылок на модули, которые могут замедлить компиляцию или вызвать негативные побочные эффекты для самого компилятора.
Для генерации графа зависимостей между модулями в компилятор Delphi 12 добавлен новый параметр "–graphviz". Результатом работы компилятора с этим параметром является текстовый файл с расширением ".gv", который содержит описание графа на языке DOT. Формат этого языка простой и его может читать даже человек, но главное с помощью специальных программ его можно представить в графическом виде. Примером таких программ может служить пакет утилит для автоматической визуализации графов Graphviz исходный код которого доступен на GitLab).
Дополнительным параметром при генерации графа является параметр "--graphviz-exclude", который позволяет исключить из графа определенные модули. Список модулей для исключения может использовать маску (символ *), а сами модули в нем разделяются точкой с запятой. Например: --graphviz-exclude:System.*;VCL.*;FMX.* исключает все модули System, VCL и FireMonkey. Модули System, SysInit и System.Variants исключаются компилятором всегда.
Рассмотрим простое приложение с основной формой, дополнительным диалоговым окном и модулем данных. Они ссылаются друг на друга из секций интерфейса или реализации. Запустим компиляцию проекта этого приложения с помощью командной строки:
Для генерации графа зависимостей между модулями в компилятор Delphi 12 добавлен новый параметр "–graphviz". Результатом работы компилятора с этим параметром является текстовый файл с расширением ".gv", который содержит описание графа на языке DOT. Формат этого языка простой и его может читать даже человек, но главное с помощью специальных программ его можно представить в графическом виде. Примером таких программ может служить пакет утилит для автоматической визуализации графов Graphviz исходный код которого доступен на GitLab).
Дополнительным параметром при генерации графа является параметр "--graphviz-exclude", который позволяет исключить из графа определенные модули. Список модулей для исключения может использовать маску (символ *), а сами модули в нем разделяются точкой с запятой. Например: --graphviz-exclude:System.*;VCL.*;FMX.* исключает все модули System, VCL и FireMonkey. Модули System, SysInit и System.Variants исключаются компилятором всегда.
Рассмотрим простое приложение с основной формой, дополнительным диалоговым окном и модулем данных. Они ссылаются друг на друга из секций интерфейса или реализации. Запустим компиляцию проекта этого приложения с помощью командной строки:
и онлайн построим граф по содержимому полученного gv-файла в Graphviz Visual Editor: Примечание. Пунктирная линия использована для модулей указанных в uses раздела реализации.dcc32 --graphviz --graphviz-exclude:System.*;Vcl.*;WinApi.* GraphTest.dpr
Комментариев нет:
Отправить комментарий