Solutions

See your system's true complexity.

Lines of code count size. Cyclomatic complexity counts branches. Neither measures the thing that actually slows your team down: structural complexity — the web of dependencies, coupling, and centrality that determines how hard your system is to change.

Why traditional complexity metrics aren't enough.

The metrics most teams rely on measure the wrong dimension of complexity.

Lines of Code

A 500-line file that's self-contained and well-structured is simpler than a 50-line file that imports from 30 modules. Size tells you nothing about structural risk.

Cyclomatic Complexity

Counts branches within a function. Useful locally, but blind to system-level structure. A function with cyclomatic complexity 2 that's imported by 80 files is more dangerous than a complex function used once.

Code Churn

Measures how often files change. But high churn on a low-centrality file is harmless. Low churn on a high-centrality SPOF is a ticking bomb that nobody is improving.

Test Coverage

Measures what percentage of lines are tested. Doesn't account for dead code inflating the denominator or structural importance weighting which lines matter most.

Structural complexity: what Axiom measures.

Axiom Refract treats your codebase as a directed graph and applies graph-theoretic metrics that capture system-level structure — not just function-level branching.

01

PageRank Centrality

Borrowed from web graph analysis. Files that are imported by many important files rank higher than files imported by many trivial files. Importance is transitive.

02

Betweenness Centrality

Measures how often a file sits on the shortest path between other files. High betweenness means the file is a structural bridge — remove it and the dependency graph fragments.

03

Fan-In / Fan-Out

Fan-in: how many files depend on this file. Fan-out: how many files this file depends on. High fan-in means risk concentration. High fan-out means coupling. Both matter.

04

Composite Score

A weighted combination of PageRank, betweenness, and degree centrality. This single score ranks every file in your codebase by structural importance — critical, high, medium, or low.

05

Dependency Depth

How deep the transitive dependency chain goes. A file with dependency depth 8 means a change can ripple through 8 layers of imports before reaching the edge of the graph.

06

Zone Coupling

How tightly coupled architectural zones are to each other. High cross-zone coupling means changes in one area routinely break another — the hallmark of a system that's grown without boundaries.

Complexity is the tax on every future change.

High structural complexity doesn't cause a single dramatic failure. It causes a slow, compounding drag on everything: features take longer, bugs are harder to trace, onboarding stretches from weeks to months, and estimates are consistently wrong because nobody can predict the ripple effects of a change.

The teams that measure structural complexity don't just clean up code — they make informed architectural decisions. They know which zones to decouple, which files to refactor, and which dependencies to break. They prioritize based on data, not on whoever argues loudest in the sprint retrospective.

You can't reduce complexity you haven't measured. Axiom Refract gives you the measurement.

See the real complexity of your codebase.

Upload your repository. Get centrality scores, dependency depth, fan-in/fan-out metrics, and a structural complexity ranking for every file in your system.