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 dashboard/server.py 25.5 23 complexityerror-handlingline-countmagic-numberssemdup
2 audit.py 22.5 20 complexityerror-handlingline-countmagic-numbers
3 benchmark/generate_analysis.py 20 17 complexityline-countmagic-numbers
4 benchmark/run_challenge_v3835.py 19.5 18 complexityerror-handlingline-countmagic-numbers
5 benchmark/run_preinjection_benchmark.py 17.5 16 complexityerror-handlingline-countmagic-numbers
6 bench/codex_token_bench.py 13.5 13 complexityerror-handlingmagic-numbers
7 bin/dual_graph_launch.sh 13.2 8 couplinghotspotline-countscripts
8 dashboard/static/app.js 10.5 11 line-countmagic-numbers
9 bin/undo_shield.py 9.5 9 complexityerror-handlingmagic-numbers
10 benchmark/results/raw_challenge_v3.8.35.jsonl 6 1 secrets
11 pick_instances.py 5 5 magic-numbers
12 bin/dg.ps1 3.7 4 couplinghotspotline-count
13 bin/graperoot.ps1 3.7 4 couplinghotspotline-count
14 bin/dgc.ps1 3.2 3 couplinghotspotline-count
15 install.sh 3.2 3 hotspotscripts
16 Dockerfile 3 2 infra
17 bin/dg.cmd 2.2 2 couplinghotspot
18 install.ps1 2.2 2 couplinghotspot
19 bin/dgc.cmd 1.2 1 hotspot
20 mcp_graph_server.py 1.2 1 hotspot
21 git log 1 1 ai-stack
22 bin/changelog.txt 0.6 2 couplinghotspot
23 . 0.3 1 test-presence
24 CLAUDE.md 0.3 1 ai-stack
25 CODEX.md 0.3 1 ai-stack
26 bench 0.3 1 test-presence
27 benchmark 0.3 1 test-presence
28 bin 0.3 1 test-presence
29 bin/version.txt 0.3 1 hotspot
30 dashboard 0.3 1 test-presence
Project Overview
74
Total files
15
Directories
4
Max directory depth
436
Total commits
102
Repo age (days)
2
Contributors
128.2
Commits / month
1
Branches
0
Entry points
Languages & Stack
Python 43.2%
Shell 25.6%
Markdown 21.6%
JavaScript 5.2%
JSON 1.9%
CSS 1.3%
HTML 1.2%
Infrastructure
CI/CD
github-actions
Docker
Score Breakdown
57 F
change_risk
45
15%
complexity
5
15%
maintainability
92
20%
security
57
30%
testing
70
20%
Check Results
AI Stack 3 findings ai-stack
Severity File Line Detail
info CLAUDE.md — [Claude Code] Claude Code instructions file
info CODEX.md — [Codex] OpenAI Codex instructions
info git log — [Claude] 300 of 429 recent commits co-authored by Claude (70%)
Complexity 27 findings complexity
Severity File Line Detail
warning bench/codex_token_bench.py 166 function 'main' has cyclomatic complexity 14
warning audit.py 319 function 'format_report' has cyclomatic complexity 33
warning audit.py 90 function 'check_test_coverage' has cyclomatic complexity 16
warning audit.py 277 function 'fix_roadmap' has cyclomatic complexity 15
warning audit.py 169 function 'check_copy_paste' has cyclomatic complexity 13
warning audit.py 245 function 'check_missing_error_handling' has cyclomatic complexity 10
warning audit.py 429 function 'write_audit_context' has cyclomatic complexity 10
warning bin/undo_shield.py 46 function 'main' has cyclomatic complexity 38
warning dashboard/server.py 366 method 'serve_bench_log' has cyclomatic complexity 30
warning dashboard/server.py 247 method 'serve_token_summary' has cyclomatic complexity 13
warning dashboard/server.py 88 method 'do_POST' has cyclomatic complexity 12
warning dashboard/server.py 57 method 'do_GET' has cyclomatic complexity 11
warning dashboard/server.py 506 method 'chat_fix' has cyclomatic complexity 10
warning dashboard/server.py 590 method 'serve_static' has cyclomatic complexity 10
warning benchmark/run_preinjection_benchmark.py 568 function 'generate_report' has cyclomatic complexity 106
warning benchmark/run_preinjection_benchmark.py 349 function 'score_quality' has cyclomatic complexity 59
warning benchmark/run_preinjection_benchmark.py 842 function 'main' has cyclomatic complexity 41
warning benchmark/run_challenge_v3835.py 429 function 'generate_report' has cyclomatic complexity 35
warning benchmark/run_challenge_v3835.py 621 function 'main' has cyclomatic complexity 24
warning benchmark/run_challenge_v3835.py 125 function 'score_quality' has cyclomatic complexity 14
warning benchmark/run_challenge_v3835.py 408 function 'print_running_totals' has cyclomatic complexity 10
warning benchmark/generate_analysis.py 989 function 'generate_report' has cyclomatic complexity 48
warning benchmark/generate_analysis.py 658 function 'chart_complex' has cyclomatic complexity 17
warning benchmark/generate_analysis.py 496 function 'chart_win_rate' has cyclomatic complexity 10
warning benchmark/generate_analysis.py 767 function 'chart_v835_per_prompt_cost' has cyclomatic complexity 10
warning benchmark/generate_analysis.py 803 function 'chart_v835_quality' has cyclomatic complexity 10
warning benchmark/generate_analysis.py 906 function 'chart_v835_savings' has cyclomatic complexity 10
Coupling 9 findings coupling
Severity File Line Detail
warning bin/changelog.txt — bin/changelog.txt ↔ bin/version.txt: co-changed 83 times (confidence 94%)
warning bin/dgc.ps1 — bin/dgc.ps1 ↔ bin/version.txt: co-changed 68 times (confidence 82%)
warning bin/dual_graph_launch.sh — bin/dual_graph_launch.sh ↔ bin/version.txt: co-changed 61 times (confidence 59%)
warning install.ps1 — install.ps1 ↔ bin/version.txt: co-changed 30 times (confidence 56%)
warning bin/dg.ps1 — bin/dg.ps1 ↔ bin/dgc.ps1: co-changed 27 times (confidence 82%)
warning bin/dg.ps1 — bin/dg.ps1 ↔ bin/version.txt: co-changed 27 times (confidence 82%)
warning bin/graperoot.ps1 — bin/graperoot.ps1 ↔ bin/version.txt: co-changed 24 times (confidence 92%)
warning bin/graperoot.ps1 — bin/graperoot.ps1 ↔ bin/changelog.txt: co-changed 23 times (confidence 88%)
warning bin/dg.cmd — bin/dg.cmd ↔ bin/dgc.cmd: co-changed 23 times (confidence 79%)
Dead Code pass dead-code
No findings.
Dependency Audit pass dep-audit
No findings.
Duplication pass duplication
No findings.
Error Handling 19 findings error-handling
Severity File Line Detail
warning audit.py 47 bare except clause on line 47 silences all exceptions
warning audit.py 56 bare except clause on line 56 silences all exceptions
warning audit.py 120 bare except clause on line 120 silences all exceptions
warning bench/codex_token_bench.py 77 bare except clause on line 77 silences all exceptions
warning bench/codex_token_bench.py 213 bare except clause on line 213 silences all exceptions
warning benchmark/run_challenge_v3835.py 292 bare except clause on line 292 silences all exceptions
warning benchmark/run_challenge_v3835.py 305 bare except clause on line 305 silences all exceptions
warning benchmark/run_challenge_v3835.py 369 bare except clause on line 369 silences all exceptions
warning benchmark/run_preinjection_benchmark.py 223 bare except clause on line 223 silences all exceptions
warning benchmark/run_preinjection_benchmark.py 305 bare except clause on line 305 silences all exceptions
warning bin/undo_shield.py 54 bare except clause on line 54 silences all exceptions
warning bin/undo_shield.py 128 bare except clause on line 128 silences all exceptions
warning bin/undo_shield.py 157 bare except clause on line 157 silences all exceptions
warning bin/undo_shield.py 166 bare except clause on line 166 silences all exceptions
warning dashboard/server.py 28 bare except clause on line 28 silences all exceptions
warning dashboard/server.py 139 bare except clause on line 139 silences all exceptions
warning dashboard/server.py 165 bare except clause on line 165 silences all exceptions
warning dashboard/server.py 490 bare except clause on line 490 silences all exceptions
warning dashboard/server.py 575 bare except clause on line 575 silences all exceptions
Hotspot 11 findings hotspot
Severity File Line Detail
warning bin/version.txt — changed in 50% of commits (219 times in 365 days)
warning bin/dual_graph_launch.sh — changed in 24% of commits (103 times in 365 days)
warning bin/changelog.txt — changed in 20% of commits (88 times in 365 days)
warning bin/dgc.ps1 — changed in 19% of commits (83 times in 365 days)
warning install.ps1 — changed in 12% of commits (54 times in 365 days)
warning bin/dgc.cmd — changed in 12% of commits (51 times in 365 days)
warning install.sh — changed in 8% of commits (34 times in 365 days)
warning bin/dg.ps1 — changed in 8% of commits (33 times in 365 days)
warning bin/dg.cmd — changed in 7% of commits (29 times in 365 days)
warning mcp_graph_server.py — changed in 6% of commits (28 times in 365 days)
warning bin/graperoot.ps1 — changed in 6% of commits (26 times in 365 days)
Import Graph pass import-graph
No findings.
Infrastructure 2 findings infra
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 10 findings line-count
Severity File Line Detail
warning audit.py — file has 550 lines (threshold: warn=500, error=1000)
error benchmark/generate_analysis.py — file has 1475 lines (threshold: warn=500, error=1000)
warning benchmark/run_challenge_v3835.py — file has 752 lines (threshold: warn=500, error=1000)
error benchmark/run_preinjection_benchmark.py — file has 1057 lines (threshold: warn=500, error=1000)
warning bin/dg.ps1 — file has 722 lines (threshold: warn=500, error=1000)
error bin/dgc.ps1 — file has 1392 lines (threshold: warn=500, error=1000)
error bin/dual_graph_launch.sh — file has 2573 lines (threshold: warn=500, error=1000)
warning bin/graperoot.ps1 — file has 593 lines (threshold: warn=500, error=1000)
warning dashboard/server.py — file has 656 lines (threshold: warn=500, error=1000)
warning dashboard/static/app.js — file has 703 lines (threshold: warn=500, error=1000)
Scripts 7 findings scripts
Severity File Line Detail
error bin/dual_graph_launch.sh 271 possible hardcoded credential (api_key): use environment variables or a secrets manager
error bin/dual_graph_launch.sh 632 curl|bash pattern: executing remotely fetched code is a supply-chain risk
error bin/dual_graph_launch.sh 635 curl|bash pattern: executing remotely fetched code is a supply-chain risk
error bin/dual_graph_launch.sh 2094 curl|bash pattern: executing remotely fetched code is a supply-chain risk
error bin/dual_graph_launch.sh 2386 curl|bash pattern: executing remotely fetched code is a supply-chain risk
warning install.sh 89 eval with variable input: risk of code injection if the variable contains user-controlled data
warning install.sh 164 eval with variable input: risk of code injection if the variable contains user-controlled data
Secret Scanning 1 findings secrets
Severity File Line Detail
error benchmark/results/raw_challenge_v3.8.35.jsonl 2 Identified a pattern that may indicate AWS credentials, risking unauthorized cloud resource access and data breaches on AWS platforms. [rule: aws-access-token]
Test Presence 6 findings test-presence
Severity File Line Detail
warning . — directory has 2 source file(s) but no test files
warning bench — directory has 1 source file(s) but no test files
warning benchmark — directory has 3 source file(s) but no test files
warning bin — directory has 1 source file(s) but no test files
warning dashboard — directory has 1 source file(s) but no test files
warning dashboard/static — directory has 1 source file(s) but no test files
Source files: 9 Untested dirs: 6
TODO Density pass todo-density
No findings.
Semantic Duplication 1 findings semdup
Severity File Line Detail
warning dashboard/server.py 57 semantic duplicate of dashboard/server.py:88 (similarity 0.95)
Magic Numbers 79 findings magic-numbers
Severity File Line Detail
info audit.py 28 magic literal 033 — consider a named constant (color code)
info audit.py 28 magic literal 033 — consider a named constant (color code)
info audit.py 28 magic literal 033 — consider a named constant (color code)
info audit.py 29 magic literal 033 — consider a named constant (color)
info audit.py 29 magic literal 033 — consider a named constant (color)
info audit.py 29 magic literal 033 — consider a named constant (color)
info audit.py 30 magic literal 033 — consider a named constant (color)
info audit.py 30 magic literal 033 — consider a named constant (color)
info audit.py 83 magic literal 50 — consider a named constant (test coverage)
info audit.py 112 magic literal 100 — consider a named constant (sort by size)
info bench/codex_token_bench.py 31 magic literal 8080 — consider a named constant
info bench/codex_token_bench.py 31 magic literal 8100 — consider a named constant
info bench/codex_token_bench.py 37 magic literal 8080 — consider a named constant
info bench/codex_token_bench.py 40 magic literal 20.0 — consider a named constant
info bench/codex_token_bench.py 69 magic literal 1000 — consider a named constant
info bench/codex_token_bench.py 70 magic literal 2000 — consider a named constant
info bench/codex_token_bench.py 87 magic literal 1000 — consider a named constant
info bench/codex_token_bench.py 116 magic literal 1000 — consider a named constant
info bench/codex_token_bench.py 162 magic literal 500 — consider a named constant
info bench/codex_token_bench.py 162 magic literal 500 — consider a named constant
info benchmark/generate_analysis.py 7 magic literal 15 — consider a named constant
info benchmark/generate_analysis.py 7 magic literal 2026 — consider a named constant
info benchmark/generate_analysis.py 7 magic literal 13 — consider a named constant
info benchmark/generate_analysis.py 8 magic literal 15 — consider a named constant
info benchmark/generate_analysis.py 8 magic literal 2026 — consider a named constant
info benchmark/generate_analysis.py 8 magic literal 13 — consider a named constant
info benchmark/generate_analysis.py 9 magic literal 20 — consider a named constant
info benchmark/generate_analysis.py 9 magic literal 2026 — consider a named constant
info benchmark/generate_analysis.py 9 magic literal 13 — consider a named constant
info benchmark/generate_analysis.py 10 magic literal 15 — consider a named constant
info benchmark/run_challenge_v3835.py 2 magic literal 10 — consider a named constant
info benchmark/run_challenge_v3835.py 15 magic literal 201 — consider a named constant
info benchmark/run_challenge_v3835.py 15 magic literal 210 — consider a named constant
info benchmark/run_challenge_v3835.py 17 magic literal 5000 — consider a named constant
info benchmark/run_challenge_v3835.py 46 magic literal 600 — consider a named constant
info benchmark/run_challenge_v3835.py 46 magic literal 10 — consider a named constant
info benchmark/run_challenge_v3835.py 94 magic literal 500 — consider a named constant
info benchmark/run_challenge_v3835.py 126 magic literal 100 — consider a named constant
info benchmark/run_challenge_v3835.py 128 magic literal 100 — consider a named constant
info benchmark/run_challenge_v3835.py 129 magic literal 30 — consider a named constant
info benchmark/run_preinjection_benchmark.py 4 magic literal 15 — consider a named constant
info benchmark/run_preinjection_benchmark.py 12 magic literal 4000 — consider a named constant
info benchmark/run_preinjection_benchmark.py 45 magic literal 300 — consider a named constant
info benchmark/run_preinjection_benchmark.py 64 magic literal 8200 — consider a named constant
info benchmark/run_preinjection_benchmark.py 64 magic literal 8300 — consider a named constant
info benchmark/run_preinjection_benchmark.py 73 magic literal 30.0 — consider a named constant
info benchmark/run_preinjection_benchmark.py 106 magic literal 500 — consider a named constant
info benchmark/run_preinjection_benchmark.py 171 magic literal 500 — consider a named constant
info benchmark/run_preinjection_benchmark.py 257 magic literal 300 — consider a named constant
info benchmark/run_preinjection_benchmark.py 291 magic literal 5000 — consider a named constant
info bin/undo_shield.py 75 magic literal 120 — consider a named constant
info bin/undo_shield.py 78 magic literal 120 — consider a named constant
info bin/undo_shield.py 144 magic literal 3600.0 — consider a named constant
info bin/undo_shield.py 196 magic literal 60 — consider a named constant
info dashboard/server.py 134 magic literal 60 — consider a named constant
info dashboard/server.py 189 magic literal 250 — consider a named constant
info dashboard/server.py 190 magic literal 500 — consider a named constant
info dashboard/server.py 217 magic literal 15.0 — consider a named constant
info dashboard/server.py 218 magic literal 18.75 — consider a named constant
info dashboard/server.py 220 magic literal 75.0 — consider a named constant
info dashboard/server.py 225 magic literal 15.0 — consider a named constant
info dashboard/server.py 289 magic literal 30 — consider a named constant
info dashboard/server.py 359 magic literal 200 — consider a named constant
info dashboard/server.py 405 magic literal 100 — consider a named constant
info pick_instances.py 42 magic literal 150 — consider a named constant
info pick_instances.py 48 magic literal 40 — consider a named constant
info pick_instances.py 49 magic literal 90 — consider a named constant
info pick_instances.py 50 magic literal 15 — consider a named constant
info pick_instances.py 51 magic literal 40 — consider a named constant
info dashboard/static/app.js 41 magic literal 250 — consider a named constant
info dashboard/static/app.js 95 magic literal 667 — consider a named constant
info dashboard/static/app.js 97 magic literal 20 — consider a named constant
info dashboard/static/app.js 97 magic literal 30 — consider a named constant
info dashboard/static/app.js 121 magic literal 465 — consider a named constant
info dashboard/static/app.js 123 magic literal 16 — consider a named constant
info dashboard/static/app.js 248 magic literal 10 — consider a named constant
info dashboard/static/app.js 249 magic literal 24 — consider a named constant
info dashboard/static/app.js 250 magic literal 40 — consider a named constant
info dashboard/static/app.js 423 magic literal 180 — 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__, …).

Handler
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.

Test Gap Map

Complex files in a codebase with low test coverage. High remediation value.