Skip to content
Arxo Arxo

Graphs

Arxo builds and analyzes graph representations of your codebase. Each graph type captures different relationships; metrics and policies consume these graphs. Node granularity is controlled by grouping (file vs folder).

The import graph represents module-level dependencies from import/require statements.

AspectDescription
NodesFiles, folders, or packages (see grouping)
EdgesImport/dependency relationships

Used for: cycle detection (SCC), propagation cost, centrality, modularity, hierarchy.

The call graph represents function and method invocations.

AspectDescription
NodesFunctions, methods, classes
EdgesCall/invocation relationships

Used for: layer/effect violations, impact analysis, code smells, security and LLM metrics that need call-level detail.

The entity graph represents higher-level component relationships (files/modules and relationships such as imports, calls, shared types).

Used for: centrality, core-periphery, and high-level architecture views.

  • GroupingFile vs folder grouping determines node identity in the import graph (and thus what “module” means for metrics like SCC and propagation cost).
  • Metrics — Plugins declare which graphs they need (e.g. ImportGraph, CallGraph); the engine builds only what’s required for the selected preset or metric list.
  • Evidence — When metrics emit findings, they often reference graph nodes (e.g. file path, line) as evidence.