Skip to content

Как это устроено

Каждый инсайт, который 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.

Выпущено под лицензией BUSL-1.1.