What is noisemap?
noisemap scans any codebase and assigns every source file a risk score by combining two signals:
- π§ Cyclomatic Complexity β how many decision branches exist in each file
- π Git Churn β how many times each file has been changed in version history
The result is a color-coded heatmap: π’ Low β π‘ Medium β π High β π΄ Critical
High-churn + high-complexity files are your most dangerous files β the ones most likely to contain bugs and technical debt. noisemap makes them instantly visible.
Installation
Using go install
go install github.com/meetsoni15/noisemap@latest
Requires Go 1.24+. Make sure $GOPATH/bin is in your $PATH.
Build from Source
git clone https://github.com/meetsoni15/noisemap
cd noisemap
go build -o noisemap .
Usage
# Scan the current directory
noisemap
# Scan a specific project
noisemap ./path/to/your/project
# Show help & all keybindings
noisemap --help
# Show version
noisemap --version
Features
πΊ Heatmap View
- Every source file is rendered as a colored
ββ block
- Color intensity reflects the composite risk score
- Navigate with
j/k, selected file details shown below the grid
- Toggle between list and heatmap views with
v
π File List View
- Sortable list with
ββ risk color badges beside each file
- Directory path shown in dim, filename in full
- Score displayed inline
- Scrollable with viewport tracking
π File Detail Pane
- Full stats for the selected file: language, risk score, complexity, churn
- 12-month sparkline of git activity β see if churn is increasing or stable
- Top 5 most complex functions (Go files only, via AST analysis)
- Risk band label:
π’ Low / π‘ Medium / π High / π΄ Critical
π§ Complexity Analysis
| Language |
Method |
| Go |
Full AST analysis β counts if, for, range, select, case, &&, ` |
| JS / TS / Python / Java / Rust / C / C++ / Ruby / PHP |
Line-based keyword heuristics |
π Git Churn Analysis
- Runs
git log --follow --oneline per file
- Counts total commits touching each file
- Builds 12-month monthly buckets for the sparkline chart
- Gracefully handles non-git directories (churn = 0)
π Risk Scoring
Risk Score = 0.6 Γ complexity_normalized + 0.4 Γ churn_normalized
| Score |
Band |
Color |
| 0 β 30 |
Low |
π’ Green |
| 30 β 60 |
Medium |
π‘ Yellow |
| 60 β 80 |
High |
π Orange |
| 80 β 100 |
Critical |
π΄ Red |
Keyboard Shortcuts
Global
| Key |
Action |
q / Ctrl+C |
Quit |
v |
Toggle list / heatmap view |
s |
Cycle sort: Risk β Complexity β Churn β Name |
r |
Re-scan the directory |
Navigation
| Key |
Action |
j / β |
Move down |
k / β |
Move up |
g |
Jump to top |
G |
Jump to bottom |
Tab |
Switch pane (list β detail) |
Terminal Compatibility
noisemap works in any modern terminal emulator. For the best experience with full color rendering, use one of:
Built With
Contributing
Contributions are welcome! Feel free to open an issue or submit a pull request.
- Fork the repo
- Create a branch:
git checkout -b feat/my-feature
- Commit your changes:
git commit -m "feat: add my feature"
- Push and open a PR
License
MIT β see LICENSE for details.