Как это устроено
Каждый инсайт, который Archora показывает, посчитан из графа зависимостей задокументированным детерминированным алгоритмом. Никаких эвристик в духе «тут водятся драконы» без объяснений.
Эта секция — reference. Каждая страница описывает один инсайт: что он значит, как именно вычисляется и что с ним делать.
Pipeline
discoverFiles → parseFiles → resolveImports → buildGraph
↓
recommendations ← layer rules ← metrics ← cycles (Tarjan SCC)
↓
hot zones (composite score)Все шаги — чистые функции от файлового источника. Нет инкрементального кэша, нет демона — каждый скан читает проект с нуля. Полный пайплайн укладывается в 2 секунды на ~1000 модулях и ~10 секунд на ~5000.
Reference-страницы
- Поиск циклов — Tarjan SCC, паттерны циклов, severity.
- Feedback Arc Set — выбор одного-двух рёбер, реально разрывающих цикл.
- Hot zones — композитный score за тёплыми узлами.
- Слои архитектуры — объявленные слои, нарушения, layer-aware рекомендации.
- Рекомендации — полный каталог: split-god-module, unused-utility, type-only-candidate, misplaced-by-layer, isolated-cluster, cycle-break-candidate, cycle-break-cluster.
Терминология
В этих страницах:
- module (модуль) — любой файл, распарсенный анализатором:
.ts,.tsx,.js,.jsx,.vue,.svelte. - edge (ребро) —
import(статический, динамический или type-only), резолвящийся в другой модуль проекта. - fan-in — число модулей, импортирующих этот. fan-out — число модулей, импортируемых этим.
- cycle (цикл) — strongly connected component в графе импортов с ≥ 2 модулями.
- layer (слой) — именованная корзина модулей из
archora.config.