AI Slop Code RIsk Monitor

EstrellaXD/Auto_Bangumi

AutoBangumi - 全自动追番工具

27.6 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for EstrellaXD/Auto_Bangumi, a Python project with 8,284 GitHub stars. SynthScan examined 134,611 lines of code across 741 source files, recording 2416 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 27.6 (Elevated 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.

27.6
Adjusted Signal
27.6
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
8.3K
Stars
Python
Language
134.6K
Lines of Code
741
Files
2.4K
Pattern Hits
2026-10-12
Scan Date
0.04
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 39.0/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 1473 finding(s).

Hallucinated Dependency & Supply Chain Risk 10.4/100 · LOW

Are imports declared and package/API names verified? 241 finding(s).

Agent Over-Engineering Ratio 71.0/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 2109 finding(s).

PR Review Velocity Impact 73.1/100 · HIGH

Which changes need focused human review? 2416 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 2HIGH 27MEDIUM 484LOW 1903

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 2416 distinct pattern matches across 18 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.

Decorative Section Separators476 hits · 1791 pts
SeverityFileLineSnippetContext
MEDIUMbackend/src/test/test_searcher.py13# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_searcher.py15# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_searcher.py110# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_searcher.py112# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_searcher.py187# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_searcher.py189# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py15# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py17# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_api_bangumi.py58# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_api_bangumi.py60# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py83# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py85# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py112# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py114# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py156# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py158# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py202# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_bangumi.py204# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_mcp_resources.py88# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_mcp_resources.py90# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_mcp_resources.py155# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_mcp_resources.py157# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_mcp_resources.py313# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_mcp_resources.py315# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_mcp_resources.py369# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_mcp_resources.py371# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_mcp_resources.py17# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_mcp_resources.py19# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_mcp_resources.py60# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_mcp_resources.py62# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_loops.py29# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_loops.py31# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_loops.py75# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_loops.py77# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_loops.py142# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_loops.py144# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_loops.py253# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_loops.py255# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_health.py11# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_health.py13# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_api_health.py30# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/test_api_health.py32# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/conftest.py23# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡backend/src/test/conftest.py25# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py43# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py45# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py101# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py103# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py120# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py122# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py157# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py159# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py195# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py197# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py226# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py228# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py265# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/conftest.py267# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_events.py15# ---------------------------------------------------------------------------COMMENT
MEDIUMbackend/src/test/test_api_events.py17# ---------------------------------------------------------------------------COMMENT
416 more matches not shown…
Hyper-Verbose Identifiers1405 hits · 1242 pts
SeverityFileLineSnippetContext
LOWbackend/src/test/test_e2e_workflow_contract.py37def test_pr_workflow_runs_for_every_pull_request() -> None:CODE
LOWbackend/src/test/test_e2e_workflow_contract.py49def test_pr_workflow_expands_to_four_stable_fifteen_minute_checks() -> None:CODE
LOWbackend/src/test/test_e2e_workflow_contract.py66def test_pr_jobs_use_unique_stack_and_work_directory_names() -> None:CODE
LOWbackend/src/test/test_e2e_workflow_contract.py85def test_pr_commands_match_the_repository_entry_points() -> None:CODE
LOWbackend/src/test/test_e2e_workflow_contract.py110def test_pr_dependencies_and_generated_outputs_are_cached() -> None:CODE
LOWbackend/src/test/test_e2e_workflow_contract.py138def test_pr_browser_runs_have_zero_retries_and_fourteen_day_artifacts() -> None:CODE
LOWbackend/src/test/test_e2e_workflow_contract.py160def test_nightly_is_non_pr_non_blocking_and_repeats_fresh_stacks() -> None:CODE
LOWbackend/src/test/test_e2e_workflow_contract.py196def test_readme_documents_local_operation_and_maintenance() -> None:CODE
LOW⚡backend/src/test/test_searcher.py51 def test_unsupported_site_raises(self):CODE
LOW⚡backend/src/test/test_searcher.py56 def test_keyword_sanitization(self):CODE
LOW⚡backend/src/test/test_searcher.py63 def test_multiple_keywords_joined(self):CODE
LOWbackend/src/test/test_searcher.py82 def test_uses_providers_declared_parser(self):CODE
LOWbackend/src/test/test_searcher.py94 def test_mikan_site_uses_declared_parser_not_hardcoded(self):CODE
LOWbackend/src/test/test_searcher.py168 def test_supports_movie_without_season_fields(self):CODE
LOWbackend/src/test/test_searcher.py202 def test_reset_cache_clears_poster_cache(self):CODE
LOWbackend/src/test/test_searcher.py214 async def test_poster_cache_evicts_oldest_when_full(self, monkeypatch):CODE
LOWbackend/src/test/test_searcher.py236 async def test_search_result_uses_configured_tmdb_language(self, monkeypatch):CODE
LOWbackend/src/test/test_e2e_stack_contract.py34def test_compose_files_are_isolated_and_use_random_loopback_ports():CODE
LOWbackend/src/test/test_e2e_stack_contract.py59def test_support_service_images_are_pinned_and_dependency_free():CODE
LOWbackend/src/test/test_e2e_stack_contract.py72def test_qbittorrent_fixture_has_fixed_credentials_and_disables_peer_discovery():CODE
LOWbackend/src/test/test_e2e_stack_contract.py89def test_build_context_stages_dist_and_version_without_touching_source(tmp_path):CODE
LOWbackend/src/test/test_e2e_stack_contract.py128def test_build_inputs_ignore_tracked_files_deleted_in_the_worktree(CODE
LOWbackend/src/test/test_e2e_stack_contract.py145def test_build_command_uses_only_the_temporary_context(tmp_path):CODE
LOWbackend/src/test/test_e2e_stack_contract.py160def test_stack_builds_unique_compose_commands_and_environment(tmp_path):CODE
LOWbackend/src/test/test_e2e_stack_contract.py211def test_stack_parses_dynamic_compose_ports(output, expected):CODE
LOWbackend/src/test/test_e2e_stack_contract.py216def test_qb_runtime_contract_checks_credentials_and_deterministic_preferences():CODE
LOWbackend/src/test/test_e2e_stack_contract.py280def test_run_with_stack_always_stops_after_command_failure():CODE
LOWbackend/src/test/test_e2e_stack_contract.py307def test_run_with_stack_stops_after_start_failure():CODE
LOWbackend/src/test/test_e2e_stack_contract.py329def test_partial_compose_start_collects_before_teardown(tmp_path, monkeypatch):CODE
LOWbackend/src/test/test_e2e_stack_contract.py360def test_run_with_stack_handles_sigterm_and_restores_handlers(monkeypatch):CODE
LOWbackend/src/test/test_e2e_stack_contract.py410def test_artifact_redaction_removes_credentials_and_tokens():CODE
LOWbackend/src/test/test_e2e_stack_contract.py429def test_static_audit_reports_fixed_ports_floating_images_and_blind_waits(tmp_path):CODE
LOW⚡backend/src/test/test_api_bangumi.py65 def test_get_all_unauthorized(self, unauthed_client):CODE
LOW⚡backend/src/test/test_api_bangumi.py71 def test_get_by_id_unauthorized(self, unauthed_client):CODE
LOWbackend/src/test/test_tokenizer_resolver.py39def test_span_is_half_open_and_validated() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py50def test_resolution_is_independent_of_input_order() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py83def test_movie_rejects_ambiguous_number_as_title_without_masking_it() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py113def test_overlapping_shadowed_field_reports_conflict_without_extra_mask() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py139def test_partially_overlapping_same_field_does_not_mask_loser_only_text() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py156def test_different_fields_on_overlapping_exclusive_spans_are_rejected() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py179def test_shared_overlay_allows_explicit_transparent_overlap() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py204def test_shadowed_candidate_can_keep_its_span_in_title() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py227def test_shadowed_candidate_excludes_marker_but_keeps_dependent_span() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py250def test_repeatable_claims_are_case_insensitively_deduplicated() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py273def test_duplicate_candidate_ids_are_rejected() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py285def test_equal_priority_conflicting_claims_emit_stable_warning() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py302def test_specificity_resolves_same_priority_without_ambiguity_warning() -> None:CODE
LOWbackend/src/test/test_tokenizer_resolver.py321def test_fully_shadowed_low_priority_tie_does_not_warn() -> None:CODE
LOW⚡backend/src/test/test_mcp_resources.py74 async def test_resource_uris_present(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py80 async def test_resource_templates_is_list(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py83 async def test_anime_id_template_present(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py144 async def test_official_title_value(self, sample):CODE
LOW⚡backend/src/test/test_mcp_resources.py150 async def test_none_optional_poster(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py321 async def test_valid_id_returns_bangumi_dict(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py331 async def test_not_found_id_returns_error(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py341 async def test_non_numeric_id_returns_error(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py348 async def test_negative_id_is_passed_to_manager(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py358 async def test_result_has_required_fields(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py377 async def test_unknown_uri_returns_json_error(self):CODE
LOW⚡backend/src/test/test_mcp_resources.py382 async def test_unknown_uri_mentions_uri_in_error(self):CODE
1345 more matches not shown…
Unused Imports225 hits · 212 pts
SeverityFileLineSnippetContext
LOWbackend/scripts/benchmark_tokenizer.py9CODE
LOWbackend/src/test/test_e2e_workflow_contract.py3CODE
LOWbackend/src/test/test_searcher.py10CODE
LOWbackend/src/test/test_searcher.py118CODE
LOWbackend/src/test/test_e2e_stack_contract.py3CODE
LOWbackend/src/test/test_tokenizer_resolver.py1CODE
LOWbackend/src/test/test_release_parser.py8CODE
LOWbackend/src/test/test_api_passkey.py3CODE
LOWbackend/src/test/test_api_passkey.py12CODE
LOWbackend/src/test/test_release_parser_golden.py8CODE
LOWbackend/src/test/test_release_parser_properties.py8CODE
LOWbackend/src/test/test_tokenizer_benchmark.py8CODE
LOWbackend/src/test/test_e2e_fixture_generation.py3CODE
LOWbackend/src/test/__init__.py1CODE
LOWbackend/src/test/test_migration.py8CODE
LOWbackend/src/test/test_migration.py10CODE
LOWbackend/src/test/test_tokenizer_trace.py1CODE
LOWbackend/src/test/test_config.py5CODE
LOWbackend/src/test/test_config.py12CODE
LOWbackend/src/test/test_config.py12CODE
LOWbackend/src/test/test_config.py709CODE
LOWbackend/src/test/test_config.py719CODE
LOWbackend/src/test/test_mcp_security.py5CODE
LOWbackend/src/test/test_path_parser.py3CODE
LOWbackend/src/test/test_movie_parser.py1CODE
LOWbackend/src/test/test_download_client.py3CODE
LOWbackend/src/test/test_download_client.py13CODE
LOWbackend/src/test/test_download_client.py13CODE
LOWbackend/src/test/test_download_client.py14CODE
LOWbackend/src/test/test_api_search.py3CODE
LOWbackend/src/test/test_api_search.py3CODE
LOWbackend/src/test/test_api_rss.py11CODE
LOWbackend/src/test/test_api_rss.py11CODE
LOWbackend/src/test/test_api_rss.py11CODE
LOWbackend/src/test/test_api_rss.py11CODE
LOWbackend/src/test/test_rss_analyser_typed_identity.py1CODE
LOWbackend/src/test/e2e/runtime/conftest.py3CODE
LOW…rc/test/e2e/runtime/test_packaged_image_persistence.py3CODE
LOWbackend/src/test/e2e/downloader/conftest.py3CODE
LOW…nd/src/test/e2e/downloader/test_release_image_smoke.py3CODE
LOW…kend/src/test/e2e/downloader/test_qb_image_contract.py3CODE
LOWbackend/src/test/e2e/support/worker.py8CODE
LOWbackend/src/test/e2e/support/__init__.py3CODE
LOWbackend/src/test/e2e/support/__init__.py3CODE
LOWbackend/src/test/e2e/support/__init__.py3CODE
LOWbackend/src/test/e2e/support/__init__.py3CODE
LOWbackend/src/test/e2e/support/__init__.py3CODE
LOWbackend/src/test/e2e/support/__init__.py3CODE
LOWbackend/src/test/e2e/support/__init__.py3CODE
LOWbackend/src/test/e2e/support/runtime.py10CODE
LOWbackend/src/module/searcher/provider.py6CODE
LOWbackend/src/module/searcher/__init__.py1CODE
LOWbackend/src/module/searcher/__init__.py2CODE
LOWbackend/src/module/database/combine.py15CODE
LOWbackend/src/module/database/combine.py15CODE
LOWbackend/src/module/database/combine.py15CODE
LOWbackend/src/module/database/bangumi.py13CODE
LOWbackend/src/module/core/__init__.py1CODE
LOWbackend/src/module/core/__init__.py2CODE
LOWbackend/src/module/core/__init__.py3CODE
165 more matches not shown…
Excessive Try-Catch Wrapping105 hits · 110 pts
SeverityFileLineSnippetContext
LOWplugins/codex-chatgpt/ab_llm_codex/adapter.py52 except Exception:CODE
LOWbackend/src/boot_overlay.py51 except Exception:CODE
LOWbackend/src/boot_overlay.py110 except Exception:CODE
LOWbackend/src/boot_overlay.py260 except Exception as exc:CODE
LOWbackend/src/boot_overlay.py300 except Exception as exc: # noqa: BLE001 - 验签失败必须拒绝CODE
LOWbackend/src/boot_overlay.py313 except Exception: # noqa: BLE001CODE
LOWbackend/src/boot_overlay.py394 except Exception as exc:CODE
LOWbackend/src/boot_overlay.py405 except Exception as exc:CODE
LOWbackend/src/boot_overlay.py415 except Exception as exc:CODE
LOWbackend/src/boot_overlay.py429 except Exception as exc:CODE
LOWbackend/src/boot_overlay.py434 except Exception as exc:CODE
LOWbackend/src/boot_overlay.py446 except Exception as exc: # 绝不阻断启动CODE
MEDIUMbackend/src/boot_overlay.py443def main() -> int:CODE
LOWbackend/src/test/e2e/support/runtime.py73 except Exception as exc: # readiness probes intentionally tolerate racesCODE
LOWbackend/src/test/e2e/support/runtime.py275 except Exception:CODE
LOWbackend/src/module/searcher/searcher.py65 except Exception as e:CODE
LOWbackend/src/module/database/user.py171 except Exception as e:CODE
LOWbackend/src/module/database/rss.py138 except Exception as e:CODE
LOWbackend/src/module/database/rss.py152 except Exception as e:CODE
MEDIUMbackend/src/module/database/rss.py143def delete_all(self):CODE
LOWbackend/src/module/database/combine.py123 except Exception:CODE
LOWbackend/src/module/database/migrations.py849 except Exception as e:CODE
LOWbackend/src/module/core/loops.py33 except Exception:CODE
LOWbackend/src/module/core/context.py276 except Exception:CODE
LOWbackend/src/module/core/context.py340 except Exception as e:CODE
LOWbackend/src/module/core/context.py372 except Exception as e:CODE
LOWbackend/src/module/core/context.py378 except Exception as e:CODE
LOWbackend/src/module/core/offset_scanner.py41 except Exception as e:CODE
LOWbackend/src/module/core/scheduler.py71 except Exception as e:CODE
LOWbackend/src/module/update/signing.py49 except Exception as exc: # noqa: BLE001 - 验签失败必须拒绝,不得放行CODE
LOWbackend/src/module/update/updater.py311 except Exception as exc: # 网络错误优雅降级CODE
LOWbackend/src/module/update/updater.py599 except Exception as exc: # noqa: BLE001 - 任何失败都要优雅返回CODE
LOWbackend/src/module/update/updater.py737 except Exception as exc: # noqa: BLE001CODE
LOWbackend/src/module/update/cross_version.py71 except Exception as e:CODE
LOWbackend/src/module/security/auth_strategy.py65 except Exception:CODE
LOWbackend/src/module/security/webauthn.py190 except Exception as e:CODE
LOWbackend/src/module/security/webauthn.py286 except Exception as e:CODE
LOWbackend/src/module/security/webauthn.py315 except Exception as e:CODE
LOWbackend/src/module/security/webauthn.py339 except Exception as e:CODE
LOWbackend/src/module/security/webauthn.py354 except Exception:CODE
LOWbackend/src/module/security/api.py198 except Exception as e:CODE
LOWbackend/src/module/checker/checker.py86 except Exception as e:CODE
LOWbackend/src/module/notification/manager.py50 except Exception as e:CODE
LOWbackend/src/module/notification/manager.py85 except Exception as e:CODE
LOWbackend/src/module/notification/manager.py129 except Exception:CODE
LOWbackend/src/module/notification/manager.py162 except Exception as e:CODE
LOWbackend/src/module/notification/manager.py185 except Exception as e:CODE
LOWbackend/src/module/notification/providers/webhook.py99 except Exception as e:CODE
LOWbackend/src/module/notification/providers/telegram.py73 except Exception as e:CODE
LOWbackend/src/module/notification/providers/pushover.py68 except Exception:CODE
LOWbackend/src/module/notification/providers/pushover.py71 except Exception as e:CODE
LOWbackend/src/module/notification/providers/discord.py68 except Exception as e:CODE
LOWbackend/src/module/notification/providers/gotify.py63 except Exception as e:CODE
LOWbackend/src/module/notification/providers/bark.py56 except Exception as e:CODE
LOW…ckend/src/module/notification/providers/server_chan.py57 except Exception as e:CODE
LOWbackend/src/module/notification/providers/wecom.py57 except Exception as e:CODE
LOWbackend/src/module/network/request_url.py181 except Exception as e:CODE
LOWbackend/src/module/network/request_url.py216 except Exception as e:CODE
LOWbackend/src/module/network/site/mikan.py19 except Exception as e:CODE
LOWbackend/src/module/rss/engine.py161 except Exception as e:CODE
45 more matches not shown…
Modern Structural Boilerplate104 hits · 104 pts
SeverityFileLineSnippetContext
LOWbackend/src/main.py20logger = logging.getLogger(__name__)CODE
LOWbackend/src/test/e2e/support/__init__.py13__all__ = [CODE
LOWbackend/src/module/searcher/searcher.py14logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/user.py13logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/rss.py8logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/aria2.py16logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/aria2.py108 async def set_category(self, gid: str, category: str) -> None:CODE
LOWbackend/src/module/database/aria2.py160 async def set_renamed_path(self, gid: str, old_path: str, new_path: str) -> None:CODE
LOWbackend/src/module/database/aria2.py177 async def set_rename_intent(self, gid: str, intent: Aria2RenameIntent) -> None:CODE
LOWbackend/src/module/database/combine.py28logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/bangumi.py15logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/bangumi.py60def _set_aliases_list(bangumi: Bangumi, aliases: list[str]) -> None:CODE
LOWbackend/src/module/database/torrent.py10logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/passkey.py16logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/llm_credential.py13logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/inbox.py12logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/migrations.py27logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/database/migrations.py810def set_schema_version(conn: Connection, version: int) -> None:CODE
LOWbackend/src/module/database/movie.py11logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/core/__init__.py5__all__ = ["AppContext", "OffsetScanner", "PeriodicTask", "Scheduler"]CODE
LOWbackend/src/module/core/loops.py20logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/core/loops.py86async def update_check_tick(notifier: NotificationManager) -> None:CODE
LOWbackend/src/module/core/context.py44logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/core/offset_scanner.py14logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/core/scheduler.py11logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/update/signing.py16logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/update/auth.py10logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/update/startup.py6logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/update/updater.py41logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/update/updater.py204 def _set_progress(self, **kwargs) -> None:CODE
LOWbackend/src/module/update/version_check.py7logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/update/cross_version.py11logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/security/ip_allowlist.py12logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/security/webauthn.py37logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/security/api.py20logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/checker/checker.py8logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/notification/__init__.py17__all__ = [CODE
LOWbackend/src/module/notification/inbox.py15logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/notification/manager.py17logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/notification/providers/webhook.py14logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/notification/providers/telegram.py13logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/notification/providers/pushover.py12logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/notification/providers/discord.py12logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/notification/providers/__init__.py30__all__ = [CODE
LOWbackend/src/module/notification/providers/gotify.py12logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/notification/providers/bark.py12logger = logging.getLogger(__name__)CODE
LOW…ckend/src/module/notification/providers/server_chan.py13logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/notification/providers/wecom.py12logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/network/request_contents.py11logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/network/request_url.py11logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/network/site/mikan.py3logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/rss/engine.py34logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/rss/analyser.py12logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/downloader/download_client.py13logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/downloader/__init__.py11__all__ = [CODE
LOWbackend/src/module/downloader/path.py10logger = logging.getLogger(__name__)CODE
LOWbackend/src/module/downloader/base.py134 async def set_category(self, _hash, category) -> None: ...CODE
LOW…ckend/src/module/downloader/client/aria2_downloader.py19logger = logging.getLogger(__name__)CODE
LOW…ckend/src/module/downloader/client/aria2_downloader.py850 async def set_category(self, _hash, category) -> None:CODE
LOWbackend/src/module/downloader/client/mock_downloader.py18logger = logging.getLogger(__name__)CODE
44 more matches not shown…
Empty Error Handlers13 hits · 65 pts
SeverityFileLineSnippetContext
HIGHbackend/src/test/test_auth_persistence.py365except asyncio.TimeoutError:CODE
HIGHbackend/src/module/core/context.py338except asyncio.CancelledError:CODE
HIGHbackend/src/module/core/scheduler.py77except asyncio.CancelledError:CODE
HIGHbackend/src/module/core/scheduler.py96except asyncio.CancelledError:CODE
HIGHbackend/src/module/update/updater.py494except FileNotFoundError:CODE
HIGHbackend/src/module/update/updater.py614except (OSError, ValueError):CODE
HIGHbackend/src/module/notification/providers/pushover.py68except Exception:CODE
HIGHbackend/src/module/rss/analyser.py52except (ValueError, TypeError):CODE
HIGH…ckend/src/module/downloader/client/aria2_downloader.py168except ValueError:CODE
HIGHbackend/src/module/manager/renamer.py498except ValueError:CODE
HIGHe2e/mock-upstream/server.py609except KeyboardInterrupt:CODE
HIGHe2e/port-proxy/server.py119except KeyboardInterrupt:CODE
HIGHe2e/fake-qb/server.py434except KeyboardInterrupt:CODE
Cross-Language Confusion8 hits · 55 pts
SeverityFileLineSnippetContext
HIGH⚡backend/src/test/test_issue_bugs.py374 # Simulates the corrupted state: [null] stored in DBCOMMENT
HIGH⚡backend/src/test/test_issue_bugs.py447 # Insert corrupted bangumi (title_raw=None, aliases=[null])COMMENT
HIGH⚡backend/src/test/test_issue_bugs.py375 bangumi.title_aliases = "[null]"CODE
HIGH⚡backend/src/test/test_issue_bugs.py379 bangumi.title_aliases = '[null, "valid_alias", null, "another"]'CODE
HIGH⚡backend/src/test/test_issue_bugs.py450 bangumi.title_aliases = "[null]"CODE
HIGHbackend/src/test/test_issue_bugs.py427 bangumi.title_aliases = "[null]"CODE
HIGHbackend/src/module/parser/analyser/providers/schema.py70 "title_en (string or null), title_zh (string or null), "STRING
HIGHbackend/src/module/parser/analyser/providers/schema.py71 "title_jp (string or null), season (integer), season_raw (string), "STRING
Deep Nesting49 hits · 49 pts
SeverityFileLineSnippetContext
LOWplugins/codex-chatgpt/ab_llm_codex/adapter.py184CODE
LOWbackend/src/boot_overlay.py330CODE
LOWbackend/src/test/test_release_parser_properties.py107CODE
LOWbackend/src/test/test_download_session_reuse.py201CODE
LOWbackend/src/module/searcher/searcher.py78CODE
LOWbackend/src/module/database/migrations.py819CODE
LOWbackend/src/module/update/updater.py252CODE
LOWbackend/src/module/update/updater.py605CODE
LOWbackend/src/module/update/version_check.py10CODE
LOWbackend/src/module/update/cross_version.py54CODE
LOWbackend/src/module/notification/providers/pushover.py49CODE
LOWbackend/src/module/network/request_contents.py15CODE
LOWbackend/src/module/network/request_url.py53CODE
LOWbackend/src/module/rss/engine.py285CODE
LOWbackend/src/module/rss/analyser.py16CODE
LOWbackend/src/module/rss/analyser.py58CODE
LOWbackend/src/module/rss/analyser.py108CODE
LOW…ckend/src/module/downloader/client/aria2_downloader.py372CODE
LOW…ckend/src/module/downloader/client/aria2_downloader.py708CODE
LOWbackend/src/module/downloader/client/qb_downloader.py23CODE
LOWbackend/src/module/downloader/client/qb_downloader.py148CODE
LOWbackend/src/module/downloader/client/qb_downloader.py416CODE
LOWbackend/src/module/mcp/tools.py216CODE
LOWbackend/src/module/mcp/resources.py56CODE
LOWbackend/src/module/parser/title_parser.py392CODE
LOWbackend/src/module/parser/analyser/torrent_parser.py142CODE
LOWbackend/src/module/parser/analyser/tmdb_parser.py178CODE
LOWbackend/src/module/parser/analyser/tmdb_parser.py275CODE
LOWbackend/src/module/parser/analyser/tokenizer/parser.py490CODE
LOWbackend/src/module/parser/analyser/tokenizer/parser.py707CODE
LOWbackend/src/module/parser/analyser/tokenizer/parser.py1059CODE
LOWbackend/src/module/parser/analyser/tokenizer/parser.py1630CODE
LOWbackend/src/module/parser/analyser/tokenizer/classic.py258CODE
LOWbackend/src/module/manager/renamer.py114CODE
LOWbackend/src/module/manager/renamer.py356CODE
LOWbackend/src/module/manager/renamer.py444CODE
LOWbackend/src/module/manager/renamer.py749CODE
LOWbackend/src/module/manager/renamer.py1326CODE
LOWbackend/src/module/manager/renamer.py1534CODE
LOWbackend/src/module/manager/renamer.py1734CODE
LOWbackend/src/module/api/config.py27CODE
LOWbackend/src/module/api/config.py123CODE
LOWbackend/src/module/api/log.py17CODE
LOWbackend/src/module/api/events.py90CODE
LOWbackend/src/module/conf/config.py20CODE
LOWbackend/src/module/conf/config.py161CODE
LOWe2e/port-proxy/server.py62CODE
LOWe2e/scripts/audit_sources.py34CODE
LOWe2e/scripts/stack.py335CODE
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICALbackend/src/test/test_update.py1085 app.state.ctx.notifier.send_event.assert_awaited_once()CODE
CRITICALbackend/src/module/parser/analyser/providers/builtin.py55 resp = await self._openai_client.beta.chat.completions.parse(CODE
Docstring Block Structure3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHbackend/src/module/security/webauthn.py144 验证注册响应并创建 Passkey 对象 Args: username: 用户名 credential: 来自前端的 credential 响应 STRING
HIGHbackend/src/module/security/webauthn.py253 验证认证响应 Args: username: 用户名 credential: 来自前端的 credential 响应 passkeySTRING
HIGHbackend/src/module/security/webauthn.py293 验证可发现凭证的认证响应(无需用户名) Args: credential: 来自前端的 credential 响应 passkey: 通过 credentiSTRING
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHbackend/src/test/test_api_bangumi.py0a stand-in database whose repos can be configured with asyncmocks.STRING
HIGHbackend/src/test/test_api_rss.py0a stand-in database whose repos can be configured with asyncmocks.STRING
HIGHbackend/src/test/test_api_bangumi_torrents.py0a stand-in database whose repos can be configured with asyncmocks.STRING
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMbackend/scripts/pip-lock-version.sh14# Create a temporary requirements file using pip freezeCOMMENT
MEDIUMbackend/src/test/test_database.py414 # Create a semantically similar bangumi (same anime, group changed naming)COMMENT
MEDIUMbackend/src/test/test_rss_engine_new.py280 # Create a mock clientCOMMENT
Over-Commented Block7 hits · 7 pts
SeverityFileLineSnippetContext
LOWbackend/scripts/pip-lock-version.sh1#!/usr/bin/env bashCOMMENT
LOWbackend/src/module/network/request_url.py281 self._client = await get_shared_client()COMMENT
LOWbackend/src/module/downloader/download_client.py41 )COMMENT
LOWbackend/src/module/downloader/client/qb_downloader.py461 return AddResult.ADDEDCOMMENT
LOWbackend/src/module/manager/renamer.py121 # Season comes from the folder name which already includes the offsetCOMMENT
LOWscripts/dev.sh1#!/usr/bin/env bashCOMMENT
LOW.github/PULL_REQUEST_TEMPLATE/pull_request_template.md1## NewCOMMENT
Fake / Example Data6 hits · 7 pts
SeverityFileLineSnippetContext
LOW⚡backend/src/test/test_database_llm_credential.py13 account_label="user@example.com",CODE
LOW⚡backend/src/test/test_database_llm_credential.py21 assert loaded.account_label == "user@example.com"CODE
LOWwebui/src/components/basic/ab-select.vue59 :placeholder="placeholder"CODE
LOWwebui/src/components/basic/ab-input.vue77 :placeholder="placeholder"CODE
LOWwebui/src/i18n/zh-CN.json670 "placeholder": "输入关键字搜索",CODE
LOWwebui/src/i18n/en.json670 "placeholder": "Type to search",CODE
Redundant / Tautological Comments3 hits · 5 pts
SeverityFileLineSnippetContext
LOW⚡backend/src/test/test_migration.py476 # Set version to current - second run should skipCOMMENT
LOWbackend/src/module/parser/analyser/offset_detector.py59 # Check if this season has virtual season breakpoints (detected from air date gaps)COMMENT
LOWbackend/src/module/api/setup.py240 # Check if host is reachable and is qBittorrentCOMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMbackend/src/test/test_mcp_tools.py303CODE
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWbackend/src/module/update/updater.py168CODE
LOWbackend/src/module/parser/analyser/tokenizer/parser.py207CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWbackend/scripts/pip-lock-version.sh4# Usage:COMMENT