← Analysis Hub

Code Quality Dashboard

All repos · Python (radon CC) · JS/JSX (complexity proxy) · HCL (tflint)

Generated 2026-03-20 10:05 UTC · 8 repos · 29,136 LOC

Overall health
9.2
0
E/F grade (critical)
10
D grade (high)
29
C grade (medium)
1329
Total fns/blocks

Repository overview

8.7
cardmarket
24 py 24 files · 4,423 LOC · 198 functions
Largest file scripts/recalculate_metrics.py — 409 lines
Issues 0 critical · 3 high · 10 medium
9.9
carddex
8 py 8 files · 1,281 LOC · 71 functions
Largest file scripts/gen_release_notes.py — 267 lines
Issues 0 critical · 0 high · 1 medium
9.8
3dtrails
18 py 18 files · 2,604 LOC · 115 functions
Largest file backend/mesh.py — 491 lines
Issues 0 critical · 0 high · 2 medium
9.9
tradehub
11 py 9 js 20 files · 2,163 LOC · 90 functions
Largest file scripts/gen_release_notes.py — 265 lines
Issues 0 critical · 0 high · 1 medium
9.0
datacore
4 py 4 files · 1,140 LOC · 29 functions
Largest file datacore/db.py — 904 lines
Issues 0 critical · 0 high · 3 medium
8.0
analysis
20 py 20 files · 11,768 LOC · 322 functions
Largest file leverage/report.py — 2,160 lines
Issues 0 critical · 7 high · 12 medium
8.0
platform
0 files · 0 LOC · 0 functions
Largest file
Issues 0 critical · 0 high · 0 medium
10.0
terraform
71 hcl 71 files · 5,757 LOC · 504 resources/fns
Largest file modules/cardmarket/main.tf — 631 lines
Issues 0 critical · 0 high · 0 medium

Quality dimensions — all repos

Complexity9

0 E/F-grade functions/blocks across all repos; target ≤15 CC per unit

Test coverage6

17 test file(s), 2,218 test LOC (10.5% of code) — moderate coverage

Duplication9

No exact duplicate files found across repos

Error handling5

Python: 0 bare except, 31 broad except Exception (141 try blocks) · JS: 0 empty catch (2 try blocks)

Documentation4

890 comment lines, 641 docstring lines vs 17,777 source lines (9% doc density) — Python only

CI/CD maturity9

21 pipeline file(s) — multi-stage dev→prd, approval gates, test steps

Security4

1 potential hardcoded secret(s): analysis/summary.py: hardcoded secret

File-level ratings — cardmarket

ScoreFileLangLinesIssuesSuggestion
5 scraper/classifier.py py 325
CC D(26)
Break up _classify_product() (CC 26) — extract 2–3 sub-functions to lower complexity below 10
5 scraper/main.py py 302
CC D(23)
Break up main() (CC 23) — extract 2–3 sub-functions to lower complexity below 10
5 scraper/browser.py py 292
CC D(24)
Break up handle_cloudflare() (CC 24) — extract 2–3 sub-functions to lower complexity below 10
7 scripts/recalculate_metrics.py py 409
large fileCC C(19)
Large file — consider splitting into smaller modules as it grows
7 scraper/parser.py py 395
CC C(19)
Minor: scrape_product_page() (CC 19) is borderline — add early returns or extract helpers if it grows
7 scraper/summary.py py 250
CC C(14)
Minor: _partition_listings() (CC 14) is borderline — add early returns or extract helpers if it grows
7 scripts/reclassify.py py 223
CC C(12)
Minor: _parse_response() (CC 12) is borderline — add early returns or extract helpers if it grows
9 scripts/smoke_test.py py 211
OK
No action needed
9 scraper/reporter.py py 202
OK
No action needed
9 scraper/sentiment.py py 152
OK
No action needed
9 tests/test_classify.py py 143
OK
No action needed
9 tests/test_db.py py 142
OK
No action needed
9 scripts/migrate_sqlite_to_pg.py py 141
OK
No action needed
9 tests/test_db_pool.py py 141
OK
No action needed
9 scraper/config.py py 124
OK
No action needed
9 scraper/recommendations.py py 124
OK
No action needed
9 scripts/db_summary.py py 99
OK
No action needed
10 api/main.py py 227
OK
No action needed
10 tests/test_recalculate_metrics.py py 204
OK
No action needed
10 tests/test_sentiment.py py 136
OK
No action needed
10 .azuredevops/link_pr_workitem.py py 135
OK
No action needed
10 tests/conftest.py py 34
OK
No action needed
10 scraper/debug.py py 12
OK
No action needed
10 scraper/__init__.py py 0
OK
No action needed

File-level ratings — carddex

ScoreFileLangLinesIssuesSuggestion
7 scripts/gen_release_notes.py py 267
CC C(11)
Minor: _build() (CC 11) is borderline — add early returns or extract helpers if it grows
9 scripts/smoke_test.py py 213
OK
No action needed
9 scripts/gen_sitemap.py py 92
OK
No action needed
10 api/main.py py 227
OK
No action needed
10 tests/test_api.py py 177
OK
No action needed
10 tests/test_smoke_test.py py 147
OK
No action needed
10 .azuredevops/link_pr_workitem.py py 135
OK
No action needed
10 tests/conftest.py py 23
OK
No action needed

File-level ratings — 3dtrails

ScoreFileLangLinesIssuesSuggestion
7 backend/water.py py 286
CC C(13)
Minor: _fetch_osm_mask() (CC 13) is borderline — add early returns or extract helpers if it grows
7 scripts/gen_release_notes.py py 267
CC C(11)
Minor: _build() (CC 11) is borderline — add early returns or extract helpers if it grows
9 backend/mesh.py py 491
large file
Large file — consider splitting into smaller modules as it grows
9 backend/terrain.py py 194
OK
No action needed
9 backend/test_gpx_parser.py py 173
OK
No action needed
9 backend/routers/process.py py 147
OK
No action needed
9 backend/routers/orders.py py 115
OK
No action needed
9 backend/gpx_parser.py py 82
OK
No action needed
9 backend/test_demos.py py 78
OK
No action needed
9 backend/routers/share.py py 76
OK
No action needed
10 backend/db.py py 200
OK
No action needed
10 backend/routers/admin.py py 143
OK
No action needed
10 backend/build_demos.py py 103
OK
No action needed
10 backend/blob.py py 80
OK
No action needed
10 backend/email_utils.py py 80
OK
No action needed
10 backend/main.py py 71
OK
No action needed
10 backend/pricing.py py 18
OK
No action needed
10 backend/routers/__init__.py py 0
OK
No action needed

File-level ratings — tradehub

ScoreFileLangLinesIssuesSuggestion
7 scripts/gen_release_notes.py py 265
CC C(11)
Minor: _build() (CC 11) is borderline — add early returns or extract helpers if it grows
9 migrations/generate_pokemon_import.py py 265
OK
No action needed
9 api/routers/invoices.py py 204
OK
No action needed
9 api/routers/inventory.py py 185
OK
No action needed
9 api/routers/orders.py py 167
OK
No action needed
9 api/main.py py 98
OK
No action needed
10 frontend/src/pages/ProductDetail.jsx js 244
large file
Growing file — consider splitting by responsibility
10 frontend/src/pages/Inventory.jsx js 132
OK
No action needed
10 tests/test_inventory.py py 92
OK
No action needed
10 frontend/src/pages/Invoices.jsx js 88
OK
No action needed
10 frontend/src/App.jsx js 86
OK
No action needed
10 frontend/src/pages/Orders.jsx js 81
OK
No action needed
10 db.py py 78
OK
No action needed
10 frontend/src/pages/WhatsNew.jsx js 74
OK
No action needed
10 frontend/src/auth.js js 43
OK
No action needed
10 api/routers/pricing.py py 35
OK
No action needed
10 frontend/src/main.jsx js 14
OK
No action needed
10 frontend/vite.config.js js 12
OK
No action needed
10 api/routers/__init__.py py 0
OK
No action needed
10 tests/__init__.py py 0
OK
No action needed

File-level ratings — datacore

ScoreFileLangLinesIssuesSuggestion
7 datacore/db.py py 904
god fileCC C(20)
God file — split by responsibility into separate modules
10 datacore/api/main.py py 227
OK
No action needed
10 datacore/__init__.py py 9
OK
No action needed
10 datacore/api/__init__.py py 0
OK
No action needed

File-level ratings — analysis

ScoreFileLangLinesIssuesSuggestion
5 quality.py py 1,111
god fileCC D(25)
God file — split by responsibility into separate modules
5 index.py py 754
large fileCC D(21)
Break up build_html() (CC 21) — extract 2–3 sub-functions to lower complexity below 10
5 delivery/delivery_dashboard.py py 656
large fileCC D(22)
Break up build_html() (CC 22) — extract 2–3 sub-functions to lower complexity below 10
5 pipelines/pipeline_dashboard.py py 396
CC D(28)
Break up build_html() (CC 28) — extract 2–3 sub-functions to lower complexity below 10
5 scraper/scraper_health.py py 355
CC D(30)
Break up crunch() (CC 30) — extract 2–3 sub-functions to lower complexity below 10
7 leverage/report.py py 2,160
god fileCC C(14)
God file — split by responsibility into separate modules
7 ado/close_completed.py py 377
CC C(12)
Minor: print_report() (CC 12) is borderline — add early returns or extract helpers if it grows
9 leverage/summary.py py 1,437
god file
God file — split by responsibility into separate modules
9 leverage/report_data.py py 971
god file
God file — split by responsibility into separate modules
9 leverage/collect.py py 759
large file
Large file — consider splitting into smaller modules as it grows
9 cost/cost.py py 730
large file
Large file — consider splitting into smaller modules as it grows
9 leverage/summary_data.py py 402
large file
Large file — consider splitting into smaller modules as it grows
9 ado/ado.py py 372
OK
No action needed
9 leverage/calibrate.py py 348
OK
No action needed
9 release_notes.py py 319
OK
No action needed
10 tests/test_close_completed.py py 196
OK
No action needed
10 projections/ai_value_projection.py py 163
OK
No action needed
10 tests/test_calibrate.py py 108
OK
No action needed
10 projections/value_projection.py py 93
OK
No action needed
10 tz_utils.py py 61
OK
No action needed

File-level ratings — platform

No source files found.

File-level ratings — terraform

ScoreFileLangLinesIssuesSuggestion
9 modules/scraper/main.tf hcl 546
god file
Consider splitting into smaller modules by resource type
9 modules/app/main.tf hcl 161
large file
No action needed
10 modules/cardmarket/main.tf hcl 631
god file
Consider splitting into smaller modules by resource type
10 envs/ado/main.tf hcl 438
god file
Consider splitting into smaller modules by resource type
10 modules/3dtrails/main.tf hcl 343
god file
Consider splitting into smaller modules by resource type
10 envs/dev/main.tf hcl 237
large file
No action needed
10 envs/prd/main.tf hcl 218
large file
No action needed
10 modules/tradehub/main.tf hcl 202
large file
No action needed
10 modules/data/main.tf hcl 152
large file
No action needed
10 modules/analysis/main.tf hcl 149
OK
No action needed
10 modules/monitoring/main.tf hcl 144
OK
No action needed
10 modules/scraper/variables.tf hcl 123
OK
No action needed
10 modules/cardmarket/variables.tf hcl 112
OK
No action needed
10 modules/app/variables.tf hcl 106
OK
No action needed
10 envs/dev/trails/main.tf hcl 86
OK
No action needed
10 modules/cicd/main.tf hcl 84
OK
No action needed
10 envs/dev/data/main.tf hcl 81
OK
No action needed
10 envs/dev/app/main.tf hcl 79
OK
No action needed
10 envs/prd/app/main.tf hcl 79
OK
No action needed
10 envs/prd/data/main.tf hcl 76
OK
No action needed
10 envs/prd/trails/main.tf hcl 76
OK
No action needed
10 modules/tradehub/variables.tf hcl 76
OK
No action needed
10 modules/3dtrails/variables.tf hcl 75
OK
No action needed
10 envs/dev/scraper/main.tf hcl 72
OK
No action needed
10 envs/monitoring/main.tf hcl 72
OK
No action needed
10 envs/prd/scraper/main.tf hcl 70
OK
No action needed
10 envs/prd/tradehub/main.tf hcl 67
OK
No action needed
10 modules/analysis/variables.tf hcl 67
OK
No action needed
10 envs/dev/tradehub/main.tf hcl 66
OK
No action needed
10 envs/prd/analysis/main.tf hcl 61
OK
No action needed
10 envs/dev/analysis/main.tf hcl 60
OK
No action needed
10 bootstrap/create-remote-storage.tf hcl 59
OK
No action needed
10 modules/platform/main.tf hcl 59
OK
No action needed
10 modules/cicd/variables.tf hcl 58
OK
No action needed
10 modules/data/variables.tf hcl 54
OK
No action needed
10 envs/dev/platform/main.tf hcl 52
OK
No action needed
10 envs/prd/platform/main.tf hcl 52
OK
No action needed
10 envs/dev/cicd/main.tf hcl 51
OK
No action needed
10 envs/prd/cicd/main.tf hcl 51
OK
No action needed
10 modules/cardmarket/outputs.tf hcl 50
OK
No action needed
10 modules/data/outputs.tf hcl 46
OK
No action needed
10 modules/monitoring/variables.tf hcl 37
OK
No action needed
10 modules/platform/variables.tf hcl 31
OK
No action needed
10 modules/platform/outputs.tf hcl 30
OK
No action needed
10 modules/analysis/outputs.tf hcl 26
OK
No action needed
10 modules/tradehub/outputs.tf hcl 21
OK
No action needed
10 modules/3dtrails/outputs.tf hcl 20
OK
No action needed
10 modules/monitoring/outputs.tf hcl 17
OK
No action needed
10 modules/app/outputs.tf hcl 15
OK
No action needed
10 envs/ado/variables.tf hcl 14
OK
No action needed
10 envs/ado/backend.tf hcl 10
OK
No action needed
10 envs/dev/analysis/backend.tf hcl 10
OK
No action needed
10 envs/dev/app/backend.tf hcl 10
OK
No action needed
10 envs/dev/backend.tf hcl 10
OK
No action needed
10 envs/dev/cicd/backend.tf hcl 10
OK
No action needed
10 envs/dev/data/backend.tf hcl 10
OK
No action needed
10 envs/dev/platform/backend.tf hcl 10
OK
No action needed
10 envs/dev/scraper/backend.tf hcl 10
OK
No action needed
10 envs/dev/tradehub/backend.tf hcl 10
OK
No action needed
10 envs/dev/trails/backend.tf hcl 10
OK
No action needed
10 envs/monitoring/backend.tf hcl 10
OK
No action needed
10 envs/prd/analysis/backend.tf hcl 10
OK
No action needed
10 envs/prd/app/backend.tf hcl 10
OK
No action needed
10 envs/prd/backend.tf hcl 10
OK
No action needed
10 envs/prd/cicd/backend.tf hcl 10
OK
No action needed
10 envs/prd/data/backend.tf hcl 10
OK
No action needed
10 envs/prd/platform/backend.tf hcl 10
OK
No action needed
10 envs/prd/scraper/backend.tf hcl 10
OK
No action needed
10 envs/prd/tradehub/backend.tf hcl 10
OK
No action needed
10 envs/prd/trails/backend.tf hcl 10
OK
No action needed
10 modules/scraper/outputs.tf hcl 5
OK
No action needed