Quality Score: 70/100
Low RiskThis repo is in good health with CI, tests, and active maintenance.
No CI -20High complexity -10
Maintainability grade
Static analysisHow maintainable the code looks — from complexity, code issues, test presence, file size, and hotspot load. It grades the shape of the code, not defect risk, and doesn't replace review.
D41/100
A ≥ 85, B ≥ 70, C ≥ 55, D ≥ 40, F < 40
Cyclomatic complexityavg 3140/35 Code issues0 errors, 8 warnings17/20 Testspresent · ~4% of files14/20 Largest file4,630 lines0/15 Hotspot load0 high-risk files10/10 Configuration status
CI/CD Pipeline — not detected
Test Suite — detected
7 test files detected
Stack: Pytest
Where: android_projects/OcrLiteAndroidMNN/app/src/test/java/com/benjaminwan/ocr/onnx · android_projects/OcrLiteAndroidMNN/OcrLibrary/src/test/java/com/benjaminwan/ocrlibrary · android_projects/OcrLiteAndroidNcnn/app/src/test/java/com/benjaminwan/ocr
Test Coverage — ~4%heuristic
7 test files / 179 source files. This is a file-count ratio, not real line coverage — set up Codecov for authoritative numbers.
Dependency Scanning — no config detected
No Dependabot / Renovate / Snyk / Trivy / CodeQL config found. Enable Dependabot or Renovate.
Live Signals
Real-time data from Codecov, GitHub Actions, GitHub Issues, deps.dev — not estimates.
CI pass rate100%
last 3 runs · median 49s
Stale-issue ratio74%
of 27 recent open issues are 30d+ old with no replies
Maintainer response24h
median first-reply across 9 recent issues · fast
Activity trajectory↓ Declining
last 6mo: 23 commits · prior 6mo: 39
Top hotspots
Files edited often AND hard to reason about. Churn = recent commit frequency, Complexity = branches and nesting, Risk = both combined. These are the highest-leverage targets for refactoring or testing.
All hotspots
Files that change often and are complex tend to accumulate more bugs
Code metrics
Static analysis on sampled source files (up to 15 files).
Avg Cyclomatic Complexity314
Counts if/for/while/switch/catch/ternary branches
Errors / Warnings0 / 8
Secrets, empty catches, console.log, var usage, long lines