codehamr-codehamr 64 / 100 · D
Remediation Priority
Files ranked by combined risk score (weighted by check severity and finding type). Top 30 shown.
| # | File | Risk score | Findings | Flagged by |
|---|---|---|---|---|
| 1 | internal/config/config_test.go | 29.2 | 13 | complexitycouplinghotspotline-countnesting-depthsecretssemdup |
| 2 | internal/tui/tui_test.go | 25.7 | 9 | complexitycouplinghotspotline-countnesting-depthsecrets |
| 3 | internal/llm/llm.go | 15.7 | 15 | complexitycouplinghotspotline-countmagic-numbersnesting-depthparameter-count |
| 4 | internal/tools/bash.go | 15.2 | 14 | couplinghotspotmagic-numbersnesting-depth |
| 5 | internal/tui/model.go | 13.7 | 12 | complexityfunction-lengthhotspotline-countmagic-numbersnesting-depth |
| 6 | internal/tui/debuglog.go | 13.2 | 13 | couplinghotspotmagic-numbersparameter-count |
| 7 | internal/tui/format.go | 12 | 12 | couplingmagic-numbers |
| 8 | internal/ctx/ctx.go | 11.7 | 11 | complexitycouplinghotspotmagic-numbersnesting-depth |
| 9 | internal/tui/keys.go | 11.7 | 10 | complexitycouplinghotspotnesting-depth |
| 10 | internal/tui/history_store.go | 11.5 | 11 | complexitycouplingmagic-numbers |
| 11 | internal/tui/prompt.go | 11.5 | 12 | couplingline-countmagic-numbersnesting-depth |
| 12 | internal/tools/bash_test.go | 11.2 | 11 | couplinghotspot |
| 13 | internal/update/update.go | 10.7 | 10 | complexitycouplinghotspotmagic-numbers |
| 14 | internal/llm/llm_test.go | 10.2 | 9 | complexitycouplinghotspotline-countnesting-depth |
| 15 | internal/config/config.go | 9.7 | 9 | complexitycouplinghotspotmagic-numbers |
| 16 | internal/tui/popover.go | 9.5 | 9 | complexitycouplingnesting-depth |
| 17 | internal/tui/prompt_test.go | 9.5 | 10 | couplingline-count |
| 18 | internal/tui/commands.go | 9 | 9 | coupling |
| 19 | cmd/codehamr/main.go | 8.2 | 8 | couplinghotspot |
| 20 | internal/update/update_test.go | 8.2 | 8 | couplinghotspot |
| 21 | internal/tui/probe.go | 7.5 | 7 | complexitycoupling |
| 22 | internal/cloud/cloud.go | 6 | 6 | couplingmagic-numbers |
| 23 | internal/tools/write.go | 6 | 6 | coupling |
| 24 | internal/tui/slash.go | 5.2 | 5 | couplinghotspot |
| 25 | internal/tui/gysd.go | 5 | 5 | coupling |
| 26 | internal/ctx/ctx_test.go | 4.2 | 4 | couplinghotspot |
| 27 | internal/gysd/gysd.go | 3.2 | 3 | couplinghotspot |
| 28 | internal/gysd/gysd_test.go | 3.2 | 3 | couplinghotspot |
| 29 | internal/tools/edit.go | 3.2 | 3 | couplinghotspot |
| 30 | Dockerfile | 3 | 2 | infra |
Project Overview
59
Total files
12
Directories
2
Max directory depth
110
Total commits
40
Repo age (days)
1
Contributors
82.5
Commits / month
1
Branches
3
Entry points
Languages & Stack
Go 95.0%
Markdown 4.2%
Other 0.8%
Infrastructure
CI/CD
github-actions
github-actions
Docker
Score Breakdown
64
D
change_risk
0
15%
complexity
28
15%
maintainability
83
20%
security
78
30%
testing
100
20%
Check Results
AI Stack
pass
No findings.
Complexity
18 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| warning | internal/config/config.go | 117 | function 'Bootstrap' has cyclomatic complexity 20 |
| warning | internal/config/config_test.go | 31 | function 'TestBootstrapCreatesLayout' has cyclomatic complexity 15 |
| warning | internal/config/config_test.go | 109 | function 'TestBootstrapDoesNotRestoreDeletedHamrpass' has cyclomatic complexity 12 |
| warning | internal/config/config_test.go | 261 | function 'TestBootstrapLoadsMultipleProfiles' has cyclomatic complexity 11 |
| warning | internal/ctx/ctx.go | 236 | function 'newestToolGroup' has cyclomatic complexity 14 |
| warning | internal/llm/llm.go | 460 | function 'readSSE' has cyclomatic complexity 13 |
| warning | internal/llm/llm.go | 529 | function 'dispatchDelta' has cyclomatic complexity 11 |
| warning | internal/llm/llm_test.go | 41 | function 'TestChatStreamsContent' has cyclomatic complexity 14 |
| warning | internal/llm/llm_test.go | 606 | function 'TestChatFallsBackWhenReasoningEffortRejected' has cyclomatic complexity 11 |
| warning | internal/llm/llm_test.go | 703 | function 'TestChatFallsBackWhenOllamaRejectsThinking' has cyclomatic complexity 11 |
| warning | internal/tui/history_store.go | 64 | function 'appendPromptHistory' has cyclomatic complexity 11 |
| warning | internal/tui/keys.go | 14 | function '(Model).handleKey' has cyclomatic complexity 21 |
| warning | internal/tui/model.go | 373 | function '(Model).update' has cyclomatic complexity 22 |
| warning | internal/tui/popover.go | 34 | function '(*Model).refreshSuggest' has cyclomatic complexity 13 |
| warning | internal/tui/probe.go | 58 | function '(Model).handleProbe' has cyclomatic complexity 13 |
| warning | internal/tui/tui_test.go | 1981 | function 'TestVerifyNudgeFiresOnceAtMinRounds' has cyclomatic complexity 11 |
| warning | internal/update/drift_test.go | 109 | function 'TestPublishedManifestMatchesAssetName' has cyclomatic complexity 12 |
| warning | internal/update/update.go | 133 | function 'Apply' has cyclomatic complexity 16 |
Coupling
144 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| warning | internal/tui/tui_test.go | — | internal/tui/tui_test.go ↔ internal/tui/model.go: co-changed 25 times (confidence 71%) |
| warning | internal/llm/llm.go | — | internal/llm/llm.go ↔ internal/llm/llm_test.go: co-changed 15 times (confidence 94%) |
| warning | internal/config/config.go | — | internal/config/config.go ↔ internal/config/config_test.go: co-changed 13 times (confidence 87%) |
| warning | internal/config/config_test.go | — | internal/config/config_test.go ↔ internal/tui/tui_test.go: co-changed 13 times (confidence 87%) |
| warning | internal/ctx/ctx_test.go | — | internal/ctx/ctx_test.go ↔ internal/ctx/ctx.go: co-changed 13 times (confidence 87%) |
| warning | internal/ctx/ctx.go | — | internal/ctx/ctx.go ↔ internal/tui/model.go: co-changed 13 times (confidence 59%) |
| warning | internal/tui/slash.go | — | internal/tui/slash.go ↔ internal/tui/tui_test.go: co-changed 12 times (confidence 100%) |
| warning | internal/config/config.go | — | internal/config/config.go ↔ internal/tui/tui_test.go: co-changed 12 times (confidence 80%) |
| warning | internal/config/config.go | — | internal/config/config.go ↔ internal/tui/model.go: co-changed 12 times (confidence 80%) |
| warning | internal/config/config_test.go | — | internal/config/config_test.go ↔ internal/tui/model.go: co-changed 11 times (confidence 73%) |
| warning | internal/ctx/ctx.go | — | internal/ctx/ctx.go ↔ internal/tui/tui_test.go: co-changed 11 times (confidence 50%) |
| warning | internal/tools/bash.go | — | internal/tools/bash.go ↔ internal/tui/model.go: co-changed 10 times (confidence 83%) |
| warning | internal/tui/render.go | — | internal/tui/render.go ↔ internal/tui/model.go: co-changed 10 times (confidence 83%) |
| warning | internal/ctx/ctx_test.go | — | internal/ctx/ctx_test.go ↔ internal/tui/model.go: co-changed 10 times (confidence 67%) |
| warning | internal/gysd/gysd_test.go | — | internal/gysd/gysd_test.go ↔ internal/tui/tui_test.go: co-changed 9 times (confidence 82%) |
| warning | internal/gysd/gysd_test.go | — | internal/gysd/gysd_test.go ↔ internal/gysd/gysd.go: co-changed 9 times (confidence 82%) |
| warning | internal/tools/bash.go | — | internal/tools/bash.go ↔ internal/tui/tui_test.go: co-changed 9 times (confidence 75%) |
| warning | internal/ctx/ctx_test.go | — | internal/ctx/ctx_test.go ↔ internal/tui/tui_test.go: co-changed 9 times (confidence 60%) |
| warning | internal/llm/llm.go | — | internal/llm/llm.go ↔ internal/tui/model.go: co-changed 9 times (confidence 56%) |
| warning | internal/llm/llm_test.go | — | internal/llm/llm_test.go ↔ internal/tui/tui_test.go: co-changed 9 times (confidence 56%) |
| warning | internal/llm/llm_test.go | — | internal/llm/llm_test.go ↔ internal/tui/model.go: co-changed 9 times (confidence 56%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ internal/tui/tui_test.go: co-changed 8 times (confidence 100%) |
| warning | internal/tui/keys.go | — | internal/tui/keys.go ↔ internal/tui/tui_test.go: co-changed 8 times (confidence 100%) |
| warning | internal/tui/keys.go | — | internal/tui/keys.go ↔ internal/tui/model.go: co-changed 8 times (confidence 100%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ internal/tools/bash.go: co-changed 8 times (confidence 89%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ internal/tui/tui_test.go: co-changed 8 times (confidence 89%) |
| warning | cmd/codehamr/main.go | — | cmd/codehamr/main.go ↔ internal/tui/model.go: co-changed 8 times (confidence 73%) |
| warning | cmd/codehamr/main.go | — | cmd/codehamr/main.go ↔ internal/tui/tui_test.go: co-changed 8 times (confidence 73%) |
| warning | cmd/codehamr/main.go | — | cmd/codehamr/main.go ↔ internal/ctx/ctx.go: co-changed 8 times (confidence 73%) |
| warning | internal/tui/slash.go | — | internal/tui/slash.go ↔ internal/tui/model.go: co-changed 8 times (confidence 67%) |
| warning | internal/config/config.go | — | internal/config/config.go ↔ internal/ctx/ctx.go: co-changed 8 times (confidence 53%) |
| warning | internal/config/config_test.go | — | internal/config/config_test.go ↔ internal/ctx/ctx.go: co-changed 8 times (confidence 53%) |
| warning | internal/llm/llm.go | — | internal/llm/llm.go ↔ internal/tui/tui_test.go: co-changed 8 times (confidence 50%) |
| warning | internal/tui/commands.go | — | internal/tui/commands.go ↔ internal/tui/model.go: co-changed 7 times (confidence 100%) |
| warning | internal/tui/gysd.go | — | internal/tui/gysd.go ↔ internal/tui/tui_test.go: co-changed 7 times (confidence 100%) |
| warning | internal/tui/popover.go | — | internal/tui/popover.go ↔ internal/tui/tui_test.go: co-changed 7 times (confidence 100%) |
| warning | internal/tui/probe.go | — | internal/tui/probe.go ↔ internal/tui/tui_test.go: co-changed 7 times (confidence 100%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ internal/tui/model.go: co-changed 7 times (confidence 88%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ internal/config/config_test.go: co-changed 7 times (confidence 88%) |
| warning | internal/update/update_test.go | — | internal/update/update_test.go ↔ internal/update/update.go: co-changed 7 times (confidence 88%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ internal/config/config_test.go: co-changed 7 times (confidence 78%) |
| warning | internal/update/update.go | — | internal/update/update.go ↔ internal/tui/model.go: co-changed 7 times (confidence 70%) |
| warning | internal/update/update.go | — | internal/update/update.go ↔ internal/config/config_test.go: co-changed 7 times (confidence 70%) |
| warning | internal/update/update.go | — | internal/update/update.go ↔ internal/tui/tui_test.go: co-changed 7 times (confidence 70%) |
| warning | cmd/codehamr/main.go | — | cmd/codehamr/main.go ↔ internal/ctx/ctx_test.go: co-changed 7 times (confidence 64%) |
| warning | internal/gysd/gysd.go | — | internal/gysd/gysd.go ↔ internal/tui/tui_test.go: co-changed 7 times (confidence 58%) |
| warning | internal/gysd/gysd.go | — | internal/gysd/gysd.go ↔ internal/tui/model.go: co-changed 7 times (confidence 58%) |
| warning | internal/tools/bash.go | — | internal/tools/bash.go ↔ internal/ctx/ctx.go: co-changed 7 times (confidence 58%) |
| warning | internal/tui/slash.go | — | internal/tui/slash.go ↔ internal/config/config.go: co-changed 7 times (confidence 58%) |
| warning | internal/tools/write.go | — | internal/tools/write.go ↔ internal/tui/model.go: co-changed 6 times (confidence 100%) |
| warning | internal/tui/prompt.go | — | internal/tui/prompt.go ↔ internal/tui/model.go: co-changed 6 times (confidence 100%) |
| warning | internal/tools/edit.go | — | internal/tools/edit.go ↔ internal/tui/model.go: co-changed 6 times (confidence 86%) |
| warning | internal/tui/commands.go | — | internal/tui/commands.go ↔ internal/tui/slash.go: co-changed 6 times (confidence 86%) |
| warning | internal/tui/commands.go | — | internal/tui/commands.go ↔ internal/tools/bash.go: co-changed 6 times (confidence 86%) |
| warning | internal/tui/commands.go | — | internal/tui/commands.go ↔ internal/tui/tui_test.go: co-changed 6 times (confidence 86%) |
| warning | internal/tui/commands.go | — | internal/tui/commands.go ↔ internal/config/config.go: co-changed 6 times (confidence 86%) |
| warning | internal/tui/gysd.go | — | internal/tui/gysd.go ↔ internal/tui/model.go: co-changed 6 times (confidence 86%) |
| warning | internal/tui/gysd.go | — | internal/tui/gysd.go ↔ internal/gysd/gysd_test.go: co-changed 6 times (confidence 86%) |
| warning | internal/tui/probe.go | — | internal/tui/probe.go ↔ internal/tui/model.go: co-changed 6 times (confidence 86%) |
| warning | internal/tui/resize_test.go | — | internal/tui/resize_test.go ↔ internal/tui/model.go: co-changed 6 times (confidence 86%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ internal/ctx/ctx.go: co-changed 6 times (confidence 75%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ internal/config/config.go: co-changed 6 times (confidence 75%) |
| warning | internal/tui/keys.go | — | internal/tui/keys.go ↔ internal/config/config.go: co-changed 6 times (confidence 75%) |
| warning | internal/update/update_test.go | — | internal/update/update_test.go ↔ internal/config/config_test.go: co-changed 6 times (confidence 75%) |
| warning | internal/update/update_test.go | — | internal/update/update_test.go ↔ internal/tui/tui_test.go: co-changed 6 times (confidence 75%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ internal/config/config.go: co-changed 6 times (confidence 67%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ internal/ctx/ctx.go: co-changed 6 times (confidence 67%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ internal/tui/model.go: co-changed 6 times (confidence 67%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ cmd/codehamr/main.go: co-changed 6 times (confidence 67%) |
| warning | internal/update/update.go | — | internal/update/update.go ↔ internal/config/config.go: co-changed 6 times (confidence 60%) |
| warning | cmd/codehamr/main.go | — | cmd/codehamr/main.go ↔ internal/config/config.go: co-changed 6 times (confidence 55%) |
| warning | cmd/codehamr/main.go | — | cmd/codehamr/main.go ↔ internal/config/config_test.go: co-changed 6 times (confidence 55%) |
| warning | cmd/codehamr/main.go | — | cmd/codehamr/main.go ↔ internal/tools/bash.go: co-changed 6 times (confidence 55%) |
| warning | internal/tools/bash.go | — | internal/tools/bash.go ↔ internal/tui/slash.go: co-changed 6 times (confidence 50%) |
| warning | internal/tools/bash.go | — | internal/tools/bash.go ↔ internal/config/config.go: co-changed 6 times (confidence 50%) |
| warning | internal/tools/bash.go | — | internal/tools/bash.go ↔ internal/config/config_test.go: co-changed 6 times (confidence 50%) |
| warning | internal/tui/slash.go | — | internal/tui/slash.go ↔ internal/config/config_test.go: co-changed 6 times (confidence 50%) |
| warning | internal/cloud/cloud.go | — | internal/cloud/cloud.go ↔ internal/tui/model.go: co-changed 5 times (confidence 100%) |
| warning | internal/tools/edit_test.go | — | internal/tools/edit_test.go ↔ internal/tools/edit.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/format.go | — | internal/tui/format.go ↔ internal/tui/model.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/format.go | — | internal/tui/format.go ↔ internal/tui/render.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/history_store_test.go | — | internal/tui/history_store_test.go ↔ internal/tui/history_store.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/prompt_test.go | — | internal/tui/prompt_test.go ↔ internal/tui/keys.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/prompt_test.go | — | internal/tui/prompt_test.go ↔ internal/tui/popover.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/prompt_test.go | — | internal/tui/prompt_test.go ↔ internal/llm/llm.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/prompt_test.go | — | internal/tui/prompt_test.go ↔ internal/config/config_test.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/prompt_test.go | — | internal/tui/prompt_test.go ↔ internal/tui/tui_test.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/prompt_test.go | — | internal/tui/prompt_test.go ↔ internal/tui/prompt.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/prompt_test.go | — | internal/tui/prompt_test.go ↔ internal/tui/model.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/prompt_test.go | — | internal/tui/prompt_test.go ↔ internal/config/config.go: co-changed 5 times (confidence 100%) |
| warning | internal/tui/prompt_test.go | — | internal/tui/prompt_test.go ↔ internal/llm/llm_test.go: co-changed 5 times (confidence 100%) |
| warning | internal/tools/write.go | — | internal/tools/write.go ↔ internal/ctx/ctx.go: co-changed 5 times (confidence 83%) |
| warning | internal/tools/write.go | — | internal/tools/write.go ↔ internal/tools/edit.go: co-changed 5 times (confidence 83%) |
| warning | internal/tools/write.go | — | internal/tools/write.go ↔ internal/tui/tui_test.go: co-changed 5 times (confidence 83%) |
| warning | internal/tools/write.go | — | internal/tools/write.go ↔ internal/llm/llm_test.go: co-changed 5 times (confidence 83%) |
| warning | internal/tools/write.go | — | internal/tools/write.go ↔ internal/llm/llm.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/history_store.go | — | internal/tui/history_store.go ↔ internal/tui/model.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/history_store.go | — | internal/tui/history_store.go ↔ internal/tui/tui_test.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/history_store.go | — | internal/tui/history_store.go ↔ internal/update/update.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/prompt.go | — | internal/tui/prompt.go ↔ internal/config/config.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/prompt.go | — | internal/tui/prompt.go ↔ internal/tui/tui_test.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/prompt.go | — | internal/tui/prompt.go ↔ internal/tui/popover.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/prompt.go | — | internal/tui/prompt.go ↔ internal/llm/llm_test.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/prompt.go | — | internal/tui/prompt.go ↔ internal/config/config_test.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/prompt.go | — | internal/tui/prompt.go ↔ internal/llm/llm.go: co-changed 5 times (confidence 83%) |
| warning | internal/tui/prompt.go | — | internal/tui/prompt.go ↔ internal/tui/keys.go: co-changed 5 times (confidence 83%) |
| warning | internal/tools/edit.go | — | internal/tools/edit.go ↔ internal/ctx/ctx.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/commands.go | — | internal/tui/commands.go ↔ internal/tools/bash_test.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/commands.go | — | internal/tui/commands.go ↔ cmd/codehamr/main.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/commands.go | — | internal/tui/commands.go ↔ internal/tui/debuglog.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/commands.go | — | internal/tui/commands.go ↔ internal/config/config_test.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/gysd.go | — | internal/tui/gysd.go ↔ internal/gysd/gysd.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/gysd.go | — | internal/tui/gysd.go ↔ internal/tui/slash.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/popover.go | — | internal/tui/popover.go ↔ internal/tui/keys.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/popover.go | — | internal/tui/popover.go ↔ internal/config/config_test.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/popover.go | — | internal/tui/popover.go ↔ internal/llm/llm.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/popover.go | — | internal/tui/popover.go ↔ internal/config/config.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/popover.go | — | internal/tui/popover.go ↔ internal/tui/model.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/popover.go | — | internal/tui/popover.go ↔ internal/llm/llm_test.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/probe.go | — | internal/tui/probe.go ↔ internal/ctx/ctx_test.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/probe.go | — | internal/tui/probe.go ↔ internal/ctx/ctx.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/probe.go | — | internal/tui/probe.go ↔ internal/tools/bash.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/probe.go | — | internal/tui/probe.go ↔ cmd/codehamr/main.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/resize_test.go | — | internal/tui/resize_test.go ↔ internal/tui/tui_test.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/resize_test.go | — | internal/tui/resize_test.go ↔ internal/tools/bash_test.go: co-changed 5 times (confidence 71%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ internal/ctx/ctx_test.go: co-changed 5 times (confidence 62%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ internal/tools/bash_test.go: co-changed 5 times (confidence 62%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ internal/tools/bash.go: co-changed 5 times (confidence 62%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ internal/tui/slash.go: co-changed 5 times (confidence 62%) |
| warning | internal/tui/debuglog.go | — | internal/tui/debuglog.go ↔ cmd/codehamr/main.go: co-changed 5 times (confidence 62%) |
| warning | internal/tui/keys.go | — | internal/tui/keys.go ↔ internal/llm/llm.go: co-changed 5 times (confidence 62%) |
| warning | internal/tui/keys.go | — | internal/tui/keys.go ↔ cmd/codehamr/main.go: co-changed 5 times (confidence 62%) |
| warning | internal/tui/keys.go | — | internal/tui/keys.go ↔ internal/llm/llm_test.go: co-changed 5 times (confidence 62%) |
| warning | internal/tui/keys.go | — | internal/tui/keys.go ↔ internal/config/config_test.go: co-changed 5 times (confidence 62%) |
| warning | internal/update/update_test.go | — | internal/update/update_test.go ↔ internal/ctx/ctx_test.go: co-changed 5 times (confidence 62%) |
| warning | internal/update/update_test.go | — | internal/update/update_test.go ↔ cmd/codehamr/main.go: co-changed 5 times (confidence 62%) |
| warning | internal/update/update_test.go | — | internal/update/update_test.go ↔ internal/tui/model.go: co-changed 5 times (confidence 62%) |
| warning | internal/update/update_test.go | — | internal/update/update_test.go ↔ internal/config/config.go: co-changed 5 times (confidence 62%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ internal/tui/slash.go: co-changed 5 times (confidence 56%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ internal/ctx/ctx_test.go: co-changed 5 times (confidence 56%) |
| warning | internal/tools/bash_test.go | — | internal/tools/bash_test.go ↔ internal/llm/llm_test.go: co-changed 5 times (confidence 56%) |
| warning | internal/update/update.go | — | internal/update/update.go ↔ internal/ctx/ctx_test.go: co-changed 5 times (confidence 50%) |
| warning | internal/update/update.go | — | internal/update/update.go ↔ cmd/codehamr/main.go: co-changed 5 times (confidence 50%) |
| warning | internal/update/update.go | — | internal/update/update.go ↔ internal/llm/llm_test.go: co-changed 5 times (confidence 50%) |
Dead Code
pass
No findings.
Dependency Audit
pass
No findings.
Duplication
pass
No findings.
Error Handling
pass
No findings.
Function Length
1 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| warning | internal/tui/model.go | 373 | function '' is 111 lines long (threshold 100) |
Hotspot
20 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| warning | internal/tui/model.go | — | changed in 36% of commits (40 times in 365 days) |
| warning | internal/tui/tui_test.go | — | changed in 32% of commits (35 times in 365 days) |
| warning | internal/ctx/ctx.go | — | changed in 20% of commits (22 times in 365 days) |
| warning | internal/llm/llm.go | — | changed in 15% of commits (16 times in 365 days) |
| warning | internal/llm/llm_test.go | — | changed in 15% of commits (16 times in 365 days) |
| warning | internal/config/config.go | — | changed in 14% of commits (15 times in 365 days) |
| warning | internal/config/config_test.go | — | changed in 14% of commits (15 times in 365 days) |
| warning | internal/ctx/ctx_test.go | — | changed in 14% of commits (15 times in 365 days) |
| warning | internal/gysd/gysd.go | — | changed in 11% of commits (12 times in 365 days) |
| warning | internal/tools/bash.go | — | changed in 11% of commits (12 times in 365 days) |
| warning | internal/tui/render.go | — | changed in 11% of commits (12 times in 365 days) |
| warning | internal/tui/slash.go | — | changed in 11% of commits (12 times in 365 days) |
| warning | cmd/codehamr/main.go | — | changed in 10% of commits (11 times in 365 days) |
| warning | internal/gysd/gysd_test.go | — | changed in 10% of commits (11 times in 365 days) |
| warning | internal/update/update.go | — | changed in 9% of commits (10 times in 365 days) |
| warning | internal/tools/bash_test.go | — | changed in 8% of commits (9 times in 365 days) |
| warning | internal/tui/debuglog.go | — | changed in 7% of commits (8 times in 365 days) |
| warning | internal/tui/keys.go | — | changed in 7% of commits (8 times in 365 days) |
| warning | internal/update/update_test.go | — | changed in 7% of commits (8 times in 365 days) |
| warning | internal/tools/edit.go | — | changed in 6% of commits (7 times in 365 days) |
Import Graph
pass
No findings.
Infrastructure
2 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| error | Dockerfile | 1 | no non-root USER in final stage: container runs as root |
| warning | Dockerfile | 1 | no HEALTHCHECK instruction: orchestrators cannot detect unhealthy containers |
Line Count
7 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| warning | internal/config/config_test.go | — | file has 725 lines (threshold: warn=500, error=1000) |
| warning | internal/llm/llm.go | — | file has 623 lines (threshold: warn=500, error=1000) |
| warning | internal/llm/llm_test.go | — | file has 921 lines (threshold: warn=500, error=1000) |
| error | internal/tui/model.go | — | file has 1211 lines (threshold: warn=500, error=1000) |
| warning | internal/tui/prompt.go | — | file has 540 lines (threshold: warn=500, error=1000) |
| warning | internal/tui/prompt_test.go | — | file has 518 lines (threshold: warn=500, error=1000) |
| error | internal/tui/tui_test.go | — | file has 3296 lines (threshold: warn=500, error=1000) |
Nesting Depth
16 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| warning | internal/config/config_test.go | 31 | function 'TestBootstrapCreatesLayout' has max nesting depth 6 (threshold 4) |
| warning | internal/ctx/ctx.go | 315 | function 'dropDanglingToolCalls' has max nesting depth 6 (threshold 4) |
| warning | internal/llm/llm.go | 371 | function 'postChat' has max nesting depth 5 (threshold 4) |
| warning | internal/llm/llm_test.go | 41 | function 'TestChatStreamsContent' has max nesting depth 6 (threshold 4) |
| warning | internal/llm/llm_test.go | 97 | function 'TestChatToolCall' has max nesting depth 5 (threshold 4) |
| warning | internal/tools/bash.go | 38 | function 'Bash' has max nesting depth 5 (threshold 4) |
| warning | internal/tools/bash.go | 117 | function 'runRaw' has max nesting depth 5 (threshold 4) |
| error | internal/tools/bash.go | 163 | function 'InlineStatus' has max nesting depth 7 (threshold 4) |
| error | internal/tui/keys.go | 14 | function 'handleKey' has max nesting depth 10 (threshold 4) |
| error | internal/tui/model.go | 373 | function '' has max nesting depth 14 (threshold 4) |
| warning | internal/tui/model.go | 691 | function '' has max nesting depth 6 (threshold 4) |
| warning | internal/tui/model.go | 1050 | function 'toolResultFailed' has max nesting depth 6 (threshold 4) |
| warning | internal/tui/popover.go | 34 | function 'refreshSuggest' has max nesting depth 5 (threshold 4) |
| warning | internal/tui/prompt.go | 221 | function 'handleChipKey' has max nesting depth 5 (threshold 4) |
| warning | internal/tui/tui_test.go | 701 | function 'TestVerboseLogCapturesTurnRecords' has max nesting depth 5 (threshold 4) |
| error | internal/tui/tui_test.go | 2388 | function 'stripANSI' has max nesting depth 7 (threshold 4) |
Parameter Count
2 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| warning | internal/llm/llm.go | 529 | function 'dispatchDelta' has 7 parameters (threshold 5) |
| warning | internal/tui/debuglog.go | 107 | function 'dbgWriteSession' has 7 parameters (threshold 5) |
Scripts
pass
No findings.
Secret Scanning
6 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| error | internal/config/config_test.go | 244 | Detected a Generic API Key, potentially exposing access to various services and sensitive operations. [rule: generic-api-key] |
| error | internal/config/config_test.go | 325 | Detected a Generic API Key, potentially exposing access to various services and sensitive operations. [rule: generic-api-key] |
| error | internal/config/config_test.go | 713 | Detected a Generic API Key, potentially exposing access to various services and sensitive operations. [rule: generic-api-key] |
| error | internal/tui/tui_test.go | 655 | Detected a Generic API Key, potentially exposing access to various services and sensitive operations. [rule: generic-api-key] |
| error | internal/tui/tui_test.go | 2914 | Detected a Generic API Key, potentially exposing access to various services and sensitive operations. [rule: generic-api-key] |
| error | internal/tui/tui_test.go | 2955 | Detected a Generic API Key, potentially exposing access to various services and sensitive operations. [rule: generic-api-key] |
Test Presence
pass
No findings.
Test files: 19
Source files: 26
Ratio: 73%
TODO Density
pass
No findings.
Semantic Duplication
1 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| warning | internal/config/config_test.go | 228 | semantic duplicate of internal/config/config_test.go:480 (similarity 0.92) |
Magic Numbers
52 findings
| Severity | File | Line | Detail |
|---|---|---|---|
| info | internal/cloud/cloud.go | 49 | magic literal 1024 — consider a named constant (token size) |
| info | internal/cloud/cloud.go | 50 | magic literal 1024 — consider a named constant (accounting status) |
| info | internal/cloud/cloud.go | 50 | magic literal 1024 — consider a named constant (accounting status) |
| info | internal/cloud/cloud.go | 73 | magic literal 64 — consider a named constant (float value) |
| info | internal/cloud/cloud.go | 95 | magic literal 100 — consider a named constant (pass depletion) |
| info | internal/config/config.go | 58 | magic literal 11434 — consider a named constant (profile size) |
| info | internal/config/config.go | 244 | magic literal 11434 — consider a named constant |
| info | internal/config/config.go | 244 | magic literal 11434 — consider a named constant |
| info | internal/ctx/ctx.go | 49 | magic literal 6000 — consider a named constant |
| info | internal/ctx/ctx.go | 50 | magic literal 2000 — consider a named constant |
| info | internal/ctx/ctx.go | 58 | magic literal 4000 — consider a named constant |
| info | internal/ctx/ctx.go | 59 | magic literal 1500 — consider a named constant |
| info | internal/ctx/ctx.go | 74 | magic literal 8000 — consider a named constant |
| info | internal/ctx/ctx.go | 77 | magic literal 8000 — consider a named constant |
| info | internal/llm/llm.go | 279 | magic literal 32 — consider a named constant |
| info | internal/llm/llm.go | 411 | magic literal 200 — consider a named constant |
| info | internal/llm/llm.go | 416 | magic literal 401 — consider a named constant |
| info | internal/llm/llm.go | 421 | magic literal 402 — consider a named constant |
| info | internal/llm/llm.go | 462 | magic literal 16 — consider a named constant |
| info | internal/llm/llm.go | 462 | magic literal 20 — consider a named constant |
| info | internal/tools/bash.go | 56 | magic literal 100 — consider a named constant |
| info | internal/tools/bash.go | 96 | magic literal 120 — consider a named constant |
| info | internal/tools/bash.go | 192 | magic literal 120 — consider a named constant |
| info | internal/tools/bash.go | 195 | magic literal 117 — consider a named constant |
| info | internal/tui/debuglog.go | 96 | magic literal 2006 — consider a named constant |
| info | internal/tui/format.go | 18 | magic literal 1000 — consider a named constant |
| info | internal/tui/format.go | 21 | magic literal 1000 — consider a named constant |
| info | internal/tui/format.go | 33 | magic literal 60 — consider a named constant |
| info | internal/tui/format.go | 36 | magic literal 3600 — consider a named constant |
| info | internal/tui/format.go | 37 | magic literal 60 — consider a named constant |
| info | internal/tui/format.go | 37 | magic literal 60 — consider a named constant |
| info | internal/tui/format.go | 43 | magic literal 3600 — consider a named constant |
| info | internal/tui/format.go | 43 | magic literal 3600 — consider a named constant |
| info | internal/tui/format.go | 43 | magic literal 60 — consider a named constant |
| info | internal/tui/format.go | 59 | magic literal 10 — consider a named constant |
| info | internal/tui/history_store.go | 17 | magic literal 500 — consider a named constant |
| info | internal/tui/history_store.go | 21 | magic literal 256 — consider a named constant |
| info | internal/tui/history_store.go | 21 | magic literal 1024 — consider a named constant |
| info | internal/tui/history_store.go | 26 | magic literal 1024 — consider a named constant |
| info | internal/tui/history_store.go | 26 | magic literal 1024 — consider a named constant |
| info | internal/tui/history_store.go | 44 | magic literal 64 — consider a named constant |
| info | internal/tui/history_store.go | 122 | magic literal 64 — consider a named constant |
| info | internal/tui/model.go | 25 | magic literal 80 — consider a named constant |
| info | internal/tui/model.go | 781 | magic literal 100 — consider a named constant |
| info | internal/tui/model.go | 795 | magic literal 20 — consider a named constant |
| info | internal/tui/model.go | 796 | magic literal 95 — consider a named constant |
| info | internal/tui/model.go | 1184 | magic literal 200 — consider a named constant |
| info | internal/tui/prompt.go | 20 | magic literal 200 — consider a named constant |
| info | internal/tui/prompt.go | 424 | magic literal 2048 — consider a named constant |
| info | internal/tui/styles.go | 20 | magic literal 11 — consider a named constant |
| info | internal/tui/styles.go | 37 | magic literal 11 — consider a named constant |
| info | internal/update/update.go | 244 | magic literal 200 — consider a named constant |
Codebase Map
Source file size by directory. Click a segment to zoom in, click the centre to zoom out.
Key Entities
The most-referenced declared types across the codebase. Bubble area scales with mention count; colour reflects the language. Click a bubble for details.
Entry-point fan-out
Declared types referenced from each detected entry-point file (main(), __main__, …).
Config
Coupling Matrix
Import Graph
Static package-level import dependencies. Red edges indicate circular dependencies. Node size reflects fan-in. Click a node to highlight its direct neighbours.
Hotspot × Complexity
Files that change frequently and have high cyclomatic complexity. Highest-priority refactoring targets.
| File | Change count | Max complexity |
|---|---|---|
| internal/tui/model.go | 36 | 22 |
| internal/tui/tui_test.go | 32 | 11 |
| internal/ctx/ctx.go | 20 | 14 |
| internal/config/config.go | 14 | 20 |
| internal/config/config_test.go | 14 | 15 |
| internal/llm/llm_test.go | 15 | 14 |
| internal/llm/llm.go | 15 | 13 |
| internal/tui/keys.go | 7 | 21 |
| internal/update/update.go | 9 | 16 |