一个简单好用的个人书库
This report summarizes scanner evidence for talebook/talebook, a HTML project with 5,829 GitHub stars. SynthScan examined 426,144 lines of code across 1346 source files, recording 2484 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 7.2 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1793 finding(s).
Are imports declared and package/API names verified? 199 finding(s).
Are wrappers, guards, and repeated structures necessary? 2038 finding(s).
Which changes need focused human review? 2484 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2484 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/composables/usePrimaryNavigation.ts | 17 | export function isPrimaryNavigationItemActive(item: PrimaryNavigationItem, path: string): boolean | undefined { | CODE |
| LOW | app/server/utils/readProxy.ts | 23 | export function buildReadProxyRequestHeaders(requestHeaders: Headers, requestUrl: URL): Headers { | CODE |
| LOW | app/utils/book-tools.ts | 1 | export function confirmDestructiveBookWrite( | CODE |
| LOW | app/utils/builtin-themes.ts | 28 | export async function loadBuiltinThemeComponent(themeName: string, componentName: 'AppHeader' | 'AppFooter') { | CODE |
| LOW | app/utils/builtin-theme-overlay.ts | 466 | export function buildBuiltinThemeOverlayCss(themeName: BuiltinThemeName) { | CODE |
| LOW | app/utils/builtin-theme-runtime.ts | 32 | export function buildBuiltinThemeRuntimeDescriptor( | CODE |
| LOW | app/utils/builtin-theme-runtime.ts | 80 | export function applyBuiltinThemeRuntimeDescriptor( | CODE |
| LOW | app/components/BookDetailActions.vue | 295 | function upwardMenuLocationStrategy(data, _props, contentStyles) { | CODE |
| LOW | app/public/readest/legacy-worker-cleanup.js | 13 | function isLegacyReadestRegistration(registration) { | CODE |
| LOW | app/public/readest/legacy-worker-cleanup.js | 17 | export async function cleanupLegacyReadestWorker({ | CODE |
| LOW⚡ | app/public/static/pdfjs/web/viewer.js | 3061 | function webViewerPresentationMode() { | CODE |
| LOW⚡ | app/public/static/pdfjs/web/viewer.js | 3064 | function webViewerSwitchAnnotationEditorMode(evt) { | CODE |
| LOW⚡ | app/public/static/pdfjs/web/viewer.js | 3067 | function webViewerSwitchAnnotationEditorParams(evt) { | CODE |
| LOW⚡ | app/public/static/pdfjs/web/viewer.js | 3119 | function webViewerOptionalContentConfig(evt) { | CODE |
| LOW⚡ | app/public/static/pdfjs/web/viewer.js | 3122 | function webViewerSwitchScrollMode(evt) { | CODE |
| LOW⚡ | app/public/static/pdfjs/web/viewer.js | 3125 | function webViewerSwitchSpreadMode(evt) { | CODE |
| LOW⚡ | app/public/static/pdfjs/web/viewer.js | 3128 | function webViewerDocumentProperties() { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 291 | function backtrackBeforeAllVisibleElements(index, views, top) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 321 | function isElementBottomAfterViewTop(view) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 326 | function isElementNextAfterViewHorizontally(view) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 395 | function normalizeWheelEventDirection(evt) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 497 | function getActiveOrFocusedElement() { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 506 | function apiPageLayoutToViewerModes(layout) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 565 | (function checkCanvasSizeLimitation() { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 2594 | function addWindowResolutionChange(evt = null) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 2978 | function webViewerPresentationModeChanged(evt) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 2981 | function webViewerSidebarViewChanged({ | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 3006 | function webViewerScrollModeChanged(evt) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 3011 | function webViewerSpreadModeChanged(evt) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 3101 | function webViewerPageNumberChanged(evt) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 3144 | function webViewerUpdateFindMatchesCount({ | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 3153 | function webViewerUpdateFindControlState({ | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 3174 | function webViewerRotationChanging(evt) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 3193 | function webViewerResolutionChange(evt) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 3196 | function webViewerVisibilityChange(evt) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 3650 | function webViewerAnnotationEditorStatesChanged(data) { | CODE |
| LOW | app/public/static/pdfjs/web/viewer.js | 8327 | function isValidAnnotationEditorMode(mode) { | CODE |
| LOW | app/public/static/readium/lib/thirdparty/hammer.js | 303 | stopDefaultBrowserBehavior: function stopDefaultBrowserBehavior(element, css_props) { | CODE |
| LOW | …/public/static/readium/lib/thirdparty/jquery-1.11.0.js | 8631 | function addToPrefiltersOrTransports( structure ) { | CODE |
| LOW | …/public/static/readium/lib/thirdparty/jquery-1.11.0.js | 8663 | function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { | CODE |
| LOW | …/public/static/readium/lib/thirdparty/remotestorage.js | 3 | (function(window){var haveLocalStorage;var LS_STATE_KEY="remotestorage:widget:state";var VALID_ENTRY_STATES={initial:tru | CODE |
| LOW | app/pages/admin/plugins/index.vue | 672 | function supportsInstanceConnection(plugin) { | CODE |
| LOW | app/pages/admin/plugins/index.vue | 726 | function connectionHealthIsActionable(connection) { | CODE |
| LOW | app/pages/admin/plugins/runs/index.vue | 153 | function installationForConnection(id) { | CODE |
| LOW | tests/test_trash.py | 43 | def test_list_books_returns_metadata_without_paths(self): | CODE |
| LOW | tests/test_trash.py | 69 | def test_restore_books_rebuilds_calibre_record_and_files(self): | CODE |
| LOW | tests/test_trash.py | 88 | def test_restore_books_reports_missing_and_conflicting_ids(self): | CODE |
| LOW | tests/test_trash.py | 109 | def test_delete_books_uses_whole_book_category_and_deduplicates(self): | CODE |
| LOW | tests/test_trash.py | 123 | def test_list_uses_admin_only_trash_api(self): | CODE |
| LOW | tests/test_trash.py | 140 | def test_restore_accepts_integer_batch_and_returns_failures(self): | CODE |
| LOW | tests/test_trash.py | 154 | def test_permanent_delete_requires_confirmation(self): | CODE |
| LOW | tests/test_trash.py | 166 | def test_permanent_delete_rejects_non_integer_ids(self): | CODE |
| LOW | tests/test_trash.py | 178 | def test_permanent_delete_processes_confirmed_batch(self): | CODE |
| LOW | tests/test_trash.py | 191 | def test_non_admin_cannot_list_or_operate_trash(self): | CODE |
| LOW⚡ | tests/test_trash.py | 220 | def test_private_book_delete_is_permanent(self): | CODE |
| LOW⚡ | tests/test_trash.py | 229 | def test_public_book_delete_uses_calibre_trash(self): | CODE |
| LOW⚡ | tests/test_trash.py | 238 | def test_admin_batch_delete_is_permanent_for_private_books(self): | CODE |
| LOW⚡ | tests/test_meta_providers.py | 29 | def test_every_meta_provider_satisfies_the_metadata_contract(): | CODE |
| LOW⚡ | tests/test_meta_providers.py | 36 | def test_metadata_query_accepts_bare_string_and_mapping(): | CODE |
| LOW⚡ | tests/test_meta_providers.py | 45 | def test_conversion_keeps_the_original_object_for_write_back(): | CODE |
| 1479 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CODE_WIKI.md | 1181 | except Exception as e: | CODE |
| LOW | .trae/documents/修改2.md | 94 | except Exception: | CODE |
| LOW | .trae/documents/修改3.md | 96 | except Exception as err: | CODE |
| LOW | .trae/documents/修改3.md | 115 | except Exception as err: | CODE |
| LOW | .trae/documents/修改3.md | 125 | except Exception as err: | CODE |
| LOW | .trae/documents/修改1.md | 68 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 83 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 121 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 131 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 146 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 289 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 343 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 388 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 413 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 468 | except Exception as e: | CODE |
| LOW | .trae/documents/修改1.md | 507 | except Exception as e: | CODE |
| LOW | tools/tools.py | 83 | except Exception as e: | CODE |
| LOW | tests/test_texttools.py | 45 | except Exception: | CODE |
| LOW⚡ | tests/test_book_auto_transform.py | 48 | except Exception as exc: | CODE |
| LOW | tests/test_scan.py | 355 | except Exception: | CODE |
| LOW | tests/cases/update_users_db.py | 96 | except Exception as e: | CODE |
| LOW | tests/cases/update_users_db.py | 132 | except Exception as e: | CODE |
| LOW | tests/cases/update_users_db.py | 197 | except Exception as e: | CODE |
| LOW | webserver/models.py | 56 | except Exception: | CODE |
| LOW | webserver/migrate_db.py | 115 | except Exception as e: | CODE |
| LOW | webserver/migrate_db.py | 156 | except Exception as e: | CODE |
| LOW | webserver/migrate_db.py | 226 | except Exception as e: | CODE |
| LOW | webserver/migrate_db.py | 257 | except Exception as e: | CODE |
| LOW⚡ | webserver/migrate_db.py | 463 | except Exception as e: | CODE |
| LOW⚡ | webserver/migrate_db.py | 471 | except Exception as e: | CODE |
| LOW⚡ | webserver/migrate_db.py | 479 | except Exception as e: | CODE |
| LOW | webserver/utils.py | 56 | except Exception as e: | CODE |
| LOW | webserver/loader.py | 25 | except Exception: | CODE |
| LOW | webserver/i18n.py | 104 | except Exception: | STRING |
| LOW | webserver/i18n.py | 130 | except Exception: | STRING |
| LOW | webserver/main.py | 69 | except Exception as e: | CODE |
| LOW | webserver/main.py | 328 | except Exception as e: | CODE |
| LOW | webserver/plugins/source/legado.py | 277 | except Exception: | CODE |
| LOW | webserver/plugins/source/venera_worker.py | 51 | except Exception: | CODE |
| LOW | webserver/plugins/meta/common.py | 12 | except Exception: | CODE |
| LOW | webserver/plugins/meta/qimao/api.py | 133 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/qimao/api.py | 157 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/qimao/api.py | 258 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/qimao/api.py | 271 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/calibre/api.py | 83 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/calibre/api.py | 112 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/calibre/api.py | 233 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/calibre/api.py | 260 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/baike/api.py | 116 | except Exception as err: | CODE |
| LOW | webserver/plugins/meta/baike/api.py | 196 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/baike/api.py | 215 | except Exception as err: | CODE |
| LOW | webserver/plugins/meta/baike/api.py | 242 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/douban_v2/plugin.py | 30 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/douban_v2/plugin.py | 45 | except Exception: | CODE |
| LOW | webserver/plugins/meta/douban_v2/plugin.py | 65 | except Exception: | CODE |
| LOW | webserver/plugins/meta/douban_v2/plugin.py | 88 | except Exception: | CODE |
| LOW | webserver/plugins/meta/xhsd/api.py | 132 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/xhsd/api.py | 219 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/xhsd/api.py | 255 | except Exception as e: | CODE |
| LOW | webserver/plugins/meta/xhsd/api.py | 292 | except Exception as e: | CODE |
| 299 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/tools.py | 66 | except: | CODE |
| HIGH | tools/kgbook.com/spider.py | 98 | except: | CODE |
| HIGH | tests/test_upgrade_version_management.py | 68 | except (requests.RequestException, ValueError): | CODE |
| HIGH | tests/test_upgrade_version_management.py | 96 | except (requests.RequestException, ValueError): | CODE |
| HIGH | tests/test_texttools.py | 48 | except OSError: | CODE |
| HIGH | tests/test_texttools.py | 128 | except OSError: | CODE |
| HIGH | tests/test_texttools.py | 147 | except OSError: | CODE |
| HIGH | tests/test_texttools.py | 182 | except OSError: | CODE |
| HIGH | tests/test_epub_beautify.py | 1775 | except ValueError: | CODE |
| HIGH | tests/test_upgrade_recreation.py | 48 | except (requests.RequestException, ValueError): | CODE |
| HIGH | tests/test_scan.py | 355 | except Exception: | CODE |
| HIGH | tests/test_nginx_large_response.py | 45 | except (BrokenPipeError, ConnectionResetError): | CODE |
| HIGH | tests/test_settings_persistence.py | 113 | except OSError: | CODE |
| HIGH | tests/test_settings_persistence.py | 95 | except OSError: | CODE |
| HIGH | webserver/models.py | 261 | except: | CODE |
| HIGH | webserver/loader.py | 40 | except OSError: | CODE |
| HIGH | webserver/loader.py | 76 | except: | CODE |
| HIGH | webserver/loader.py | 83 | except: | CODE |
| HIGH | webserver/loader.py | 108 | except: | CODE |
| HIGH | webserver/loader.py | 28 | except OSError: | CODE |
| HIGH | webserver/i18n.py | 104 | except Exception: | CODE |
| HIGH | webserver/main.py | 227 | except: | CODE |
| HIGH | webserver/plugins/runtime/safe_http.py | 119 | except AttributeError: | CODE |
| HIGH | webserver/plugins/meta/neodb/api.py | 164 | except ValueError: | CODE |
| HIGH | webserver/plugins/meta/tomato/tomato/tomato.py | 204 | except Exception: | CODE |
| HIGH | webserver/plugins/meta/tomato/tomato/tomato.py | 331 | except Exception: | CODE |
| HIGH | webserver/plugins/meta/tomato/tomato/tomato.py | 340 | except Exception: | CODE |
| HIGH | webserver/plugins/meta/tomato/tomato/tomato.py | 547 | except Exception: | CODE |
| HIGH | webserver/plugins/tool/zh_converter/transform.py | 221 | except UnicodeDecodeError: | CODE |
| HIGH | webserver/plugins/tool/epub_beautify/beautify_lib.py | 293 | except UnicodeDecodeError: | CODE |
| HIGH | webserver/plugins/tool/epub_beautify/beautify_lib.py | 1122 | except Exception: | CODE |
| HIGH | webserver/plugins/tool/epub_beautify/beautify_lib.py | 266 | except Exception: | CODE |
| HIGH | webserver/webdav/dav_provider.py | 97 | except Exception: | CODE |
| HIGH | webserver/webdav/dav_provider.py | 105 | except Exception: | CODE |
| HIGH | webserver/webdav/dav_provider.py | 516 | except Exception: | CODE |
| HIGH | webserver/handlers/audiobook.py | 157 | except ValueError: | CODE |
| HIGH | webserver/handlers/booksource_admin.py | 610 | except (ValueError, TypeError): | CODE |
| HIGH | webserver/handlers/captcha.py | 91 | except (ValueError, TypeError, AttributeError, UnicodeError): | CODE |
| HIGH | webserver/handlers/admin.py | 327 | except FileNotFoundError: | CODE |
| HIGH | webserver/handlers/book.py | 1406 | except (OSError, ValueError): | CODE |
| HIGH | webserver/handlers/book.py | 2571 | except Exception: | CODE |
| HIGH | webserver/base/trash_manager.py | 64 | except Exception: | CODE |
| HIGH | webserver/services/audiobook.py | 171 | except (TypeError, ValueError): | CODE |
| HIGH | webserver/services/audiobook.py | 976 | except AudiobookLeaseLost: | CODE |
| HIGH | webserver/services/ssl_certificate.py | 198 | except FileNotFoundError: | CODE |
| HIGH | webserver/services/ssl_certificate.py | 189 | except OSError: | CODE |
| HIGH | webserver/services/external_index.py | 80 | except Exception: | CODE |
| HIGH | webserver/services/convert.py | 91 | except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): | CODE |
| HIGH | webserver/services/scan.py | 474 | except Exception: | CODE |
| HIGH | webserver/services/scan.py | 683 | except Exception: | CODE |
| HIGH | webserver/services/scan.py | 658 | except Exception: | CODE |
| HIGH | webserver/services/booksource/rule_dispatch.py | 239 | except Exception: | CODE |
| HIGH | webserver/services/booksource/analyze_url.py | 67 | except ValueError: | CODE |
| HIGH | webserver/services/booksource/engine.py | 99 | except ValueError: | CODE |
| HIGH | webserver/services/booksource/engine.py | 105 | except ValueError: | CODE |
| HIGH | webserver/services/booksource/book_source.py | 115 | except (ValueError, TypeError): | CODE |
| HIGH | webserver/services/booksource/save_service.py | 86 | except Exception: | CODE |
| HIGH | scripts/upgrade/executor.py | 576 | except Exception: | CODE |
| HIGH | scripts/upgrade/executor.py | 255 | except (UpgradeError, KeyError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_texttools.py | 198 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_epub_beautify.py | 2914 | # ── 2026-09-08 复审修复回归 ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_booksource_engine.py | 213 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_booksource_engine.py | 215 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_booksource_engine.py | 268 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_booksource_engine.py | 270 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_booksource_engine.py | 291 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_booksource_engine.py | 293 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_booksource_engine.py | 463 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_booksource_engine.py | 465 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_booksource_engine.py | 80 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_booksource_engine.py | 82 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_booksource_engine.py | 558 | # -------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/test_booksource_engine.py | 560 | # -------------------------------------------------------------------------- | STRING |
| MEDIUM | webserver/plugins/meta/base.py | 95 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webserver/plugins/meta/base.py | 102 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webserver/plugins/meta/qimao/api.py | 23 | # ============================================================ | COMMENT |
| MEDIUM | webserver/plugins/meta/qimao/api.py | 25 | # ============================================================ | COMMENT |
| MEDIUM | webserver/plugins/meta/qimao/api.py | 63 | # ============================================================ | COMMENT |
| MEDIUM | webserver/plugins/meta/qimao/api.py | 65 | # ============================================================ | COMMENT |
| MEDIUM | webserver/plugins/meta/qimao/api.py | 96 | # ============================================================ | COMMENT |
| MEDIUM | webserver/plugins/meta/qimao/api.py | 98 | # ============================================================ | COMMENT |
| MEDIUM | …bserver/plugins/tool/epub_beautify/chapter_patterns.py | 26 | # ── 正则(移植自 txt2epub-next converter.py,MIT)────────────────────────────── | COMMENT |
| MEDIUM | …bserver/plugins/tool/epub_beautify/chapter_patterns.py | 69 | # ── 判定函数(移植自 txt2epub-next,MIT)─────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …bserver/plugins/tool/epub_beautify/chapter_patterns.py | 121 | # ── EPUB 段落适配 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 77 | # ── 内容清理(借鉴 Sigil CleanSource 思路,仅思路自研实现)────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 136 | # ── EPUB 容器基础(沿用 text_replace 模式)──────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 303 | # ── OPF 解析 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 458 | # ── NCX / nav 解析 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 533 | # ── 目录数据净化(cleanup.toc_blank)────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 621 | # ── 目录页生成 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 700 | # ── 章节标题标记 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 1297 | # ── 对话行点缀(mb-dialog)──────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 1339 | # ── 弹注/标注(mb-notemark / mb-notes)─────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 1545 | # ── 分析(preview 用)───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/beautify_lib.py | 1792 | # ── 主流程 ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/styles/__init__.py | 92 | # ── 自定义配色与全书底色──────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/styles/__init__.py | 158 | # ── 段落排版自定义(首行缩进开关 + 段间距数值)──────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/styles/__init__.py | 239 | # ── 目录双栏(宽屏渐进增强)────────────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/plugins/tool/epub_beautify/styles/__init__.py | 342 | # ── 背景图片(内置纹理 + 用户上传)──────────────────────────────────────────── | COMMENT |
| MEDIUM | webserver/services/booksource/rule_dispatch.py | 49 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webserver/services/booksource/rule_dispatch.py | 51 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webserver/services/booksource/rule_dispatch.py | 83 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webserver/services/booksource/rule_dispatch.py | 85 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webserver/services/booksource/rule_dispatch.py | 271 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webserver/services/booksource/rule_dispatch.py | 273 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webserver/services/booksource/rule_dispatch.py | 310 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webserver/services/booksource/rule_dispatch.py | 312 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webserver/services/booksource/analyze_url.py | 57 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/analyze_url.py | 147 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/engine.py | 167 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/engine.py | 225 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/engine.py | 247 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/engine.py | 296 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/engine.py | 338 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/analyze_rule.py | 75 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/analyze_rule.py | 77 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/analyze_rule.py | 211 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | webserver/services/booksource/analyze_rule.py | 213 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/build.yml | 25 | # ---------------------------------------- | COMMENT |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_codex_workflow.py | 289 | calls.push({name: "getCollaboratorPermissionLevel", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 294 | calls.push({name: "getBranch", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 298 | calls.push({name: "getContent", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 304 | calls.push({name: "listMatchingRefs", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 310 | calls.push({name: "listPulls", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 314 | calls.push({name: "getPull", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 320 | calls.push({name: "createComment", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 324 | calls.push({name: "updateComment", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 330 | calls.push({name: "createForIssueComment", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 334 | calls.push({name: "createForPullRequestReviewComment", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 349 | info: (message) => calls.push({name: "info", message}), | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 351 | warning: (message) => calls.push({name: "warning", message}), | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 354 | let request = null; | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 355 | if (process.env.CODEX_REQUEST_JSON && harnessFs.existsSync(process.env.CODEX_REQUEST_JSON)) { | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 418 | calls.push({name: "get", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 422 | calls.push({name: "create", args}); | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 426 | calls.push({name: "update", args}); | CODE |
| HIGH | tests/test_codex_workflow.py | 227 | () => finish(null), | CODE |
| HIGH | tests/test_codex_workflow.py | 368 | () => finish(null), | CODE |
| HIGH | tests/test_codex_workflow.py | 450 | () => finish(null), | CODE |
| HIGH⚡ | tests/test_codex_workflow.py | 189 | calls.push({name: "getComment", args}); | STRING |
| HIGH⚡ | tests/test_codex_workflow.py | 196 | calls.push({name: "updateComment", args}); | STRING |
| HIGH⚡ | tests/test_codex_workflow.py | 203 | calls.push({name: "createComment", args}); | STRING |
| HIGH⚡ | tests/test_codex_workflow.py | 486 | "group": "codex-${{ github.repository }}-${{ github.event.issue.number || github.event.pull_request.number }}", | STRING |
| HIGH | tests/test_codex_workflow.py | 214 | warning: (message) => calls.push({name: "warning", message}), | STRING |
| HIGH | tests/test_codex_workflow.py | 831 | assert "historicalIssueBranches.push(branchName);" in context_script | STRING |
| HIGH⚡ | tests/test_venera_source.py | 88 | "key = 'manga_dex'; init() { let list=[]; while(true) list.push(new Array(100000).fill('data')); }", | CODE |
| HIGH⚡ | tests/test_runtime_identity_config.py | 62 | assert "chown -R talebook:talebook /data/books/settings || exit 1" in script | CODE |
| HIGH⚡ | webserver/services/booksource/js_runtime.py | 52 | for (var bi = 0; bi < text.length; bi++) bytes.push(text.charCodeAt(bi)); | STRING |
| HIGH⚡ | webserver/services/booksource/js_runtime.py | 54 | bytes.push(128); | STRING |
| HIGH⚡ | webserver/services/booksource/js_runtime.py | 55 | while ((bytes.length % 64) !== 56) bytes.push(0); | STRING |
| HIGH⚡ | webserver/services/booksource/js_runtime.py | 56 | for (var li = 0; li < 8; li++) bytes.push(Math.floor(bitLength / Math.pow(256, li)) & 255); | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/kgbook.com/spider.py | 84 | CODE | |
| LOW | tests/test_comic_reader.py | 327 | CODE | |
| LOW | tests/test_meta_pagination.py | 21 | CODE | |
| LOW | tests/test_admin.py | 338 | CODE | |
| LOW | tests/test_admin.py | 382 | CODE | |
| LOW | tests/test_admin.py | 410 | CODE | |
| LOW | tests/test_plugin_host_queue.py | 50 | CODE | |
| LOW | tests/test_plugin_host_queue.py | 89 | CODE | |
| LOW | tests/test_service.py | 108 | CODE | |
| LOW | tests/test_service.py | 135 | CODE | |
| LOW | tests/test_service.py | 198 | CODE | |
| LOW | tests/test_upgrade_release.py | 99 | CODE | |
| LOW | tests/test_codeql_security.py | 94 | CODE | |
| LOW | tests/test_managed_documents.py | 80 | CODE | |
| LOW | tests/test_audiobook_transactions.py | 130 | CODE | |
| LOW | tests/test_audiobook_transactions.py | 321 | CODE | |
| LOW | tests/test_audiobook_transactions.py | 133 | CODE | |
| LOW | tests/test_audiobook_transactions.py | 330 | CODE | |
| LOW | tests/test_upgrade_recreation.py | 36 | CODE | |
| LOW | tests/test_refer_candidates.py | 101 | CODE | |
| LOW | tests/test_scan.py | 27 | CODE | |
| LOW | tests/test_scan.py | 283 | CODE | |
| LOW | tests/test_nginx_large_response.py | 67 | CODE | |
| LOW | tests/test_nginx_large_response.py | 171 | CODE | |
| LOW | tests/test_settings_persistence.py | 82 | CODE | |
| LOW | tests/test_book_formats.py | 104 | CODE | |
| LOW | tests/test_book_formats.py | 157 | CODE | |
| LOW | tests/test_main.py | 967 | CODE | |
| LOW | tests/test_check_spec.py | 25 | CODE | |
| LOW | tests/cases/update_users_db.py | 41 | CODE | |
| LOW | tests/cases/update_users_db.py | 65 | CODE | |
| LOW | tests/cases/update_users_db.py | 104 | CODE | |
| LOW | tests/cases/update_users_db.py | 140 | CODE | |
| LOW | tests/cases/update_users_db.py | 208 | CODE | |
| LOW | tests/cases/update_users_db.py | 241 | CODE | |
| LOW | webserver/migrate_db.py | 54 | CODE | |
| LOW | webserver/migrate_db.py | 80 | CODE | |
| LOW | webserver/migrate_db.py | 123 | CODE | |
| LOW | webserver/migrate_db.py | 302 | CODE | |
| LOW | webserver/migrate_db.py | 415 | CODE | |
| LOW | webserver/migrate_db.py | 497 | CODE | |
| LOW | webserver/plugins/source/tomato_downloader.py | 45 | CODE | |
| LOW | webserver/plugins/source/venera.py | 127 | CODE | |
| LOW | webserver/plugins/runtime/interfaces.py | 161 | CODE | |
| LOW | webserver/plugins/runtime/safe_http.py | 44 | CODE | |
| LOW | webserver/plugins/meta/base.py | 64 | CODE | |
| LOW | webserver/plugins/meta/qimao/api.py | 168 | CODE | |
| LOW | webserver/plugins/meta/baike/api.py | 121 | CODE | |
| LOW | webserver/plugins/meta/douban_v2/api.py | 130 | CODE | |
| LOW | webserver/plugins/meta/xhsd/api.py | 20 | CODE | |
| LOW | webserver/plugins/meta/xhsd/api.py | 148 | CODE | |
| LOW | webserver/plugins/meta/xhsd/api.py | 261 | CODE | |
| LOW | webserver/plugins/meta/neodb/api.py | 35 | CODE | |
| LOW | webserver/plugins/meta/neodb/plugin.py | 45 | CODE | |
| LOW | webserver/plugins/meta/biquge/api.py | 48 | CODE | |
| LOW | webserver/plugins/meta/tomato/api.py | 84 | CODE | |
| LOW | webserver/plugins/meta/tomato/tomato/tomato.py | 69 | CODE | |
| LOW | webserver/plugins/meta/tomato/tomato/tomato.py | 87 | CODE | |
| LOW | webserver/plugins/meta/tomato/tomato/tomato.py | 107 | CODE | |
| LOW | webserver/plugins/meta/tomato/tomato/tomato.py | 138 | CODE | |
| 118 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | server.py | 8 | CODE | |
| LOW | tools/orzbook-spider.py | 5 | CODE | |
| LOW | tools/mebook-spider.py | 5 | CODE | |
| LOW | tests/test_reading_state.py | 5 | CODE | |
| LOW | tests/test_enrichment_connectors.py | 11 | CODE | |
| LOW | tests/run.py | 12 | CODE | |
| LOW | tests/run.py | 13 | CODE | |
| LOW | tests/run.py | 14 | CODE | |
| LOW | tests/run.py | 15 | CODE | |
| LOW | tests/run.py | 16 | CODE | |
| LOW | tests/run.py | 17 | CODE | |
| LOW | tests/run.py | 18 | CODE | |
| LOW | tests/run.py | 19 | CODE | |
| LOW | tests/run.py | 20 | CODE | |
| LOW | tests/test_texttools.py | 1 | CODE | |
| LOW | tests/test_texttools.py | 11 | CODE | |
| LOW | tests/test_texttools.py | 11 | CODE | |
| LOW | tests/test_texttools.py | 11 | CODE | |
| LOW | tests/test_texttools.py | 15 | CODE | |
| LOW | tests/test_tomato_novel.py | 22 | CODE | |
| LOW | tests/test_captcha.py | 12 | CODE | |
| LOW | …ts/skills/talebook-product/scripts/collect_evidence.py | 4 | CODE | |
| LOW | …ttempt-registration/qa-original-invocation-boundary.py | 8 | CODE | |
| LOW | …ttempt-registration/qa-original-invocation-boundary.py | 12 | CODE | |
| LOW | webserver/main.py | 68 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 7 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 27 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 39 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 39 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 39 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 39 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 39 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 39 | CODE | |
| LOW | webserver/plugins/runtime/__init__.py | 39 | CODE | |
| 77 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …60807-calibre-metadata-plugin-registration.active.html | 60 | <li>测试必须经过真实 <code>calibre.ebooks.metadata.sources.identify.identify()</code> 调度;只替换已注册插件实例的网络方法以提供可控结果。</li> | CODE |
| CRITICAL | …adest/_next/static/chunks/f52c12b5-7e873c2478d07d02.js | 14 | ${s}`:s;return{...r,description:i,inputExamples:a?void 0:r.inputExamples}});return{...n,tools:s}}}}var r1=e=>{let{model: | CODE |
| CRITICAL⚡ | …c/readest/_next/static/chunks/6431.246039c66e1ad3cb.js | 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6431],{73:(e,t,n)=>{"use strict";function r(e){return e.replace | CODE |
| CRITICAL⚡ | app/public/static/epubreader/js/libs/epub.min.js | 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("JSZip")):"function"==typeof d | CODE |
| CRITICAL | app/public/static/js/jquery-1.11.1.min.js | 4 | },cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function | CODE |
| CRITICAL | …/public/static/readium/lib/thirdparty/jquery-1.11.0.js | 8058 | jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/public/static/readium/Gruntfile.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/require_config.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/extend_require_config.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/css/viewer_audio.css | 441 | COMMENT | |
| LOW | app/public/static/readium/grunt/run_grunt.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/copy.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/copy.js | 101 | }, | COMMENT |
| LOW | app/public/static/readium/grunt/copy.js | 121 | // dest: 'build/tests/chrome-app' | COMMENT |
| LOW | app/public/static/readium/grunt/requirejs.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/concurrent.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/nodeunit.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/clean.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/express.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/watch.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/aliases.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/cssmin.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/grunt/versioning.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | …ic/static/readium/lib/ReaderSettingsDialog_Keyboard.js | 221 | // key.setScope("captureKeyboardShortcut"); | COMMENT |
| LOW | …ic/static/readium/lib/ReaderSettingsDialog_Keyboard.js | 241 | // | COMMENT |
| LOW | app/public/static/readium/lib/require.js | 1821 | node; | COMMENT |
| LOW | app/public/static/readium/lib/require.js | 1841 | //if we can NOT find [native code] then it must NOT natively supported. | COMMENT |
| LOW | app/public/static/readium/lib/Keyboard.js | 101 | // } | COMMENT |
| LOW | app/public/static/readium/lib/Keyboard.js | 321 | // //var newE = jQuery.extend(true, {}, e);// deep copy | COMMENT |
| LOW | app/public/static/readium/lib/EpubReader.js | 161 | // var href = $that.attr("href"); | COMMENT |
| LOW | app/public/static/readium/lib/gestures.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | …lic/static/readium/lib/storage/RemoteStorageManager.js | 81 | // if (wireClient.href && wireClient.token){ | COMMENT |
| LOW | …ublic/static/readium/lib/workers/ContentTransformer.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | app/public/static/readium/lib/thirdparty/deflate.js | 581 | // - if compression is not successful for the first block, all input | COMMENT |
| LOW | app/public/static/readium/lib/thirdparty/deflate.js | 1161 | more--; | COMMENT |
| LOW | app/public/static/readium/lib/thirdparty/deflate.js | 1201 | return; | COMMENT |
| LOW | app/public/static/readium/lib/thirdparty/deflate.js | 1221 | } | COMMENT |
| LOW | app/public/static/readium/lib/thirdparty/json2.js | 441 | if (cx.test(text)) { | COMMENT |
| LOW | …/public/static/readium/lib/thirdparty/jquery-1.11.0.js | 1201 | if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { | COMMENT |
| LOW | …/public/static/readium/lib/thirdparty/jquery-1.11.0.js | 9641 | // X-Requested-With header | COMMENT |
| LOW | …ublic/static/readium/lib/thirdparty/backbone-0.9.10.js | 1 | // Backbone.js 0.9.10 | COMMENT |
| LOW | …ublic/static/readium/lib/thirdparty/backbone-0.9.10.js | 101 | return; | COMMENT |
| LOW | …ublic/static/readium/lib/thirdparty/backbone-0.9.10.js | 1281 | this.$el = element instanceof Backbone.$ ? element : Backbone.$(element); | COMMENT |
| LOW | …ublic/static/readium/lib/thirdparty/backbone-0.9.10.js | 1361 | 'update': 'PUT', | COMMENT |
| LOW | app/public/static/readium/i18n/Strings.js | 1 | // Copyright (c) 2014 Readium Foundation and/or its licensees. All rights reserved. | COMMENT |
| LOW | webserver/plugins/meta/neodb/api.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | webserver/plugins/tool/zh_converter/engine.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | …ins/tool/zh_converter/dictionary/TWVariantsPhrases.txt | 1 | # Open Chinese Convert (OpenCC) Dictionary — bundled with zh_converter | COMMENT |
| LOW | …/tool/zh_converter/dictionary/TWVariantsRevPhrases.txt | 1 | # Open Chinese Convert (OpenCC) Dictionary — bundled with zh_converter | COMMENT |
| LOW | …/plugins/tool/zh_converter/dictionary/TSCharacters.txt | 1 | # Open Chinese Convert (OpenCC) Dictionary — bundled with zh_converter | COMMENT |
| LOW | .github/workflows/claude-code-review.yml | 1 | name: Claude Code Review | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …adest/_next/static/chunks/e134eccc-2ba82e2e4bbf2a03.js | 1 | "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1842],{26986:(e,n,t)=>{var r,l=t(42921),a=t(39346) | CODE |
| MEDIUM | …adest/_next/static/chunks/e134eccc-2ba82e2e4bbf2a03.js | 1 | "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1842],{26986:(e,n,t)=>{var r,l=t(42921),a=t(39346) | CODE |
| MEDIUM⚡ | …c/readest/_next/static/chunks/6431.246039c66e1ad3cb.js | 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6431],{73:(e,t,n)=>{"use strict";function r(e){return e.replace | CODE |
| MEDIUM⚡ | …c/readest/_next/static/chunks/6431.246039c66e1ad3cb.js | 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6431],{73:(e,t,n)=>{"use strict";function r(e){return e.replace | CODE |
| MEDIUM | …dest/_next/static/chunks/framework-803b9476910ff7dc.js | 1 | "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6593],{392:(e,t,n)=>{!function e(){if("u">typeof _ | CODE |
| MEDIUM | …dest/_next/static/chunks/framework-803b9476910ff7dc.js | 1 | "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6593],{392:(e,t,n)=>{!function e(){if("u">typeof _ | CODE |
| MEDIUM⚡ | app/public/static/epubreader/js/libs/epub.min.js | 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("JSZip")):"function"==typeof d | CODE |
| MEDIUM⚡ | app/public/static/epubreader/js/libs/epub.min.js | 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("JSZip")):"function"==typeof d | CODE |
| MEDIUM | …/public/static/readium/lib/thirdparty/jquery-1.11.0.js | 10292 | // understands anonymous AMD modules. A named AMD is safest and most robust | COMMENT |
| MEDIUM | app/playwright-report/index.html | 58 | `).replace(eA,"")}function Wd(t,e){return e=Fd(e),Fd(t)===e}function Dt(t,e,n,a,i,s){switch(n){case"children":typeof a== | CODE |
| LOW | webserver/models.py | 30 | # for python3, just use: crypt.mksalt(crypt.METHOD_SHA512) | COMMENT |
| LOW | webserver/plugins/meta/xhsd/api.py | 276 | # but for now let's just return what we get unless it's strictly required by Calibre to be JPG. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/test/mock-server.js | 1051 | email: 'admin@example.com', | CODE |
| LOW | app/test/e2e/admin-users-demo-mode.spec.ts | 16 | const adminRow = page.locator('tbody tr', { hasText: 'admin@example.com' }); | CODE |
| LOW | app/test/e2e/install.spec.ts | 95 | await page.getByLabel('管理员Email').fill('admin@example.com'); | CODE |
| LOW | app/test/e2e/install.spec.ts | 125 | await page.getByLabel('管理员Email').fill('admin@example.com'); | CODE |
| LOW | app/test/e2e/admin.spec.ts | 30 | await expect(page.locator('tbody tr').first()).toContainText('admin@example.com'); | CODE |
| LOW | …adest/_next/static/chunks/9332fda6-60742933ff93e2e9.js | 6 | ${n?"Return the final answer as JSON that satisfies the requested schema.":"Please provide a clear, helpful response tha | CODE |
| LOW⚡ | …c/readest/_next/static/chunks/6431.246039c66e1ad3cb.js | 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6431],{73:(e,t,n)=>{"use strict";function r(e){return e.replace | CODE |
| LOW | …ic/static/readium/lib/ReaderSettingsDialog_Keyboard.js | 62 | var thatOriginal = $that.attr("placeholder"); | CODE |
| LOW | …ic/static/readium/lib/ReaderSettingsDialog_Keyboard.js | 73 | var selfOriginal = $self.attr("placeholder"); | CODE |
| LOW | …ic/static/readium/lib/ReaderSettingsDialog_Keyboard.js | 265 | //$input.val($input.attr("placeholder")); | COMMENT |
| LOW | …ic/static/readium/lib/ReaderSettingsDialog_Keyboard.js | 279 | //$input.val($input.attr("placeholder")); | COMMENT |
| LOW | …ic/static/readium/lib/ReaderSettingsDialog_Keyboard.js | 299 | var original = $that.attr("placeholder"); | CODE |
| LOW | …p/public/static/readium/templates/settings-dialog.html | 24 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus neque dui, congue a suscipit no | CODE |
| LOW | …p/public/static/readium/templates/settings-dialog.html | 24 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus neque dui, congue a suscipit no | CODE |
| LOW | app/i18n/locales/zh-CN.json | 700 | "placeholder": { | CODE |
| LOW | app/i18n/locales/zh-CN.json | 820 | "placeholder": { | CODE |
| LOW | app/i18n/locales/zh-CN.json | 1142 | "placeholder": { | CODE |
| LOW | app/i18n/locales/ru-RU.json | 797 | "placeholder": { | CODE |
| LOW | app/i18n/locales/ru-RU.json | 1116 | "placeholder": { | CODE |
| LOW | app/i18n/locales/ru-RU.json | 1158 | "placeholder": { | CODE |
| LOW | app/i18n/locales/en-US.json | 800 | "placeholder": { | CODE |
| LOW | app/i18n/locales/en-US.json | 1122 | "placeholder": { | CODE |
| LOW | app/i18n/locales/en-US.json | 1164 | "placeholder": { | CODE |
| LOW⚡ | tests/test_application_upgrade.py | 93 | "https://user:pw@example.org", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_webdav.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/cases/update_users_db.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | webserver/migrate_db.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | webserver/plugins/register.py | 102 | __all__ = [ | CODE |
| LOW | webserver/plugins/runtime/__init__.py | 54 | __all__ = [ | CODE |
| LOW | webserver/plugins/combo/weread/__init__.py | 5 | __all__ = [ | CODE |
| LOW | webserver/plugins/tool/txt_fixer/__init__.py | 3 | __all__ = ["PROVIDER", "TxtFixerTransformPlugin"] | CODE |
| LOW | webserver/plugins/tool/zh_converter/__init__.py | 3 | __all__ = ["PROVIDER", "ZhConverterTransformPlugin"] | CODE |
| LOW | …bserver/plugins/tool/epub_beautify/chapter_patterns.py | 17 | __all__ = [ | CODE |
| LOW | webserver/plugins/tool/text_replace/__init__.py | 3 | __all__ = ["PROVIDER", "TextReplaceTransformPlugin"] | CODE |
| LOW | webserver/services/booksource/__init__.py | 12 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | webserver/plugins/meta/xhsd/api.py | 82 | # Only support ISBN query as requested | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/public/static/readium/lib/thirdparty/zip-ext.js | 47 | function getData(callback, onerror) { | CODE |
| LOW | app/public/static/readium/lib/thirdparty/zip-ext.js | 166 | function getData(callback) { | CODE |
| LOW | app/public/static/readium/lib/thirdparty/zip-ext.js | 199 | function getData(callback) { | CODE |
| LOW | app/public/static/readium/lib/thirdparty/zip-fs.js | 51 | function getData(callback) { | CODE |
| LOW | app/public/static/readium/lib/thirdparty/zip.js | 211 | function getData(callback, onerror) { | CODE |
| LOW | app/public/static/readium/lib/thirdparty/zip.js | 249 | function getData(callback) { | CODE |
| LOW | app/public/static/readium/lib/thirdparty/zip.js | 277 | function getData(callback) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | webserver/plugins/source/base.py | 198 | CODE | |
| LOW | webserver/plugins/runtime/domains.py | 99 | CODE | |
| LOW | webserver/plugins/runtime/safe_http.py | 171 | CODE | |
| LOW | webserver/plugins/tool/epub_beautify/beautify_lib.py | 1862 | CODE | |
| LOW | webserver/plugins/tool/epub_beautify/styles/__init__.py | 263 | CODE | |
| LOW | webserver/services/plugin_runtime.py | 792 | CODE | |
| LOW | webserver/services/plugin_secrets.py | 86 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | webserver/plugins/meta/baike/api.py | 81 | # Check if the title is start with *[0-9][_-] then remote the prefix | COMMENT |
| LOW | webserver/plugins/meta/xhsd/api.py | 83 | # Check if title looks like an ISBN | COMMENT |
| LOW | scripts/check_i18n_translation_useless.py | 102 | # Check if used in code (exact match) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …c/readest/_next/static/chunks/9756.491f2be37dd591b1.js | 3 | VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[t.ts,t.event,t.bookHash,t.sessionId,t.turnId,t.messageId,t.appVersion,t. | CODE |