Обзор архитектурного линтера go-arch-lint для Go-разработчика
📌 Go-arch-lint состоит из 3 частей:
1️⃣ Component — абстракция над package (пакетом). Один компонент включает в себя один или более пакетов.
2️⃣ Dependency — зависимость. Они бывают двух видов: явные и неявные.
Явные зависимости — это import в файле с описанием конкретной зависимости от другого пакета.
Неявные — это передача методов или структур с методами через интерфейсы, каналы и прочие способы
3️⃣ Dependency tree — граф отношений между компонентами (кому и от кого можно зависеть).
📌 Принцип работы линтера:
🔸размечает весь код на компоненты;
🔸находит все зависимости между компонентами;
🔸строит граф зависимостей;
🔸сравнивает актуальный и желаемый граф зависимостей;
🔸если мы получили непустой DIFF — значит, есть проблемы.