An AI-boost cross-platform multi-protocol fluent-design concurrent downloader built with Python & Qt.
This report presents the forensic synthetic code analysis of XiaoYouChR/Ghost-Downloader-3, a Python project with 7,879 GitHub stars. SynthScan v2.0 examined 89,625 lines of code across 286 source files, recording 546 pattern matches distributed across 7 syntactic categories. The overall adjusted score of 7.0 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 546 distinct pattern matches across 7 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/update.py | 1 | CODE | |
| LOW | app/update.py | 14 | CODE | |
| LOW | app/update.py | 14 | CODE | |
| LOW | app/startup.py | 2 | CODE | |
| LOW | app/startup.py | 27 | CODE | |
| LOW | app/client.py | 1 | CODE | |
| LOW | app/format.py | 1 | CODE | |
| LOW | app/config/cfg.py | 1 | CODE | |
| LOW | app/config/paths.py | 1 | CODE | |
| LOW | app/config/__init__.py | 1 | CODE | |
| LOW | app/config/__init__.py | 1 | CODE | |
| LOW | app/config/__init__.py | 1 | CODE | |
| LOW | app/config/__init__.py | 2 | CODE | |
| LOW | app/config/__init__.py | 2 | CODE | |
| LOW | app/config/__init__.py | 3 | CODE | |
| LOW | app/config/__init__.py | 3 | CODE | |
| LOW | app/config/__init__.py | 3 | CODE | |
| LOW | app/platform/url_scheme.py | 1 | CODE | |
| LOW | app/platform/android_keepalive.py | 1 | CODE | |
| LOW | app/platform/hidden_subprocess.py | 1 | CODE | |
| LOW | app/platform/filesystem.py | 1 | CODE | |
| LOW | app/platform/application.py | 1 | CODE | |
| LOW | app/platform/desktop_notification.py | 1 | CODE | |
| LOW | app/platform/android.py | 1 | CODE | |
| LOW | app/platform/file_association.py | 1 | CODE | |
| LOW | app/platform/sysio.py | 1 | CODE | |
| LOW | app/platform/sysio.py | 131 | CODE | |
| LOW | app/platform/sysio.py | 131 | CODE | |
| LOW | app/platform/windows.py | 1 | CODE | |
| LOW | app/platform/run_at_login.py | 1 | CODE | |
| LOW | app/platform/android_notification.py | 1 | CODE | |
| LOW | app/platform/desktop_keepalive.py | 1 | CODE | |
| LOW | app/platform/desktop.py | 1 | CODE | |
| LOW | app/models/pack.py | 1 | CODE | |
| LOW | app/models/task.py | 1 | CODE | |
| LOW | app/models/__init__.py | 1 | CODE | |
| LOW | app/models/__init__.py | 1 | CODE | |
| LOW | app/models/__init__.py | 1 | CODE | |
| LOW | app/models/__init__.py | 1 | CODE | |
| LOW | app/models/__init__.py | 1 | CODE | |
| LOW | app/models/__init__.py | 1 | CODE | |
| LOW | app/models/__init__.py | 1 | CODE | |
| LOW | app/models/__init__.py | 1 | CODE | |
| LOW | app/models/__init__.py | 1 | CODE | |
| LOW | app/models/__init__.py | 12 | CODE | |
| LOW | app/models/__init__.py | 12 | CODE | |
| LOW | app/models/__init__.py | 12 | CODE | |
| LOW | app/models/__init__.py | 12 | CODE | |
| LOW | app/models/serialization.py | 1 | CODE | |
| LOW | app/view/qfw_patch.py | 1 | CODE | |
| LOW | app/view/shell/tray.py | 1 | CODE | |
| LOW | app/view/shell/dock.py | 1 | CODE | |
| LOW | app/view/shell/mac_status_item.py | 1 | CODE | |
| LOW | app/view/cards/draft_cards.py | 1 | CODE | |
| LOW | app/view/cards/task_cards.py | 1 | CODE | |
| LOW | app/view/components/labels.py | 1 | CODE | |
| LOW | app/view/components/headers_editor.py | 1 | CODE | |
| LOW | app/view/components/editors.py | 1 | CODE | |
| LOW | app/view/components/band_selector.py | 1 | CODE | |
| LOW | app/view/components/token_line_edit.py | 1 | CODE | |
| 133 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | browser_extension/app/src/background/media-bridge.ts | 55 | function createEmptyMediaPanelState(message: string): BuiltMediaPanelState { | CODE |
| LOW | browser_extension/app/src/background/resource-bridge.ts | 158 | async function refreshActiveTabFromBrowser(): Promise<number | null> { | CODE |
| LOW | browser_extension/app/src/background/resource-bridge.ts | 250 | function shouldCaptureNetworkResource(details: chrome.webRequest.OnResponseStartedDetails, meta: NetworkResponseMeta): | CODE |
| LOW | browser_extension/app/src/background/resource-bridge.ts | 258 | function shouldCaptureRequestResource(details: chrome.webRequest.OnSendHeadersDetails): boolean { | CODE |
| LOW | browser_extension/app/src/background/resource-bridge.ts | 270 | async function downloadResourceViaBrowser(resource: Resource): Promise<void> { | CODE |
| LOW | browser_extension/app/src/background/resource-bridge.ts | 457 | async function sendHttpResourceToDesktop(resource: Resource): Promise<CommandResult> { | CODE |
| LOW | browser_extension/app/src/background/resource-cache.ts | 95 | function headerSnapshotFromStorage(snapshot: HeaderSnapshot): HeaderSnapshot { | CODE |
| LOW | …/app/src/page-media/download-button/download-button.ts | 19 | (function installGhostDownloaderMediaButton() { | CODE |
| LOW | …_extension/app/src/page-media/attribution/mse-probe.ts | 17 | (function installGhostDownloaderMseAttribution() { | CODE |
| LOW | browser_extension/app/src/shared/utils.ts | 340 | function resourcePresentationParts(resource: Resource): { | CODE |
| LOW | browser_extension/app/src/shared/utils.ts | 455 | export function canUseOnlineMergeSelection(resources: Resource[]): boolean { | CODE |
| LOW | browser_extension/app/src/shared/utils.ts | 459 | export function sortResourcesForOnlineMerge(resources: Resource[]): Resource[] { | CODE |
| LOW | browser_extension/app/src/shared/browser.ts | 27 | export function onSendHeadersExtraInfoSpec(): chrome.webRequest.OnSendHeadersOptions[] { | CODE |
| LOW | browser_extension/app/src/shared/browser.ts | 33 | export function supportsDownloadDeterminingFilename(): boolean { | CODE |
| LOW | tests/test_task_edit.py | 134 | def test_empty_url_treated_as_no_change(self, env): | CODE |
| LOW | tests/test_task_edit.py | 146 | def test_same_url_treated_as_no_change(self, env): | CODE |
| LOW | tests/test_task_edit.py | 176 | def test_not_reusable_no_data(self, env): | CODE |
| LOW | tests/test_task_edit.py | 190 | def test_not_reusable_with_data_confirm(self, env): | CODE |
| LOW | tests/test_task_edit.py | 207 | def test_not_reusable_with_data_cancel(self, env): | CODE |
| LOW | tests/test_task_edit.py | 225 | def test_parse_failure_shows_error(self, env): | CODE |
| LOW | tests/test_task_edit.py | 242 | def test_reject_cancels_pending_parse(self, env): | CODE |
| LOW⚡ | tests/test_task_page.py | 124 | def test_initial_running_ids_empty(self, page): | CODE |
| LOW⚡ | tests/test_task_page.py | 128 | def test_task_started_adds_to_running(self, page): | CODE |
| LOW⚡ | tests/test_task_page.py | 134 | def test_task_completed_removes_from_running(self, page): | CODE |
| LOW⚡ | tests/test_task_page.py | 143 | def test_task_failed_removes_from_running(self, page): | CODE |
| LOW⚡ | tests/test_task_page.py | 151 | def test_task_paused_removes_from_running(self, page): | CODE |
| LOW⚡ | tests/test_task_page.py | 159 | def test_all_completed_clears_running(self, page): | CODE |
| LOW⚡ | tests/test_task_page.py | 167 | def test_timer_started_on_task_start(self, page): | CODE |
| LOW⚡ | tests/test_task_page.py | 173 | def test_timer_stopped_when_last_task_stops(self, page): | CODE |
| LOW⚡ | tests/test_task_page.py | 182 | def test_timer_stopped_on_all_completed(self, page): | CODE |
| LOW | tests/test_task_draft.py | 88 | def test_submits_parse_for_each_url(self, draft, runner): | CODE |
| LOW | tests/test_task_draft.py | 92 | def test_removes_old_urls_cancels_parse(self, draft, runner): | CODE |
| LOW | tests/test_task_draft.py | 135 | def test_success_clears_parsing_busy(self, draft, runner): | CODE |
| LOW | tests/test_task_draft.py | 157 | def test_pending_parse_auto_confirms_on_completion(self, draft, runner): | CODE |
| LOW | tests/test_task_draft.py | 169 | def test_confirm_skips_items_without_task_or_parse(self, draft, runner): | CODE |
| LOW | tests/test_task_draft.py | 175 | def test_confirm_applies_base_options(self, draft, runner): | CODE |
| LOW | tests/test_task_draft.py | 208 | def test_confirm_applies_category_override(self, draft, runner): | CODE |
| LOW | tests/test_task_draft.py | 222 | def test_cancels_all_in_flight(self, draft, runner): | CODE |
| LOW | tests/test_task_draft.py | 235 | def test_urls_empty_after_clear(self, draft, runner): | CODE |
| LOW | tests/test_task_draft.py | 250 | def test_true_when_task_parsed(self, draft, runner): | CODE |
| LOW⚡ | tests/test_http_subworker.py | 357 | def test_skips_when_below_threshold(self, monkeypatch): | CODE |
| LOW⚡ | tests/test_http_subworker.py | 367 | def test_skips_when_filesize_zero(self): | CODE |
| LOW⚡ | tests/test_http_subworker.py | 376 | async def test_reassignment_during_download(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 167 | async def test_download_produces_correct_file(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 178 | async def test_single_subworker_correct(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 188 | async def test_many_subworkers_correct(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 215 | async def test_cloudflare_mitigated_raises_permanent(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 230 | async def test_no_range_support_downloads_full(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 254 | async def test_effective_headers_include_user_agent(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 290 | async def test_speed_reported_for_every_chunk(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 325 | def test_splits_slowest_subworker(self): | CODE |
| LOW | tests/test_http_subworker.py | 340 | def test_new_subworker_covers_second_half(self): | CODE |
| LOW | tests/test_http_subworker.py | 468 | async def test_resume_with_increased_thread_count(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 492 | async def test_resume_decreased_thread_count_is_noop(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 515 | async def test_corrupt_record_starts_fresh(self, server, tmpdir): | CODE |
| LOW | tests/test_http_subworker.py | 616 | async def test_enospc_raises_task_error(self, server, tmpdir, monkeypatch): | CODE |
| LOW | tests/test_http_subworker.py | 639 | async def test_stalled_stream_recovers_and_completes(self, server, tmpdir, monkeypatch): | CODE |
| LOW | tests/test_bt_session.py | 55 | async def test_run_downloads_and_enters_seeding(session, torrent_env): | CODE |
| LOW | tests/test_bt_session.py | 79 | async def test_run_completes_when_seed_limit_reached(session, torrent_env): | CODE |
| LOW | tests/test_bt_session.py | 97 | async def test_cancel_cleans_active_entry(session, torrent_env): | CODE |
| 98 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/platform/url_scheme.py | 17 | except Exception as e: | CODE |
| LOW | app/platform/url_scheme.py | 27 | except Exception as e: | CODE |
| LOW | app/platform/application.py | 43 | except Exception as e: | CODE |
| LOW | app/platform/application.py | 83 | except Exception: | CODE |
| LOW | app/platform/application.py | 102 | except Exception as e: | CODE |
| LOW | app/platform/application.py | 110 | except Exception as e: | CODE |
| MEDIUM | app/platform/application.py | 51 | def exec(self) -> int: | CODE |
| LOW | app/platform/desktop_notification.py | 66 | except Exception as e: | CODE |
| LOW | app/platform/android.py | 81 | except Exception as error: | CODE |
| LOW | app/platform/android.py | 134 | except Exception as error: | CODE |
| LOW | app/platform/file_association.py | 28 | except Exception as e: | CODE |
| LOW | app/platform/desktop_keepalive.py | 17 | except Exception as e: | CODE |
| LOW | app/platform/desktop_keepalive.py | 27 | except Exception as e: | CODE |
| LOW | app/platform/desktop.py | 219 | except Exception: | CODE |
| LOW | app/platform/desktop.py | 262 | except Exception as e: | CODE |
| LOW | app/platform/desktop.py | 272 | except Exception as e: | CODE |
| LOW | app/models/pack.py | 72 | except Exception: | CODE |
| LOW | app/models/task.py | 448 | except Exception as e: | CODE |
| LOW | app/view/components/setting_cards.py | 949 | except Exception as e: | CODE |
| LOW | app/view/mobile/window.py | 171 | except Exception as e: | CODE |
| LOW | app/view/dialogs/file_hash.py | 34 | except Exception as e: | CODE |
| MEDIUM | app/view/dialogs/file_hash.py | 22 | def run(self): | CODE |
| LOW | app/services/browser_service.py | 287 | except Exception as e: | CODE |
| LOW | app/services/browser_service.py | 358 | except Exception as e: | CODE |
| LOW | app/services/browser_service.py | 370 | except Exception: | CODE |
| LOW | app/services/browser_service.py | 485 | except Exception as e: | CODE |
| LOW | app/services/browser_service.py | 584 | except Exception as e: | CODE |
| LOW | app/services/coroutine_runner.py | 47 | except Exception as e: | CODE |
| LOW | app/services/coroutine_runner.py | 87 | except Exception as e: | CODE |
| MEDIUM | app/services/coroutine_runner.py | 84 | def wrapper(): | CODE |
| LOW | app/services/task_service.py | 46 | except Exception as e: | CODE |
| LOW | app/services/task_service.py | 55 | except Exception as e: | CODE |
| LOW | app/services/task_service.py | 75 | except Exception as e: | CODE |
| LOW | app/services/aria2_rpc.py | 115 | except Exception: | CODE |
| LOW | app/services/task_draft.py | 96 | except Exception as e: | CODE |
| LOW | app/services/runtime_status.py | 77 | except Exception as e: | CODE |
| LOW | app/services/runtime_status.py | 109 | except Exception as e: | CODE |
| LOW | app/services/pack_loader.py | 33 | except Exception as e: | CODE |
| LOW | app/services/pack_loader.py | 117 | except Exception as e: | CODE |
| LOW | app/services/pack_loader.py | 141 | except Exception: | CODE |
| LOW | app/services/pack_loader.py | 154 | except Exception as e: | CODE |
| LOW | features/bili_pack/pack.py | 184 | except Exception: | CODE |
| LOW | features/bili_pack/pack.py | 232 | except Exception: | CODE |
| LOW | features/bili_pack/task.py | 293 | except Exception: | CODE |
| LOW | features/yt_dlp_pack/pack.py | 56 | except Exception as e: | CODE |
| LOW | features/yt_dlp_pack/pack.py | 66 | except Exception as e: | CODE |
| LOW | features/yt_dlp_pack/pack.py | 78 | except Exception: | CODE |
| LOW | features/yt_dlp_pack/task.py | 208 | except Exception as e: | CODE |
| LOW | features/yt_dlp_pack/task.py | 434 | except Exception: | CODE |
| LOW | features/yt_dlp_pack/config.py | 177 | except Exception: | CODE |
| LOW | features/bittorrent_pack/pack.py | 39 | except Exception as e: | CODE |
| LOW | features/bittorrent_pack/pack.py | 63 | except Exception as e: | CODE |
| LOW | features/bittorrent_pack/task.py | 154 | except Exception as e: | CODE |
| LOW | features/bittorrent_pack/task.py | 211 | except Exception: | CODE |
| LOW | features/bittorrent_pack/session.py | 142 | except Exception: | CODE |
| LOW | features/bittorrent_pack/session.py | 186 | except Exception: | CODE |
| LOW | features/bittorrent_pack/session.py | 207 | except Exception: | CODE |
| LOW | features/bittorrent_pack/session.py | 218 | except Exception: | CODE |
| LOW | features/bittorrent_pack/session.py | 227 | except Exception: | CODE |
| LOW | features/bittorrent_pack/session.py | 268 | except Exception as e: | CODE |
| 31 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_identity_preset.py | 255 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_identity_preset.py | 257 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_identity_preset.py | 326 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_identity_preset.py | 328 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_identity_preset.py | 370 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_identity_preset.py | 372 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 18 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 37 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 39 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 121 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 123 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 169 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 171 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 208 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 210 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 454 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 456 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 516 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 518 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 574 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_identity_preset.py | 576 | # =========================================================================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/update.py | 103 | CODE | |
| LOW | app/client.py | 79 | CODE | |
| LOW | app/client.py | 93 | CODE | |
| LOW | app/client.py | 156 | CODE | |
| LOW | app/platform/filesystem.py | 58 | CODE | |
| LOW | app/platform/android.py | 98 | CODE | |
| LOW | app/platform/file_association.py | 32 | CODE | |
| LOW | app/platform/file_association.py | 51 | CODE | |
| LOW | app/platform/desktop.py | 134 | CODE | |
| LOW | app/platform/desktop.py | 223 | CODE | |
| LOW | app/platform/desktop.py | 291 | CODE | |
| LOW | app/models/pack.py | 66 | CODE | |
| LOW | app/models/task.py | 319 | CODE | |
| LOW | app/view/cards/task_cards.py | 243 | CODE | |
| LOW | app/view/components/token_line_edit.py | 236 | CODE | |
| LOW | app/view/components/setting_cards.py | 244 | CODE | |
| LOW | app/view/components/setting_cards.py | 845 | CODE | |
| LOW | app/view/windows/main_window.py | 419 | CODE | |
| LOW | app/view/pages/task_page.py | 561 | CODE | |
| LOW | app/services/browser_service.py | 518 | CODE | |
| LOW | features/bili_pack/pack.py | 34 | CODE | |
| LOW | features/bili_pack/task.py | 240 | CODE | |
| LOW | features/bili_pack/config.py | 114 | CODE | |
| LOW | features/bili_pack/cards.py | 263 | CODE | |
| LOW | features/bili_pack/account.py | 120 | CODE | |
| LOW | features/ffmpeg_pack/task.py | 61 | CODE | |
| LOW | features/yt_dlp_pack/task.py | 196 | CODE | |
| LOW | features/yt_dlp_pack/task.py | 306 | CODE | |
| LOW | features/yt_dlp_pack/task.py | 381 | CODE | |
| LOW | features/yt_dlp_pack/config.py | 162 | CODE | |
| LOW | features/bittorrent_pack/cards.py | 61 | CODE | |
| LOW | features/bittorrent_pack/session.py | 113 | CODE | |
| LOW | features/bittorrent_pack/session.py | 346 | CODE | |
| LOW | features/ftp_pack/pack.py | 28 | CODE | |
| LOW | features/ftp_pack/task.py | 318 | CODE | |
| LOW | features/ftp_pack/task.py | 428 | CODE | |
| LOW | features/disk_pack/task.py | 54 | CODE | |
| LOW | features/disk_pack/task.py | 81 | CODE | |
| LOW | features/disk_pack/task.py | 143 | CODE | |
| LOW | features/m3u8_pack/pack.py | 39 | CODE | |
| LOW | features/m3u8_pack/pack.py | 210 | CODE | |
| LOW | features/huggingface_pack/pack.py | 168 | CODE | |
| LOW | features/http_pack/pack.py | 47 | CODE | |
| LOW | features/http_pack/task.py | 263 | CODE | |
| LOW | features/http_pack/task.py | 377 | CODE | |
| LOW | scripts/deploy.py | 49 | CODE | |
| LOW | scripts/deploy.py | 59 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/platform/android_keepalive.py | 40 | def _setWakeLock(self, active: bool) -> None: | CODE |
| LOW | app/platform/android_keepalive.py | 57 | def _updateService(self) -> None: | CODE |
| LOW | app/platform/run_at_login.py | 19 | def _setWindows(enabled: bool) -> None: | CODE |
| LOW | app/platform/run_at_login.py | 38 | def _setMacOS(enabled: bool) -> None: | CODE |
| LOW | app/platform/run_at_login.py | 61 | def _setLinux(enabled: bool) -> None: | CODE |
| LOW | app/models/task.py | 290 | def _updateFilesFromSteps(self) -> None: | CODE |
| LOW | app/view/cards/task_cards.py | 283 | def _setStatus(self, text: str) -> None: | CODE |
| LOW | app/view/components/headers_editor.py | 293 | def _setRows(self, rows: list[tuple[str, str]]) -> None: | CODE |
| LOW | app/view/components/band_selector.py | 95 | def _updateBand(self, scrollWidgetX: int, scrollWidgetY: int) -> None: | CODE |
| LOW | app/view/components/scroll_area.py | 15 | __all__ = ["ScrollArea"] | CODE |
| LOW | app/view/components/setting_cards.py | 367 | def _setPath(self, path: str) -> None: | CODE |
| LOW | app/view/components/setting_cards.py | 792 | def _setPath(self, path: str) -> None: | CODE |
| LOW | app/view/components/setting_card_group.py | 220 | def _setCollapsed(self, collapsed: bool) -> None: | CODE |
| LOW | app/view/mobile/window.py | 112 | def _updateSearchTarget(self, page: QWidget) -> None: | CODE |
| LOW | app/view/dialogs/file_select.py | 173 | def _setChildrenCheckState(self, item: QStandardItem, state: Qt.CheckState) -> None: | CODE |
| LOW | app/view/dialogs/file_select.py | 191 | def _updateAncestorCheckStates(self, item: QStandardItem | None) -> None: | CODE |
| LOW | app/view/dialogs/file_select.py | 202 | def _setSelectedIndexes(self, selectedIndexes: set[int]) -> None: | CODE |
| LOW | app/view/dialogs/file_select.py | 213 | def _setAll(self, checked: bool) -> None: | CODE |
| LOW | app/view/dialogs/file_select.py | 232 | def _updateSummary(self) -> None: | CODE |
| LOW | app/view/dialogs/edit_task.py | 88 | def _setInteractive(self, enabled: bool) -> None: | CODE |
| LOW | app/view/windows/main_window.py | 154 | def _updateSearchTarget(self, page: QWidget) -> None: | CODE |
| LOW | app/view/windows/main_window.py | 383 | def _setTheme(self, value, deferBackgroundRefresh: bool = False) -> None: | CODE |
| LOW | app/view/windows/main_window.py | 419 | def _setBackgroundEffect(self, value: str) -> None: | CODE |
| LOW | app/view/windows/oobe_window.py | 484 | def _setBanner(self, icon: InfoBarIcon, title: str) -> None: | CODE |
| LOW | app/view/windows/oobe_window.py | 517 | def _setConnectedBanner(self, version: str) -> None: | CODE |
| LOW | features/bili_pack/cards.py | 79 | def _setAll(self, checked: bool) -> None: | CODE |
| LOW | features/bili_pack/cards.py | 176 | def _setAll(self, checked: bool) -> None: | CODE |
| LOW | features/bili_pack/account.py | 85 | def _updateWbiKeys(self, data: dict) -> None: | CODE |
| LOW | features/yt_dlp_pack/task.py | 306 | def _updateSiblingSteps(self, videoFmt: dict | None, audioFmt: dict | None, info: dict) -> None: | CODE |
| LOW | features/yt_dlp_pack/cards.py | 172 | def _setAll(self, checked: bool) -> None: | CODE |
| LOW | features/yt_dlp_pack/cards.py | 271 | def _setAll(self, checked: bool) -> None: | CODE |
| LOW | features/bittorrent_pack/session.py | 391 | def _updateEntry(self, entry: ActiveTorrent) -> None: | CODE |
| LOW | features/ed2k_pack/python_ed2k/__init__.py | 5 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | app/platform/android.py | 168 | text = text if isinstance(text, str) else text.toString() | CODE |
| HIGH | app/view/components/markdown_viewer.py | 121 | cursor.setPosition(last.position() + last.length() - 1, QTextCursor.MoveMode.KeepAnchor) | CODE |