Skip to content

Rajabalimax/dependency-visualizer

Repository files navigation

Ссылки на репозиторий

dependency-visualizer

Вариант 5

Задание 2

Разработать инструмент командной строки для визуализации графа зависимостей, включая транзитивные зависимости. Сторонние средства для получения зависимостей использовать нельзя. Зависимости определяются по имени пакета платформы .NET (nupkg). Для описания графа зависимостей используется представление Graphviz. Визуализатор должен выводить результат в виде сообщения об успешном выполнении и сохранять граф в файле формата png. Конфигурационный файл имеет формат toml и содержит:

• Путь к программе для визуализации графов.

• Имя анализируемого пакета.

• Путь к файлу с изображением графа зависимостей.

• Максимальная глубина анализа зависимостей.

Все функции визуализатора зависимостей должны быть покрыты тестами.

Общее описание проекта

Этот проект представляет собой инструмент командной строки для визуализации графа зависимостей пакета .NET на основе его .nupkg файла. Он загружает конфигурацию из файла TOML, извлекает зависимости пакета, строит граф с помощью библиотеки Graphviz и сохраняет результат в формате PNG. Этот инструмент особенно полезен для анализа и визуализации связей между различными пакетами, их зависимостями и транзитивными связями.

Программа работает следующим образом:

  • Загружает конфигурацию из файла config.toml.
  • Извлекает зависимости пакета из .nupkg файла.
  • Строит граф зависимостей с помощью Graphviz.
  • Сохраняет граф в формате PNG.

Описание функций

  1. load_config(config_file)
  • Описание: Загружает конфигурацию из файла в формате TOML. В конфигурации содержатся параметры, такие как имя пакета, путь для сохранения графа и максимальная глубина анализа зависимостей.
  • Аргументы: config_file — путь к конфигурационному файлу.
  • Возвращает: Объект, представляющий содержимое TOML-файла в виде словаря Python.
  1. get_dependencies(package_name, max_depth)
  • Описание: Извлекает зависимости пакета из файла .nupkg. Пакет распаковывается как ZIP-файл, а зависимости читаются из XML-документа .nuspec, который входит в состав .nupkg.
  • Аргументы:
    • package_name: Имя пакета, зависимости которого необходимо получить.
    • max_depth: Максимальная глубина анализа зависимостей (ограничивает рекурсивную проверку зависимостей до указанного уровня).
  • Возвращает: Словарь зависимостей, где ключ — это имя пакета, а значение — список зависимых пакетов.
  1. create_graph(dependencies, package_name, max_depth)
  • Описание: Создает граф зависимостей с помощью библиотеки Graphviz. Строит узлы и связи между ними на основе зависимостей, извлечённых для пакета.
  • Аргументы:
    • dependencies: Словарь зависимостей, полученных из функции get_dependencies.
    • package_name: Имя основного пакета, для которого строится граф.
    • max_depth: Максимальная глубина рекурсивного построения графа.
  • Возвращает: Объект graphviz.Digraph, представляющий граф зависимостей.
  1. main()
  • Описание: Основная функция программы, которая загружает конфигурацию, извлекает зависимости, создает граф зависимостей и сохраняет его в формате PNG. Также выводит информацию о успешности выполнения задачи.
  • Аргументы: Не принимает аргументов.
  • Возвращает: Ничего не возвращает. Выводит результаты в консоль и сохраняет граф в файл.

Настройки config.toml:

  • program_path: Путь к программе для визуализации графов.
  • package_name: Имя основного пакета, для которого необходимо построить граф зависимостей. Ожидается, что файл .nupkg с таким именем будет находиться в той же директории, что и программа.
  • output_image: Имя выходного файла, в который будет сохранен граф зависимостей. Программа добавит расширение .png после генерации изображения.
  • max_depth: Максимальная глубина анализа зависимостей. Это ограничивает количество уровней вложенных зависимостей, которые будут отображены в графе. Например, если указать max_depth = 2, то будут показаны зависимости пакета и их зависимости, но не глубже.

Тест

Пакет newtonsoft.json.13.0.3.nupkg

image dependencies_graph

Пакет microsoft.extensions.dependencyinjection.9.0.0-rc.2.24473.5

image dependencies_graph

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages