Блог CodeScoring

Визуализация графа зависимостей в CodeScoring

Начиная с версии 2023.6.0, в CodeScoring доступен новый способ взаимодействия с графом зависимостей в виде интерактивной визуализации. Мы переосмыслили опыт аналогичных инструментов, переложили его на самые частые сценарии использования наших клиентов и постарались сделать действительно универсальный авторский инструмент.
Так выглядит интерактивная визуализация графа зависимостей в CodeScoring
Open Source зависимости программных проектов представляют собой граф — это структура, в которой отдельные компоненты выступают узлами, а связи между ними представлены в виде ребер. Удобная и полезная визуализация графа — сложная задача, которую разные инструменты решают по-разному.

Примеры реализаций можно найти в таких инструментах как GraphViz, NDepend и Dependency Track. К сожалению, большинство решений имеют известные недостатки: хаотичность распределения узлов, недостаточная информация о компонентах, отсутствие акцентов на безопасности, ограниченные возможности управления и фильтрации.
Так выглядит визуализация графа в других системах
Хорошая визуализация помогает увидеть структуру зависимостей в проекте целиком, дать представление о взаимосвязях, помочь оценить потенциальные риски и быстро предоставить нужный срез информации.

Поэтому при разработке нашей концепции мы сделали фокус на упорядоченности, возможности фильтрации и быстром доступе к информации. Ключевые особенности нашей интерактивной визуализации графа зависимостей:

1. Чёткое разделение зависимостей по уровню вложенности

2. Подсветка уязвимых компонентов

3. Отсутствие ненужного дублирования узлов

4. Отображение пути привлечения компоненты в продукт

5. Вывод главной информации о компоненте: версия, окружение, технология и количество уязвимостей

6. Фильтры с выбором окружения, технологии и уровня критичности уязвимостей

Ниже вы можете посмотреть на применение графа в динамике.
Путь попадания уязвимости в точку сборки

Graph-GIF-2.gif
Понимание общей структуры проекта с несколькими языками и фильтрация узлов
Graph-GIF-2.gif