ovecc hotspots
The technical-debt ranking: churn × coupling × fan-in/out × ownership fragmentation × violations, normalized 0–100. Where refactoring pays first — every component's score is broken into its explainable parts.
Usage: ovecc hotspots [OPTIONS]
Example
$ ovecc hotspots --limit 5
Hotspots:
1. services
Score: 82
Churn: 2
Ownership fragmentation: 0%
Coupling: 3 (fan-in 1, fan-out 2)
Complexity: 2 (cognitive)
Violations: 0
2. core
Score: 77
Churn: 2
Ownership fragmentation: 0%
Coupling: 3 (fan-in 3, fan-out 0)
Complexity: 2 (cognitive)
Violations: 0
3. routes
Score: 60
...
The philosophy
Static ugliness alone doesn't cost money; churning ugliness does. A complex module nobody has touched in a year ranks below a moderately-coupled module that five people edit weekly. The signals:
| Signal | Source | Meaning |
|---|---|---|
| Churn | Git history | How often the component changes |
| Ownership fragmentation | Git history | How many people own pieces of it (bus-factor risk, coordination cost) |
| Coupling | The graph | fan-in + fan-out |
| Complexity | The extractor | Aggregate cognitive complexity |
| Violations | Findings | Recorded rule violations in the component |
Without Git history (--no-git, or a repo with no commits), churn and ownership are
labeled n/a and the ranking degrades gracefully to the structural signals.
Options
| Option | Default | Effect |
|---|---|---|
--limit <N> | 10 | How many components to rank |
Plus the global options.
Related
metrics— the per-component raw values- Audit a codebase — hotspots in the audit workflow