AI Slop Code RIsk Monitor

ScottSloan/Bili23-Downloader

开源、免费、跨平台的 B 站视频下载工具,支持多线程加速、音视频分离、弹幕元数据获取、自定义命名与分类等功能。Open Source, Free, Cross-Platform Bilibili Video Downloader.

13.8 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for ScottSloan/Bili23-Downloader, a Python project with 8,292 GitHub stars. SynthScan examined 86,018 lines of code across 296 source files, recording 834 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 13.8 (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.

13.8
Adjusted Signal
13.8
Raw Pattern Score
100%
Time Factor
2026-10-02
Last Push
8.3K
Stars
Python
Language
86.0K
Lines of Code
296
Files
834
Pattern Hits
2026-10-12
Scan Date
0.16
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 28.4/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 10.1/100 · LOW

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

Agent Over-Engineering Ratio 42.2/100 · MEDIUM

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

PR Review Velocity Impact 49.3/100 · MEDIUM

Which changes need focused human review? 834 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

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.

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 7HIGH 40MEDIUM 36LOW 751

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 834 distinct pattern matches across 13 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.

Hyper-Verbose Identifiers453 hits · 512 pts
SeverityFileLineSnippetContext
LOW⚡test/test_gui_smoke.py144 def test_danmaku_style_dialog(self, parent):CODE
LOW⚡test/test_gui_smoke.py149 def test_subtitles_style_dialog(self, parent):CODE
LOW⚡test/test_gui_smoke.py154 def test_uses_project_scroll_area(self):CODE
LOW⚡test/test_gui_smoke.py163 def test_interactive_video_dialog(self, parent):CODE
LOWtest/test_gui_smoke.py39 def test_poster_item_delegate(self, parent):CODE
LOWtest/test_gui_smoke.py89 def test_dialog_constructed_with_parent_is_a_toplevel_window(self, app, parent, monkeypatch):CODE
LOWtest/test_gui_smoke.py111 def test_construction_does_not_show_the_dialog(self, app, parent, monkeypatch):CODE
LOWtest/test_gui_smoke.py179 def test_rule_builder_round_trip(self, parent):CODE
LOWtest/test_gui_smoke.py189 def test_rule_builder_degrades_on_unsupported_rule(self, parent):CODE
LOWtest/test_gui_smoke.py204 def test_edit_panel_load_and_dump(self, parent):CODE
LOWtest/test_gui_smoke.py226 def test_edit_panel_previews_every_shape(self, parent):CODE
LOWtest/test_gui_smoke.py242 def test_edit_panel_validation_messages(self, parent):CODE
LOWtest/test_gui_smoke.py257 def test_rule_builder_scrolls_when_levels_pile_up(self, parent):CODE
LOWtest/test_gui_smoke.py281 def test_rebuild_does_not_spawn_stray_windows(self, parent):CODE
LOWtest/test_gui_smoke.py314 def test_editor_does_not_overlap_at_minimum_height(self, parent, case):CODE
LOWtest/test_gui_smoke.py369 def test_variable_list_can_be_folded_away(self, parent):CODE
LOWtest/test_gui_smoke.py388 def test_fragment_move_inside_file_name(self, parent):CODE
LOWtest/test_gui_smoke.py408 def test_fragment_edit_view_keeps_shape_on_variable_change(self, parent):CODE
LOWtest/test_gui_smoke.py432 def test_fragment_edit_view_variable_choice_only_offers_recommended_variables(self, parent):CODE
LOWtest/test_gui_smoke.py457 def test_fragment_edit_view_variable_choice_keeps_a_foreign_current_variable(self, parent):CODE
LOWtest/test_gui_smoke.py495 def test_drag_reorders_the_node_list(self, parent):CODE
LOWtest/test_gui_smoke.py534 def test_invalid_edit_survives_switching_rows(self, parent):CODE
LOWtest/test_gui_smoke.py556 def test_discard_restores_the_committed_state(self, parent):CODE
LOWtest/test_gui_smoke.py573 def test_discard_hint_is_reserved_for_rule_errors(self, parent):CODE
LOWtest/test_gui_smoke.py594 def test_name_edit_shows_up_in_the_list_immediately(self, parent):CODE
LOWtest/test_gui_smoke.py605 def test_checking_default_clears_the_other_row(self, parent):CODE
LOWtest/test_gui_smoke.py632 def test_filter_hides_rows_and_blocks_dragging(self, parent):CODE
LOWtest/test_gui_smoke.py657 def test_adding_a_rule_clears_the_filter(self, parent):CODE
LOWtest/test_gui_smoke.py673 def test_item_moved_syncs_the_working_copy(self, parent):CODE
LOWtest/test_gui_smoke.py688 def test_switching_rows_without_editing_is_not_dirty(self, parent):CODE
LOWtest/test_gui_smoke.py703 def test_item_moved_is_reverted_when_the_editor_is_invalid(self, parent):CODE
LOWtest/test_gui_smoke.py721 def test_restore_builtin_default_touches_only_that_rule(self, parent):CODE
LOWtest/test_gui_smoke.py743 def test_left_column_does_not_overlap_at_minimum_size(self, parent):CODE
LOWtest/test_gui_smoke.py760 def test_new_rule_seed_has_a_usable_variable_for_every_type(self, parent):CODE
LOWtest/test_gui_smoke.py786 def test_new_rule_follows_the_selected_type(self, parent):CODE
LOWtest/test_gui_smoke.py799 def test_restore_is_unavailable_for_custom_rules(self, parent):CODE
LOWtest/test_gui_smoke.py821 def test_dirty_is_computed_not_accumulated(self, parent):CODE
LOWtest/test_reparse_worker.py23 def test_reports_a_real_message_instead_of_unbound_local(self):CODE
LOWtest/test_config_defaults.py24 def test_get_returns_the_default_object_itself(self):CODE
LOWtest/test_config_defaults.py29 def test_shallow_copy_does_not_protect_nested_structures(self):CODE
LOWtest/test_task_completion_durability.py58 def test_wait_true_is_on_disk_when_it_returns(self, task_manager):CODE
LOWtest/test_task_completion_durability.py71 def test_wait_true_does_not_deadlock_from_the_caller_thread(self, task_manager):CODE
LOWtest/test_task_completion_durability.py94 def test_timeout_does_not_raise_and_write_still_lands(self, task_manager, caplog):CODE
LOWtest/test_task_completion_durability.py120 def test_without_wait_there_is_no_durability_guarantee(self, task_manager):CODE
LOWtest/test_task_completion_durability.py149 def test_wait_false_keeps_the_old_asynchronous_contract(self, task_manager):CODE
LOWtest/test_time.py17 def test_millisecond_normalization(self):CODE
LOWtest/test_time.py22 def test_second_timestamp_below_threshold(self):CODE
LOWtest/test_time.py34 def test_out_of_range_timestamp(self):CODE
LOWtest/test_time.py42 def test_to_timestamp_strips_tzinfo_on_overflow(self):CODE
LOWtest/test_search_url.py52 def test_uses_type_specific_param(self):CODE
LOWtest/test_search_url.py60 def test_absent_and_unsupported(self):CODE
LOW⚡test/test_search_url.py72 def test_empty_keyword_removes_param(self):CODE
LOW⚡test/test_search_url.py76 def test_unsupported_url_returned_unchanged(self):CODE
LOW⚡test/test_search_url.py79 def test_preserves_other_params(self):CODE
LOWtest/test_parse_worker.py35def test_the_two_sets_do_not_overlap():CODE
LOWtest/test_parse_worker.py39def test_every_parser_module_is_accounted_for():CODE
LOWtest/test_parse_worker.py56def test_classification_matches_the_parser_source(parser_type):CODE
LOWtest/test_parse_worker.py67def test_unclassified_parsers_are_not_gated(parser_type):CODE
LOWtest/test_parse_worker.py73def test_needs_wbi_signature_covers_exactly_the_wbi_set():CODE
LOW⚡test/test_naming_convention.py81 def test_every_entry_carries_a_type(self, factory, type):CODE
393 more matches not shown…
Empty Error Handlers37 hits · 185 pts
SeverityFileLineSnippetContext
HIGHtest/test_json.py171except module.JSONDecodeError:CODE
HIGHsrc/main.py233except Exception: # noqa: S110 日志系统本身正在关闭,无处可记录CODE
HIGHsrc/main.py240except Exception: # noqa: S110 紧接着就是进程结束,刷不出去也无从补救CODE
HIGHsrc/main.py264except Exception: # noqa: S110 日志系统已经关闭,失败时静默退回末尾的 os._exit()CODE
HIGHsrc/util/ffmpeg/runner.py274except (OSError, ValueError):CODE
HIGHsrc/util/ffmpeg/runner.py249except (OSError, ValueError):CODE
HIGHsrc/util/ffmpeg/runner.py284except OSError:CODE
HIGHsrc/util/ffmpeg/runner.py360except OSError:CODE
HIGHsrc/util/ffmpeg/runner.py185except OSError:CODE
HIGHsrc/util/ffmpeg/runner.py214except OSError:CODE
HIGHsrc/util/auth/server.py107except queue.Empty:CODE
HIGHsrc/util/auth/qrcode.py39except RuntimeError:CODE
HIGHsrc/util/auth/cookie_login.py63except Exception: # noqa: S110 见下方说明CODE
HIGHsrc/util/auth/sms.py39except RuntimeError:CODE
HIGHsrc/util/parse/preview/audio_info.py160except RuntimeError:CODE
HIGHsrc/util/parse/preview/video_info.py175except RuntimeError:CODE
HIGHsrc/util/parse/additional/file/danmaku_ass.py236except (ValueError, TypeError):CODE
HIGHsrc/util/network/request.py223except KeyError:CODE
HIGHsrc/util/mcp/server.py205except OSError:CODE
HIGHsrc/util/mcp/stdio_bridge.py58except (AttributeError, ValueError):CODE
HIGHsrc/util/mcp/stdio_bridge.py64except (AttributeError, ValueError):CODE
HIGHsrc/util/mcp/stdio_bridge.py70except (AttributeError, ValueError):CODE
HIGHsrc/util/mcp/stdio_bridge.py437except KeyboardInterrupt:CODE
HIGHsrc/util/mcp/stdio_bridge.py394except Exception: # noqa: S110 退出路径上的尽力而为,失败没有补救手段CODE
HIGHsrc/util/common/config.py508except OSError:CODE
HIGHsrc/util/download/downloader/merger.py109except RuntimeError:CODE
HIGHsrc/util/download/downloader/merger.py251except RuntimeError:CODE
HIGHsrc/util/download/downloader/merger.py261except RuntimeError:CODE
HIGHsrc/util/format/file_name.py133except (TypeError, ValueError):CODE
HIGHsrc/util/thread/async_.py17except ValueError:CODE
HIGHsrc/util/thread/async_.py25except RuntimeError:CODE
HIGHsrc/gui/component/parse_list/tree_view.py792except IndexError:CODE
HIGHsrc/gui/dialog/login.py164except RuntimeError:CODE
HIGHsrc/gui/dialog/login.py169except RuntimeError:CODE
HIGHsrc/gui/dialog/login.py174except RuntimeError:CODE
HIGHsrc/gui/dialog/login.py179except RuntimeError:CODE
HIGHsrc/gui/dialog/login.py184except RuntimeError:CODE
Excessive Try-Catch Wrapping116 hits · 142 pts
SeverityFileLineSnippetContext
LOWlauncher/PyStand.cpp880 except Exception as e:CODE
LOWlauncher/PyStand.cpp1042except Exception:CODE
MEDIUMlauncher/PyStand.cpp863def PYSTAND_CONSOLECODE
MEDIUMtest/test_wbi_signature.py281def runner():CODE
LOWtest/test_wbi_signature.py286 except Exception as e:CODE
LOWtest/test_episode_tree.py179 except Exception as exc:CODE
MEDIUMsrc/main.py494def stop_mcp_server(self):CODE
MEDIUMsrc/main.py603def warmup():CODE
LOWsrc/main.py233 except Exception: # noqa: S110 日志系统本身正在关闭,无处可记录CODE
LOWsrc/main.py240 except Exception: # noqa: S110 紧接着就是进程结束,刷不出去也无从补救CODE
LOWsrc/main.py264 except Exception: # noqa: S110 日志系统已经关闭,失败时静默退回末尾的 os._exit()CODE
LOWsrc/main.py500 except Exception:CODE
LOWsrc/main.py593 except Exception:CODE
LOWsrc/main.py611 except Exception:CODE
LOWsrc/util/misc/update.py126 except Exception as e:CODE
LOWsrc/util/misc/macos.py43 except Exception:CODE
LOWsrc/util/ffmpeg/runner.py132 except Exception as e:CODE
LOWsrc/util/auth/cookie_login.py63 except Exception: # noqa: S110 见下方说明CODE
LOWsrc/util/parse/worker.py115 except Exception as e:CODE
LOWsrc/util/parse/worker.py168 except Exception as e:CODE
LOWsrc/util/parse/quality.py76 except Exception:CODE
LOWsrc/util/parse/parser/dynamic.py46 except Exception as e:CODE
LOWsrc/util/parse/parser/festival.py38 except Exception as e:CODE
LOWsrc/util/parse/parser/base.py104 except Exception:CODE
LOWsrc/util/parse/preview/worker.py53 except Exception as e:CODE
MEDIUMsrc/util/parse/preview/worker.py32def run(self):CODE
LOWsrc/util/parse/preview/previewer.py103 except Exception as e:CODE
LOWsrc/util/parse/preview/previewer.py158 except Exception as e:CODE
LOWsrc/util/parse/preview/previewer.py259 except Exception as e:CODE
MEDIUMsrc/util/parse/preview/previewer.py96def on_init_success(self):CODE
MEDIUMsrc/util/parse/preview/previewer.py146def parse_info(self):CODE
LOWsrc/util/parse/additional/worker.py36 except Exception as e:CODE
MEDIUMsrc/util/parse/additional/worker.py31def run(self):CODE
LOWsrc/util/network/request.py85 except Exception:CODE
LOWsrc/util/network/request.py104 except Exception:CODE
LOWsrc/util/network/request.py153 except Exception as e:CODE
LOWsrc/util/network/request.py380 except Exception as e:CODE
MEDIUMsrc/util/network/request.py374def run(self):CODE
LOWsrc/util/network/download_url.py196 except Exception as e:CODE
LOWsrc/util/network/download_url.py248 except Exception as e:CODE
LOWsrc/util/mcp/server.py429 except Exception:CODE
LOWsrc/util/mcp/server.py436 except Exception:CODE
MEDIUMsrc/util/mcp/server.py75def handle_one_request(self):CODE
LOWsrc/util/mcp/stdio_bridge.py394 except Exception: # noqa: S110 退出路径上的尽力而为,失败没有补救手段CODE
LOWsrc/util/mcp/protocol.py150 except Exception:CODE
LOWsrc/util/mcp/__init__.py44 except Exception:CODE
LOWsrc/util/mcp/invoke.py58 except Exception as e:CODE
LOWsrc/util/mcp/invoke.py123 except Exception:CODE
MEDIUMsrc/util/mcp/invoke.py54def runner():CODE
LOWsrc/util/mcp/tools/download.py283 except Exception:CODE
LOWsrc/util/mcp/tools/download.py433 except Exception:CODE
LOWsrc/util/mcp/tools/__init__.py90 except Exception as e:CODE
LOWsrc/util/mcp/tools/parse.py250 except Exception:CODE
LOWsrc/util/mcp/tools/parse.py328 except Exception:CODE
LOWsrc/util/common/config.py502 except Exception:CODE
LOWsrc/util/common/config.py519 except Exception as e:CODE
LOWsrc/util/common/io/file.py17 except Exception as e:CODE
LOWsrc/util/common/io/file.py35 except Exception as e:CODE
LOWsrc/util/common/io/directory.py181 except Exception as e:CODE
LOWsrc/util/download/downloader/downloader.py376 except Exception:CODE
56 more matches not shown…
Hallucination Indicators7 hits · 100 pts
SeverityFileLineSnippetContext
CRITICALsrc/gui/interface/parse.py196 self.segmented_widget.pager_widget.auto_parse_btn.clicked.connect(self.on_auto_parse)CODE
CRITICAL⚡src/gui/dialog/download_options/media.py44 self.media_info_card.video_quality_widget.choice.currentIndexChanged.connect(self.on_change_video_info_choice)CODE
CRITICAL⚡src/gui/dialog/download_options/media.py45 self.media_info_card.audio_quality_widget.choice.currentIndexChanged.connect(self.on_change_audio_info_choice)CODE
CRITICAL⚡src/gui/dialog/download_options/media.py46 self.media_info_card.video_codec_widget.choice.currentIndexChanged.connect(self.on_change_video_info_choice)CODE
CRITICAL⚡src/gui/dialog/download_options/media.py48 self.media_info_card.video_quality_widget.custom_btn.clicked.connect(self.on_adjust_video_quality_priority)CODE
CRITICAL⚡src/gui/dialog/download_options/media.py49 self.media_info_card.audio_quality_widget.custom_btn.clicked.connect(self.on_adjust_audio_quality_priority)CODE
CRITICAL⚡src/gui/dialog/download_options/media.py50 self.media_info_card.video_codec_widget.custom_btn.clicked.connect(self.on_adjust_video_codec_priority)CODE
Unused Imports82 hits · 72 pts
SeverityFileLineSnippetContext
LOWtest/test_gui_smoke.py23CODE
LOWtest/test_parse_wbi_gate.py43CODE
LOWtest/test_codec_fallback.py27CODE
LOWtest/test_i18n_context.py161CODE
LOWtest/smoke_startup.py173CODE
LOWtest/test_media_options.py33CODE
LOWtest/test_parse_list_view.py24CODE
LOWsrc/main.py345CODE
LOWsrc/main.py605CODE
LOWsrc/util/auth/captcha.py50CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py1CODE
LOWsrc/util/common/data/__init__.py6CODE
LOWsrc/util/common/data/__init__.py6CODE
LOWsrc/util/common/data/__init__.py6CODE
LOWsrc/util/common/data/__init__.py7CODE
LOWsrc/util/common/data/__init__.py7CODE
LOWsrc/util/common/data/__init__.py8CODE
LOWsrc/util/common/data/__init__.py8CODE
LOWsrc/util/common/data/__init__.py9CODE
LOWsrc/util/common/data/__init__.py10CODE
LOWsrc/util/common/data/__init__.py11CODE
LOWsrc/util/common/data/__init__.py12CODE
LOWsrc/util/common/data/__init__.py13CODE
LOWsrc/gui/component/download_list/__init__.py1CODE
LOWsrc/gui/component/download_list/__init__.py2CODE
LOWsrc/gui/component/download_list/__init__.py3CODE
LOWsrc/gui/component/download_list/__init__.py4CODE
LOWsrc/gui/component/download_list/__init__.py5CODE
LOWsrc/gui/component/parse_list/__init__.py1CODE
LOWsrc/gui/component/parse_list/__init__.py1CODE
LOWsrc/gui/component/parse_list/__init__.py1CODE
LOWsrc/gui/component/parse_list/__init__.py2CODE
LOWsrc/gui/component/parse_list/__init__.py3CODE
LOWsrc/gui/component/view_model/__init__.py1CODE
LOWsrc/gui/component/view_model/__init__.py1CODE
LOWsrc/gui/component/view_model/__init__.py1CODE
LOWsrc/gui/component/view_model/__init__.py2CODE
LOWsrc/gui/component/view_model/__init__.py3CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
LOWsrc/gui/component/setting/__init__.py1CODE
22 more matches not shown…
Modern Structural Boilerplate61 hits · 61 pts
SeverityFileLineSnippetContext
LOWsrc/main.py359logger = logging.getLogger(__name__)CODE
LOWsrc/util/misc/update.py12logger = logging.getLogger(__name__)CODE
LOWsrc/util/misc/web.py7logger = logging.getLogger(__name__)CODE
LOWsrc/util/misc/macos.py4logger = logging.getLogger(__name__)CODE
LOWsrc/util/ffmpeg/runner.py36logger = logging.getLogger(__name__)CODE
LOWsrc/util/ffmpeg/__init__.py12logger = logging.getLogger(__name__)CODE
LOWsrc/util/auth/user.py14logger = logging.getLogger(__name__)CODE
LOWsrc/util/auth/base.py10logger = logging.getLogger(__name__)CODE
LOWsrc/util/parse/worker.py12logger = logging.getLogger(__name__)CODE
LOWsrc/util/parse/quality.py7logger = logging.getLogger(__name__)CODE
LOWsrc/util/parse/episode/lesson.py8logger = logging.getLogger(__name__)CODE
LOWsrc/util/parse/parser/dynamic.py16logger = logging.getLogger(__name__)CODE
LOWsrc/util/parse/parser/base.py20logger = logging.getLogger(__name__)CODE
LOWsrc/util/parse/preview/audio_info.py17logger = logging.getLogger(__name__)CODE
LOWsrc/util/parse/preview/previewer.py24logger = logging.getLogger(__name__)CODE
LOWsrc/util/parse/additional/worker.py18logger = logging.getLogger(__name__)CODE
LOWsrc/util/parse/additional/chapter.py11logger = logging.getLogger(__name__)CODE
LOWsrc/util/network/request.py18logger = logging.getLogger(__name__)CODE
LOWsrc/util/network/download_url.py13logger = logging.getLogger(__name__)CODE
LOWsrc/util/network/cdn.py11logger = logging.getLogger(__name__)CODE
LOWsrc/util/network/area.py7logger = logging.getLogger(__name__)CODE
LOWsrc/util/mcp/server.py17logger = logging.getLogger(__name__)CODE
LOWsrc/util/mcp/protocol.py5logger = logging.getLogger(__name__)CODE
LOWsrc/util/mcp/__init__.py12logger = logging.getLogger(__name__)CODE
LOWsrc/util/mcp/invoke.py6logger = logging.getLogger(__name__)CODE
LOWsrc/util/mcp/tools/task.py11logger = logging.getLogger(__name__)CODE
LOWsrc/util/mcp/tools/download.py18logger = logging.getLogger(__name__)CODE
LOWsrc/util/mcp/tools/__init__.py7logger = logging.getLogger(__name__)CODE
LOWsrc/util/mcp/tools/parse.py10logger = logging.getLogger(__name__)CODE
LOWsrc/util/common/_json.py17logger = logging.getLogger(__name__)CODE
LOWsrc/util/common/config.py25logger = logging.getLogger(__name__)CODE
LOWsrc/util/common/io/file.py8logger = logging.getLogger(__name__)CODE
LOWsrc/util/common/io/directory.py14logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/parse/audio_info.py10logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/downloader/downloader.py32logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/downloader/parse_worker.py21logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/downloader/manager.py10logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/downloader/merger.py21logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/task/options.py10logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/task/db.py12logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/task/query_worker.py11logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/task/manager.py30logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/task/reparse_worker.py18logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/cover/db.py9logger = logging.getLogger(__name__)CODE
LOWsrc/util/download/cover/query_worker.py16logger = logging.getLogger(__name__)CODE
LOWsrc/util/format/rule_template.py31logger = logging.getLogger(__name__)CODE
LOWsrc/util/format/file_name.py15logger = logging.getLogger(__name__)CODE
LOWsrc/util/thread/dispatcher.py7logger = logging.getLogger(__name__)CODE
LOWsrc/util/thread/async_.py9logger = logging.getLogger(__name__)CODE
LOWsrc/util/thread/pool.py8logger = logging.getLogger(__name__)CODE
LOWsrc/gui/interface/main_window.py19logger = logging.getLogger(__name__)CODE
LOWsrc/gui/interface/setting.py27logger = logging.getLogger(__name__)CODE
LOWsrc/gui/interface/parse.py58logger = logging.getLogger(__name__)CODE
LOWsrc/gui/component/profile.py16logger = logging.getLogger(__name__)CODE
LOWsrc/gui/component/download_list/item_delegate.py21logger = logging.getLogger(__name__)CODE
LOWsrc/gui/component/setting/card.py28logger = logging.getLogger(__name__)CODE
LOWsrc/gui/dialog/misc/interactive_video.py12logger = logging.getLogger(__name__)CODE
LOWsrc/gui/dialog/misc/auto_parse.py14logger = logging.getLogger(__name__)CODE
LOWsrc/gui/dialog/misc/view_cover.py15logger = logging.getLogger(__name__)CODE
LOWsrc/gui/dialog/setting/user_agent.py12logger = logging.getLogger(__name__)CODE
1 more matches not shown…
Decorative Section Separators12 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml29# --------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml31# --------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml51# --------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml53# --------------------------------------------------------------------------COMMENT
MEDIUMtest/conftest.py46# --------------------------------------------------------------------------COMMENT
MEDIUMtest/conftest.py48# --------------------------------------------------------------------------COMMENT
MEDIUMsrc/util/parse/episode/list_base.py77 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/util/parse/episode/list_base.py79 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/util/parse/episode/list_base.py90 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/util/parse/episode/list_base.py92 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/util/parse/episode/list_base.py110 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/util/parse/episode/list_base.py112 # ------------------------------------------------------------------COMMENT
Deep Nesting30 hits · 30 pts
SeverityFileLineSnippetContext
LOWsrc/main.py292CODE
LOWsrc/util/auth/server.py10CODE
LOWsrc/util/auth/server.py90CODE
LOWsrc/util/auth/server.py19CODE
LOWsrc/util/auth/qrcode.py48CODE
LOWsrc/util/auth/cookie.py63CODE
LOWsrc/util/auth/cookie.py69CODE
LOWsrc/util/auth/cookie_login.py38CODE
LOWsrc/util/parse/episode/tree.py195CODE
LOWsrc/util/parse/episode/tree.py214CODE
LOWsrc/util/parse/episode/bangumi.py29CODE
LOWsrc/util/parse/episode/cheese.py28CODE
LOWsrc/util/parse/episode/video.py107CODE
LOWsrc/util/parse/preview/previewer.py60CODE
LOWsrc/util/parse/preview/previewer.py106CODE
LOWsrc/util/parse/additional/file/danmaku_ass.py186CODE
LOWsrc/util/download/downloader/downloader.py251CODE
LOWsrc/util/download/downloader/downloader.py1050CODE
LOWsrc/util/download/downloader/downloader.py1180CODE
LOWsrc/util/download/downloader/parse_worker.py136CODE
LOWsrc/util/download/downloader/merger.py131CODE
LOWsrc/util/download/downloader/merger.py276CODE
LOWsrc/util/download/task/hash_id.py21CODE
LOWsrc/util/format/rule_template.py125CODE
LOWsrc/util/format/rule_template.py157CODE
LOWsrc/gui/interface/parse.py566CODE
LOWsrc/gui/component/parse_list/tree_view.py240CODE
LOWsrc/gui/component/parse_list/tree_view.py263CODE
LOWsrc/gui/component/parse_list/tree_view.py491CODE
LOWsrc/gui/dialog/log.py112CODE
Over-Commented Block24 hits · 24 pts
SeverityFileLineSnippetContext
LOWpyproject.toml61 "src/util/misc/dm_pb2.py", # protoc 生成COMMENT
LOWlauncher/PyStand.h1//=====================================================================COMMENT
LOWlauncher/PyStand.cpp1//=====================================================================COMMENT
LOWlauncher/PyStand.cpp281// 内嵌源码解决的只是"入口脚本可以被换掉"。剩下的攻击面全在磁盘上:COMMENT
LOWlauncher/PyStand.cpp441// SetDefaultDllDirectories 把范围压到 System32 加上显式登记的目录,COMMENT
LOWlauncher/PyStand.cpp541 _py_argv.resize(0);COMMENT
LOWlauncher/PyStand.cpp761 std::wstring desc = std::to_wstring((unsigned long long)(uintptr_t)_blob)COMMENT
LOWlauncher/PyStand.cpp921//COMMENT
LOWtest/conftest.py41# 每轮测试从干净状态开始:上一轮遗留的配置会让「首次启动」「版本迁移」这类COMMENT
LOWtest/smoke_startup.py61COMMENT
LOWsrc/main.py501 logger.exception("停止 MCP 服务器失败")COMMENT
LOWsrc/main.py641COMMENT
LOWsrc/util/__init__.py1# 此处不要导入子模块:util 是所有工具模块的父包,任何一次 from util.x import y 都会先执行COMMENT
LOWsrc/util/ffmpeg/command.py161 )COMMENT
LOWsrc/util/parse/episode/history.py81 # 必须给出一个形态位:条目标着 NEED_PARSE_BIT 却没有任何形态位时,COMMENT
LOWsrc/util/network/proxy.py41 COMMENT
LOWsrc/util/network/download_url.py41 # 1. 全局 client 的 transport 带 retries = 3,遇到不回包的节点 httpx 会自己连续重试 4 次,COMMENT
LOWsrc/util/mcp/stdio_bridge.py361 def write(self, payload):COMMENT
LOWsrc/util/common/config.py561 if config_version < 2200:COMMENT
LOWsrc/util/common/data/naming_convention.py61# 混在「来源」列表里的其他类型条目COMMENT
LOWsrc/util/download/downloader/downloader.py1521 finally:COMMENT
LOWsrc/util/format/file_name.py201 # series_title …)与投稿视频完全不同 —— 套用来源规则的话,这些变量在COMMENT
LOWsrc/gui/component/dialog.py261 # 而 Qt 的自动退出判定(QGuiApplicationPrivate::lastWindowClosed())只认这种窗口,COMMENT
LOWsrc/gui/component/widget/__init__.py1# 此处不要聚合导出子模块:导入任意一个子模块都会先执行本文件,聚合导出会把 flyout ->COMMENT
Cross-Language Confusion3 hits · 11 pts
SeverityFileLineSnippetContext
HIGH⚡src/util/parse/additional/file/danmaku_ass.py113 track.push(stime, duration_ms, text_width, speed)STRING
HIGH⚡src/util/parse/additional/file/danmaku_ass.py121 track.push(stime + duration_ms)STRING
HIGH⚡src/util/parse/additional/file/danmaku_ass.py129 track.push(stime + duration_ms)STRING
AI Structural Patterns6 hits · 6 pts
SeverityFileLineSnippetContext
LOWsrc/util/parse/additional/cover.py35CODE
LOWsrc/util/parse/additional/subtitles.py197CODE
LOWsrc/util/parse/additional/danmaku.py93CODE
LOWsrc/util/network/request.py278CODE
LOWsrc/util/network/request.py369CODE
LOWsrc/util/download/task/hash_id.py21CODE
Redundant / Tautological Comments2 hits · 2 pts
SeverityFileLineSnippetContext
LOWsrc/res/resources_rc.py1424\x00#Check if a new\CODE
LOWsrc/res/resources_rc.py7651\x00\x00\x00#Check if a n\CODE
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsrc/gui/dialog/main_window/about.py31 self.sponsor_lab = BodyLabel(self.tr("If this project saved you time or solved your problem, consider buying theCODE