Repository Analysis

koodo-reader/koodo-reader

A modern ebook manager and reader with sync and backup capacities for Windows, macOS, Linux, Android, iOS and Web

0.8 Likely human-written View on GitHub
0.8
Adjusted Score
0.8
Raw Score
100%
Time Factor
2026-05-30
Last Push
27,051
Stars
JavaScript
Language
127,697
Lines of Code
493
Files
44
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 1HIGH 0MEDIUM 24LOW 19

Pattern Findings

44 matches across 7 categories. Click a row to expand file-level details.

Decorative Section Separators23 hits · 69 pts
SeverityFileLineSnippet
MEDIUMhttpserver/koreader.go30// ── KOReader server state ─────────────────────────────────────────────────────
MEDIUMhttpserver/koreader.go91// ── KOReader HTTP mux ─────────────────────────────────────────────────────────
MEDIUMhttpserver/koreader.go132// ── Helpers ───────────────────────────────────────────────────────────────────
MEDIUMhttpserver/koreader.go169// ── Handlers ──────────────────────────────────────────────────────────────────
MEDIUMhttpserver/opds.go17// ── OPDS configuration ────────────────────────────────────────────────────────
MEDIUMhttpserver/opds.go25// ── Atom / OPDS XML types ─────────────────────────────────────────────────────
MEDIUMhttpserver/opds.go95// ── Book model from SQLite ────────────────────────────────────────────────────
MEDIUMhttpserver/opds.go160// ── Cover file detection ──────────────────────────────────────────────────────
MEDIUMhttpserver/opds.go236// ── XML helpers ───────────────────────────────────────────────────────────────
MEDIUMhttpserver/opds.go256// ── OPDS handlers ─────────────────────────────────────────────────────────────
MEDIUMhttpserver/opds.go493// ── Entry builder ─────────────────────────────────────────────────────────────
MEDIUMhttpserver/opds.go538// ── OPDS router ───────────────────────────────────────────────────────────────
MEDIUMhttpserver/main.go25// ── Configuration ────────────────────────────────────────────────────────────
MEDIUMhttpserver/main.go96// ── Helpers ───────────────────────────────────────────────────────────────────
MEDIUMhttpserver/main.go201// ── Handlers ──────────────────────────────────────────────────────────────────
MEDIUMhttpserver/main.go448// ── Router ────────────────────────────────────────────────────────────────────
MEDIUM.github/workflows/docker-publish.yml30 # ── Pre-build React app on native runner (eliminates QEMU overhead) ──────
MEDIUMsrc/pages/stats/component.tsx47 // ── 1. Books read (has a recordLocation) ──────────────────────────────
MEDIUMsrc/pages/stats/component.tsx62 // ── 2. Total reading time from readingStats ────────────────────────────
MEDIUMsrc/pages/stats/component.tsx73 // ── 3. Longest streak (consecutive reading days up to today) ──────────
MEDIUMsrc/pages/stats/component.tsx92 // ── 4. Daily average ──────────────────────────────────────────────────
MEDIUMsrc/pages/stats/component.tsx99 // ── 5. Last 30 days data ──────────────────────────────────────────────
MEDIUMsrc/pages/stats/component.tsx111 // ── 6. Heatmap: last 52 weeks ─────────────────────────────────────────
Hallucination Indicators1 hit · 15 pts
SeverityFileLineSnippet
CRITICALpublic/lib/jspdf/jspdf.umd.min.js86 */var P={print:4,modify:8,copy:16,"annot-forms":32};function k(t,e,r,n){this.v=1,this.r=2;var i=192;t.forEach((functi
Hyper-Verbose Identifiers9 hits · 9 pts
SeverityFileLineSnippet
LOWpublic/lib/7z-wasm/7zz.umd.js1308function updateGlobalBufferAndViews(buf) {
LOWpublic/lib/7z-wasm/7zz.umd.js1738 function receiveInstantiationResult(result) {
LOWsrc/store/actions/reader.tsx49export function handleCurrentChapterIndex(currentChapterIndex: number) {
LOWsrc/store/actions/reader.tsx73export function handleReaderBackgroundImage(readerBackgroundImage: string) {
LOWsrc/store/actions/reader.tsx100export function handleHideAudiobookButton(isHideAudiobookButton: boolean) {
LOWsrc/store/actions/reader.tsx112export function handleHidePDFConvertButton(isHidePDFConvertButton: boolean) {
LOWsrc/store/actions/backupPage.tsx39export function handleFetchDataSourceList() {
LOWsrc/store/actions/backupPage.tsx45export function handleFetchLoginOptionList() {
LOWsrc/store/actions/backupPage.tsx61export function handleFetchDefaultSyncOption() {
Over-Commented Block8 hits · 8 pts
SeverityFileLineSnippet
LOWdocker-compose.yml21# volumes:
LOWpublic/lib/sqljs-wasm/sql-wasm.js21 // If we're here, we've never called this function before
LOWpublic/lib/7z-wasm/7zz.umd.js961/**
LOWpublic/lib/7z-wasm/7zz.umd.js1101 if (codeUnit == 0) break;
LOWpublic/lib/7z-wasm/7zz.umd.js5261 // MEMORY_GROWTH_GEOMETRIC_STEP factor (default +20%),
LOWpublic/lib/7z-wasm/7zz.umd.js6181 } else
LOWhttpserver/koreader.go1package main
LOWsrc/constants/settingList.tsx201 label: "SiYuan API Token",
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippet
MEDIUMsrc/upload.sh31# Create a directory with the name of the tag
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippet
LOWpublic/lib/7z-wasm/7zz.umd.js17// We need to check if Module already exists (e.g. case 3 above).
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippet
LOWpublic/lib/7z-wasm/7zz.umd.js4633 function processData(byteArray) {