Skip to content

AnnaGS05/visualizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Домашнее задание №2

Вариант №6

Задание №2

Разработать инструмент командной строки для визуализации графа зависимостей, включая транзитивные зависимости. Сторонние средства для получения зависимостей использовать нельзя.

Зависимости определяются для git-репозитория. Для описания графа зависимостей используется представление Mermaid. Визуализатор должен выводить результат на экран в виде кода.

Построить граф зависимостей для коммитов, в узлах которого содержатся номера коммитов в хронологическом порядке.

Ключами командной строки задаются:

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

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

Описание

Данный инструмент анализирует Git репозиторий, строит граф зависимостей между коммитами и генерирует его представление в формате Mermaid. В узлах графа отображается хэш коммита и дата его создания.

Зависимости

Для работы программы не требуется установка дополнительных библиотек, кроме стандартной библиотеки Python.

Использование

Запуск визуализатора

python visualizer.py <path_to_repo> <output_file>
  • <path_to_repo>: Путь к анализируемому Git репозиторию.
  • <output_file>: Путь к файлу, в который будет сохранен сгенерированный Mermaid код.

Пример:

python visualizer.py my-repo output.mmd

Запуск тестов

python -m unittest test_visualizer.py

Важно: Перед запуском тестов убедитесь, что в файле test_visualizer.py корректно настроены пути к временной директории, в которой тесты создают тестовый репозиторий. По умолчанию используется tempfile.mkdtemp(), который создает временную директорию, удаляемую после завершения тестов.

Структура проекта

  • visualizer.py: Основной файл с кодом визуализатора.
  • test_visualizer.py: Модульные тесты для visualizer.py.
  • my-repo: Пример репозитория для тестирования (необязательный, можно использовать любой свой).
  • __pycache__: Директория с кэшированными файлами .pyc (генерируется автоматически).

Принцип работы

  1. Чтение HEAD коммита: Программа определяет хэш HEAD коммита репозитория.
  2. Обход коммитов: Начиная с HEAD коммита, программа рекурсивно обходит все родительские коммиты, используя алгоритм обхода в глубину.
  3. Парсинг объектов Git: Для каждого коммита извлекается информация об объекте коммита из .git/objects.
  4. Извлечение данных коммита: Из объекта коммита извлекаются хэш, список родительских коммитов и дата создания.
  5. Построение графа: На основе полученных данных строится граф зависимостей коммитов.
  6. Генерация Mermaid кода: Граф зависимостей преобразуется в код на языке Mermaid.
  7. Сохранение результата: Сгенерированный Mermaid код сохраняется в указанный выходной файл.

Результат юнит-тестов программы

image

Результат работы программы

image

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages