Skip to content

N1cklier/Dependency-Graph-Visualizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dependency Graph Visualizer

Автор: Марюнин Никита Викторович

Общее описание

Разработан инструмент визуализации графа зависимостей для менеджера пакетов. Особенность проекта - самостоятельная реализация анализа зависимостей без использования готовых менеджеров пакетов или библиотек.

CLI-приложение анализирует зависимости пакетов .NET (NuGet) и строит полный граф зависимостей с учетом транзитивности, фильтрации и обработки циклических зависимостей.

Функции и настройки

Реализованные функции

  • Загрузка конфигурации из INI-файла
  • Валидация параметров с обработкой ошибок
  • Преобразование типов данных (string, int, bool)
  • Получение зависимостей из NuGet репозитория
  • Парсинг .nuspec файлов в формате XML
  • Два режима работы - реальный и тестовый
  • Построение графа зависимостей алгоритмом BFS с рекурсией
  • Фильтрация пакетов по подстроке
  • Обработка циклических зависимостей
  • Ограничение глубины анализа
  • Визуализация древовидной структуры графа
  • Порядок загрузки зависимостей с топологической сортировкой
  • Сравнение с реальным менеджером пакетов

Настраиваемые параметры (*.ini)

Обязательные параметры:

  • package_name (string) - Имя анализируемого пакета
  • repository_url (string) - URL репозитория NuGet
  • test_mode (boolean) - Режим работы с тестовыми данными (true/false)
  • version (string) - Версия пакета
  • max_depth (integer) - Максимальная глубина анализа зависимостей
  • filter (string) - Подстрока для фильтрации пакетов

Дополнительные параметры:

  • show_load_order (boolean) - Показывать порядок загрузки зависимостей (true/false)

Обработка ошибок

Программа обрабатывает следующие ошибки:

  • Отсутствие конфигурационного файла
  • Неверный формат INI-файла
  • Отсутствующие обязательные параметры
  • Некорректные типы данных
  • Пустые значения параметров
  • Невалидные URL адреса репозиториев
  • Ошибки сети при загрузке зависимостей
  • Отсутствие интернет-соединения
  • Циклические зависимости

Сборка проекта и запуск

Через run.bat (рекомендуется для пользователей)

run.bat

Ручная сборка (для разработчиков)

g++ -static -static-libgcc -static-libstdc++ -o build/DepViz.exe src/DepViz.cpp

Запуск из VS Code

  • Ctrl+Alt+N - сборка и запуск через Code Runner
  • Ctrl+Shift+B - сборка через задачи VS Code

Примеры использования

Конфигурационные файлы

examples/config.ini (тестовый режим):

package_name = A
repository_url = https://api.nuget.org/v3/index.json
test_mode = true
version = 1.0
max_depth = 5
filter = E
show_load_order = true

Вывод:

Enter configuration file name (e.g., ../examples/config.ini): ../examples/config.ini

=== Parameter Validation ===
+ Package name: A
+ Repository URL: https://api.nuget.org/v3/index.json
+ Test mode: enabled
+ Package version: 1.0
+ Max depth: 5
+ Filter: E
+ All parameters are valid

=== Building Dependency Graph ===
Starting from: A v1.0
Max depth: 5
Filter: 'E'

  [FILTERED] E (contains 'E')
  [FILTERED] E (contains 'E')
  [FILTERED] E (contains 'E')
  [FILTERED] E (contains 'E')

=== Dependency Graph for A ===
Total packages: 9

Graph structure:
================

A v1.0 [ROOT]
  -> B v1.0
    -> D v1.0
      -> G v1.0
        -> I v1.0
          -> J v1.0
  -> C v1.0
    -> F v1.0
      -> H v1.0

================

=== Dependency Load Order ===
Load order sequence:
1. J v1.0
2. I v1.0
3. G v1.0
4. D v1.0
5. B v1.0
6. H v1.0
7. F v1.0
8. C v1.0
9. A v1.0

=== Comparison with Real Package Manager ===

Real package manager differences:
+ Version conflict resolution
+ Parallel download optimization
+ Cached packages handling
+ Semantic versioning rules

Example real manager order for package A:
1. B v1.0 and C v1.0 (parallel)
2. D v1.0, E v1.0, F v1.0 (parallel)
3. G v1.0, H v1.0 (parallel)
4. I v1.0
5. J v1.0
6. A v1.0 (after all dependencies)

Press any key to continue . . . 

examples/configReal.ini (реальный режим):

package_name = Microsoft.Extensions.Logging
repository_url = https://api.nuget.org/v3/index.json
test_mode = false
version = 10.0.0-rc.2.25502.107
max_depth = 5
filter = Microsoft
show_load_order = true

Вывод:

Enter configuration file name (e.g., ../examples/config.ini): ../examples/configReal.ini

=== Parameter Validation ===
+ Package name: Microsoft.Extensions.Logging
+ Repository URL: https://api.nuget.org/v3/index.json
+ Test mode: disabled
+ Package version: 10.0.0-rc.2.25502.107
+ Max depth: 5
+ Filter: Microsoft
+ All parameters are valid

=== Building Dependency Graph ===
Starting from: Microsoft.Extensions.Logging v10.0.0-rc.2.25502.107
Max depth: 5
Filter: 'Microsoft'

Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/microsoft.extensions.logging/10.0.0-rc.2.25502.107/microsoft.extensions.logging.nuspec
Download successful - 6 dependencies
  [FILTERED] Microsoft.Bcl.AsyncInterfaces (contains 'Microsoft')
  [FILTERED] Microsoft.Extensions.DependencyInjection (contains 'Microsoft')
  [FILTERED] Microsoft.Extensions.Logging.Abstractions (contains 'Microsoft')
  [FILTERED] Microsoft.Extensions.Options (contains 'Microsoft')
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.diagnostics.diagnosticsource/10.0.0-rc.2.25502.107/system.diagnostics.diagnosticsource.nuspec
Download successful - 2 dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.memory/4.6.3/system.memory.nuspec
Download successful - 3 dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.buffers/4.6.1/system.buffers.nuspec       
Download successful - no dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.numerics.vectors/4.6.1/system.numerics.vectors.nuspec
Download successful - no dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.runtime.compilerservices.unsafe/6.1.2/system.runtime.compilerservices.unsafe.nuspec
Download successful - no dependencies
  [CYCLE] System.Runtime.CompilerServices.Unsafe v6.1.2
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.valuetuple/4.6.1/system.valuetuple.nuspec 
Download successful - no dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/microsoft.extensions.logging/10.0.0-rc.2.25502.107/microsoft.extensions.logging.nuspec
Download successful - 6 dependencies
  [FILTERED] Microsoft.Bcl.AsyncInterfaces (contains 'Microsoft')
  [FILTERED] Microsoft.Extensions.DependencyInjection (contains 'Microsoft')
  [FILTERED] Microsoft.Extensions.Logging.Abstractions (contains 'Microsoft')
  [FILTERED] Microsoft.Extensions.Options (contains 'Microsoft')
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.diagnostics.diagnosticsource/10.0.0-rc.2.25502.107/system.diagnostics.diagnosticsource.nuspec
Download successful - 2 dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.memory/4.6.3/system.memory.nuspec
Download successful - 3 dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.buffers/4.6.1/system.buffers.nuspec       
Download successful - no dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.numerics.vectors/4.6.1/system.numerics.vectors.nuspec
Download successful - no dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.runtime.compilerservices.unsafe/6.1.2/system.runtime.compilerservices.unsafe.nuspec
Download successful - no dependencies
  [CYCLE] System.Runtime.CompilerServices.Unsafe v6.1.2
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.valuetuple/4.6.1/system.valuetuple.nuspec 
Download successful - no dependencies

=== Dependency Graph for Microsoft.Extensions.Logging ===
Total packages: 7

Graph structure:
================

Microsoft.Extensions.Logging v10.0.0-rc.2.25502.107 [ROOT]
  -> System.Diagnostics.DiagnosticSource v10.0.0-rc.2.25502.107
    -> System.Memory v4.6.3
      -> System.Buffers v4.6.1
      -> System.Numerics.Vectors v4.6.1
      -> System.Runtime.CompilerServices.Unsafe v6.1.2
  -> System.ValueTuple v4.6.1

================

=== Dependency Load Order ===
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/microsoft.extensions.logging/10.0.0-rc.2.25502.107/microsoft.extensions.logging.nuspec
Download successful - 6 dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.diagnostics.diagnosticsource/10.0.0-rc.2.25502.107/system.diagnostics.diagnosticsource.nuspec
Download successful - 2 dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.memory/4.6.3/system.memory.nuspec
Download successful - 3 dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.buffers/4.6.1/system.buffers.nuspec       
Download successful - no dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.numerics.vectors/4.6.1/system.numerics.vectors.nuspec
Download successful - no dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.runtime.compilerservices.unsafe/6.1.2/system.runtime.compilerservices.unsafe.nuspec
Download successful - no dependencies
Downloading from NuGet...
URL: https://api.nuget.org/v3-flatcontainer/system.valuetuple/4.6.1/system.valuetuple.nuspec 
Download successful - no dependencies
Load order sequence:
1. System.Buffers v4.6.1
2. System.Numerics.Vectors v4.6.1
3. System.Runtime.CompilerServices.Unsafe v6.1.2
4. System.Memory v4.6.3
5. System.Diagnostics.DiagnosticSource v10.0.0-rc.2.25502.107
6. System.ValueTuple v4.6.1
7. Microsoft.Extensions.Logging v10.0.0-rc.2.25502.107

=== Comparison with Real Package Manager ===

Real package manager differences:
+ Version conflict resolution
+ Parallel download optimization
+ Cached packages handling
+ Semantic versioning rules

Press any key to continue . . . 

Эти и другие конфигурационные файлы вы можете найти в папке examples

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors