repowiserepowise
Sign in
sanic-org/sanic
OverviewDocsArchitectureKnowledge GraphFilesCode HealthSecurityRefactoring

People & History

CommitsContributorsDecisions
Chat
Stats
repowiserepowise
ExplorePricingDocs
Sign in
repowisesanic-org/sanic
SA
SA

sanic-org / sanic

pythonmain5ffc7b335.6K linessynced 4mo ago

Code health

7.2out of 10Good

This codebase scores 7.2 out of 10 for code health, which we rate good. Risk is concentrated, as it usually is: 10 of 470 files are git hotspots, and they average 5.0 — which is where the fixes pay off most.

Full health report →
Score validation4/207.2× baselineTop-ranked files that did go on to need a bug fixDead code72exportsUnused exports that nothing in the graph reaches

Do next

1 thing worth doing this quarter.

Worth planning

  • Delete 30 unused symbols and files (762 lines)

    Nothing in the graph reaches them, across 15 files; every reader and agent pays to skip them.

    symbols
    30
    lines
    762
    safe to delete
    Yes(inferred)
    Medium effort

Improve what Repowise can see

  • Add a test coverage report

    Without one, Repowise cannot tell tested code from untested code, so every test-related action says “unknown”.

    line coverage
    Unknown, no report
    Small effort
  • Review the 79 proposed decisions

    None is accepted yet, so nothing can drift from one and agents get no enforced guidance from them.

    proposed
    79
    accepted
    0
    Medium effort
Lines of code
35.6K
Files
470
Symbols
3,043
Modules
8
Languages
4

Recent activity

All commits →

Commits

  • 5ffc7b37v25 LTS security patch (#3164) (#3166)4mo ago
  • 785d77f8Prepare for v25.12 release (#3124)9mo ago
  • dc0939e6Check state in shutdown for handling uvloop double kill (#3122)9mo ago
  • a64dc641Respect KEEP_ALIVE config (#3121)9mo ago
  • 7c9b8461Respect LOG_EXTRA in all cases (#3120)9mo ago
  • 9aef932bExplicit symlink params for static files/dirs (#3117)9mo ago

Decisions

  • Verify unix socket is dead before removing it on server exitproposed
  • Start listening before renaming unix socket to avoid connection failuresproposed
  • Omit message body and length in certain HTTP status codesproposed
  • Keep JSON responses consistent across ujson and built-in jsonproposed
  • Fix recursion error in Sanic subclass initializationproposed
  • Preserve blueprints without slashproposed
▸

Everything we found

858 open

Every detector's open count by area, each with its worst example. An inventory, not a to-do list: the actions above are the part worth doing.

  • worst item is critical severity. Code health434Function hotspot · sanic/app.py48 findings · 7.5 deducted→
  • worst item is medium severity. Decisions89tests/test_http.py79 awaiting review · 10 hotspots ungoverned→
  • worst item is medium severity. Ownership231sanic/__version__.py100% single-owner concentration, 1 commits in 90d→
  • worst item is low severity. Dead code104examples/exception_monitoring.pyUnreachable symbol (30 lines)→

Composition

Open the graph →
python 98%
dockerfile 1%javascript 1%makefile 1%

Explore this codebase

  • Docs0 pages across 8 modules→
  • ChatAsk this codebase a question and get an answer with its sources.→
  • Files470 files with per-file docs, health and history→
  • ArchitectureDependency graph, layers, and 11 entry points→
  • Code healthPer-file scores, 493 open findings, coverage and refactoring targets→
  • Knowledge graphEntities, communities, and the paths between them→
  • Change couplingFiles that keep changing together, mined from commit history→
  • CommitsChange-risk ranked history with agent provenance→
  • ContributorsBus factor, per-file maintainers, and the human/agent split→
  • StatsSize class, origin, lifetime churn, rhythm and records→
  • CostsWhat indexing this snapshot cost, by model and by run.→