Run Windows software and games on Linux
This report presents the forensic synthetic code analysis of bottlesdevs/Bottles, a Python project with 8,596 GitHub stars. SynthScan v2.0 examined 40,899 lines of code across 257 source files, recording 481 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 13.4 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 481 distinct pattern matches across 15 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 | bottles/frontend/bottles.py | 1 | #!@PYTHON@ | COMMENT |
| LOW | bottles/frontend/operation.py | 1 | # operation.py | COMMENT |
| LOW | bottles/frontend/main.py | 1 | # main.py | COMMENT |
| LOW | bottles/frontend/utils/gtk.py | 1 | # gtk.py | COMMENT |
| LOW | bottles/frontend/utils/sh.py | 1 | # sh.py | COMMENT |
| LOW | bottles/frontend/utils/sandbox_guard.py | 1 | # sandbox_guard.py | COMMENT |
| LOW | bottles/frontend/utils/playtime.py | 1 | # playtime.py | COMMENT |
| LOW | bottles/frontend/utils/common.py | 1 | # utils.py | COMMENT |
| LOW | bottles/frontend/utils/filters.py | 1 | # filters.py: File for providing common GtkFileFilters | COMMENT |
| LOW | bottles/frontend/cli/cli.py | 1 | #!@PYTHON@ | COMMENT |
| LOW | bottles/frontend/windows/onboard.py | 1 | # onboard.py | COMMENT |
| LOW | bottles/frontend/windows/mangohud.py | 1 | # mangohud.py | COMMENT |
| LOW | bottles/frontend/windows/upgradeversioning.py | 1 | # duplicate.py | COMMENT |
| LOW | bottles/frontend/windows/dependency_install.py | 1 | # dependency_install.py | COMMENT |
| LOW | bottles/frontend/windows/funding.py | 1 | # funding.py | COMMENT |
| LOW | bottles/frontend/windows/depscheck.py | 1 | # depscheck.py | COMMENT |
| LOW | bottles/frontend/windows/journal.py | 1 | # journal.py | COMMENT |
| LOW | bottles/frontend/windows/crash.py | 1 | # crash.py | COMMENT |
| LOW | bottles/frontend/windows/versioning_manage_branches.py | 1 | # versioning_manage_branches.py | COMMENT |
| LOW | bottles/frontend/windows/bottlepicker.py | 1 | # bottlepicker.py | COMMENT |
| LOW | bottles/frontend/windows/window.py | 1 | # window.py | COMMENT |
| LOW | bottles/frontend/windows/rename.py | 1 | # rename.py | COMMENT |
| LOW | bottles/frontend/windows/bulkupdate.py | 1 | # bulkupdate.py | COMMENT |
| LOW | bottles/frontend/windows/versioning_commit.py | 1 | # versioning_commit.py | COMMENT |
| LOW | bottles/frontend/windows/versioning_branch.py | 1 | # versioning_branch.py | COMMENT |
| LOW | bottles/frontend/windows/generic.py | 1 | # generic.py | COMMENT |
| LOW | bottles/frontend/windows/envvars.py | 1 | # envvars.py | COMMENT |
| LOW | bottles/frontend/windows/gamescope.py | 1 | # gamescope.py | COMMENT |
| LOW | bottles/frontend/windows/display.py | 1 | # display.py | COMMENT |
| LOW | bottles/frontend/windows/installer.py | 1 | # installer.py | COMMENT |
| LOW | bottles/frontend/windows/sandbox.py | 1 | # sandbox.py | COMMENT |
| LOW | bottles/frontend/windows/duplicate.py | 1 | # duplicate.py | COMMENT |
| LOW | bottles/frontend/windows/exclusionpatterns.py | 1 | # envvars.py | COMMENT |
| LOW | bottles/frontend/windows/vmtouch.py | 1 | # vmtouch.py | COMMENT |
| LOW | bottles/frontend/windows/launchoptions.py | 1 | # launchoptions.py | COMMENT |
| LOW | bottles/frontend/windows/playtimegraph.py | 1 | # playtimegraph.py | COMMENT |
| LOW | bottles/frontend/windows/versioning_settings.py | 1 | # versioning_settings.py | COMMENT |
| LOW | bottles/frontend/windows/dlloverrides.py | 1 | # dlloverrides.py | COMMENT |
| LOW | bottles/frontend/windows/protonalert.py | 1 | # protonalert.py | COMMENT |
| LOW | bottles/frontend/windows/registry_rules.py | 1 | # | COMMENT |
| LOW | bottles/frontend/windows/vkbasalt.py | 1 | # vkbasalt.py | COMMENT |
| LOW | bottles/frontend/windows/drives.py | 1 | # drive.py | COMMENT |
| LOW | bottles/frontend/views/loading.py | 1 | # loading.py | COMMENT |
| LOW | bottles/frontend/views/library.py | 1 | # library.py | COMMENT |
| LOW | bottles/frontend/views/importer.py | 1 | # importer.py | COMMENT |
| LOW | bottles/frontend/views/list.py | 1 | # list.py | COMMENT |
| LOW | bottles/frontend/views/bottle_versioning.py | 1 | # bottle_versioning.py | COMMENT |
| LOW | bottles/frontend/views/preferences.py | 1 | # preferences.py | COMMENT |
| LOW | bottles/frontend/views/bottle_installers.py | 1 | # bottle_installers.py | COMMENT |
| LOW | bottles/frontend/views/bottle_dependencies.py | 1 | # bottle_installers.py | COMMENT |
| LOW | bottles/frontend/views/details.py | 1 | # details.py | COMMENT |
| LOW | bottles/frontend/views/bottle_taskmanager.py | 1 | # taskmanager.py | COMMENT |
| LOW | bottles/frontend/views/bottle_preferences.py | 1 | # bottle_preferences.py | COMMENT |
| LOW | bottles/frontend/views/eagle.py | 1 | # eagle.py | COMMENT |
| LOW | bottles/frontend/views/bottle_registry_rules.py | 1 | # bottle_registry_rules.py | COMMENT |
| LOW | bottles/frontend/views/bottle_details.py | 1 | # bottle_details.py | COMMENT |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 1 | # new_bottle_dialog.py | COMMENT |
| LOW | bottles/frontend/widgets/playtimechart_monthly.py | 1 | # playtimechart_monthly.py | COMMENT |
| LOW | bottles/frontend/widgets/library.py | 1 | # library.py | COMMENT |
| LOW | bottles/frontend/widgets/importer.py | 1 | # importer.py | COMMENT |
| 63 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 11 | def _add_repo_root_to_syspath() -> None: | CODE |
| LOW | bottles/frontend/windows/dependency_install.py | 69 | def __mark_last_step_completed(self) -> None: | CODE |
| LOW | bottles/frontend/windows/window.py | 204 | def __schedule_donate_icon_swap(self): | CODE |
| LOW | bottles/frontend/windows/window.py | 214 | def __resolve_donate_icon_name(self) -> Optional[str]: | CODE |
| LOW | bottles/frontend/windows/window.py | 316 | def __maybe_prompt_winebridge_update(self): | CODE |
| LOW | bottles/frontend/windows/window.py | 494 | def show_download_preferences_view(self, widget=False): | CODE |
| LOW | bottles/frontend/windows/window.py | 497 | def show_runners_preferences_view(self, widget=False): | CODE |
| LOW | bottles/frontend/windows/window.py | 512 | def __maybe_show_funding_dialog(self): | CODE |
| LOW | bottles/frontend/windows/envvars.py | 246 | def __populate_inherited_list(self): | CODE |
| LOW | bottles/frontend/windows/envvars.py | 260 | def __update_inherited_placeholder(self): | CODE |
| LOW | bottles/frontend/windows/dlloverrides.py | 152 | def __populate_overrides_list(self): | CODE |
| LOW | bottles/frontend/windows/vkbasalt.py | 195 | def __change_edge_detection_type(self, widget, edge_detection_type): | CODE |
| LOW | bottles/frontend/windows/drives.py | 122 | def __populate_combo_and_drives(self): | CODE |
| LOW | bottles/frontend/views/bottle_versioning.py | 135 | def show_manage_branches_dialog(self, widget): | CODE |
| LOW | bottles/frontend/views/preferences.py | 279 | def __update_eagle_security_style(self, *_args): | CODE |
| LOW | bottles/frontend/views/preferences.py | 397 | def __on_personal_repo_changed(self, row, repo_name): | CODE |
| LOW | bottles/frontend/views/preferences.py | 413 | def __persist_personal_repositories(self): | CODE |
| LOW | bottles/frontend/views/preferences.py | 425 | def __on_audio_driver_setting_changed(self, *_args): | CODE |
| LOW | bottles/frontend/views/preferences.py | 428 | def __sync_audio_driver_selection(self, *_args): | CODE |
| LOW | bottles/frontend/views/preferences.py | 439 | def __on_audio_driver_selected(self, combo, _pspec): | CODE |
| LOW | bottles/frontend/views/preferences.py | 454 | def __display_unstable_candidate(self, component=["", {"Channel": "unstable"}]): | CODE |
| LOW | bottles/frontend/views/preferences.py | 459 | def __populate_component_list( | CODE |
| LOW | bottles/frontend/views/preferences.py | 515 | def __populate_runners_helper( | CODE |
| LOW | bottles/frontend/views/preferences.py | 725 | def __populate_template_cache_rows(self, templates: list[dict]): | CODE |
| LOW | bottles/frontend/views/preferences.py | 773 | def __format_template_subtitle(self, template: dict) -> str: | CODE |
| LOW | bottles/frontend/views/preferences.py | 798 | def __confirm_clear_all_caches(self, widget): | CODE |
| LOW | bottles/frontend/views/preferences.py | 809 | def __confirm_clear_temp_cache(self, widget): | CODE |
| LOW | bottles/frontend/views/preferences.py | 820 | def __confirm_clear_templates_cache(self, widget): | CODE |
| LOW | bottles/frontend/views/bottle_preferences.py | 313 | def __create_unavailable_popover(self, command: str | None) -> Gtk.Popover: | CODE |
| LOW | bottles/frontend/views/bottle_preferences.py | 358 | def __add_unavailable_indicator(self, row: Adw.ActionRow, command: str | None): | CODE |
| LOW | bottles/frontend/views/bottle_preferences.py | 372 | def __copy_command_to_clipboard(self, _widget, command: str): | CODE |
| LOW | bottles/frontend/views/bottle_preferences.py | 446 | def __update_working_directory_row(self, working_dir=None): | CODE |
| LOW | bottles/frontend/views/bottle_preferences.py | 809 | def __dll_component_task_func(self, *args, **kwargs): | CODE |
| LOW | bottles/frontend/views/eagle.py | 161 | def __mark_last_step_completed(self) -> None: | CODE |
| LOW | bottles/frontend/views/bottle_details.py | 212 | def __show_versioning_settings(self, widget): | CODE |
| LOW | bottles/frontend/views/bottle_details.py | 635 | def __run_executable_with_args(self, widget): | CODE |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 312 | def __mark_last_step_completed(self) -> None: | CODE |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 414 | def __prompt_cancel_confirmation( | CODE |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 506 | def __start_cancellation_cleanup(self) -> None: | CODE |
| LOW | bottles/frontend/widgets/library.py | 154 | def __handle_initialization_failure(self, message: str): | CODE |
| LOW | bottles/frontend/widgets/program.py | 580 | def _on_desktop_entry_created(data: Optional[Result] = None) -> None: | CODE |
| LOW | bottles/frontend/widgets/component.py | 261 | def _restore_pre_download_visibility(self): | CODE |
| LOW | bottles/tests/conftest.py | 2 | def _add_repo_root_to_syspath() -> None: | CODE |
| LOW | bottles/tests/frontend/test_playtime_service.py | 58 | def test_format_subtitle_with_data(): | CODE |
| LOW | bottles/tests/frontend/test_playtime_service.py | 80 | def test_format_subtitle_never_played(): | CODE |
| LOW | bottles/tests/frontend/test_playtime_service.py | 88 | def test_service_disabled_returns_none(): | CODE |
| LOW | …nd/integration/playtime/test_wine_executor_playtime.py | 42 | def test_wine_executor_emits_and_updates_totals(mocker): | CODE |
| LOW | …/backend/integration/playtime/test_uniqueness_retry.py | 8 | def test_uniqueness_retry_smoke(manager): | CODE |
| LOW | …backend/integration/playtime/test_disabled_tracking.py | 9 | def test_disabled_tracking_smoke(temp_xdg_home): | CODE |
| LOW | …es/tests/backend/integration/playtime/test_recovery.py | 47 | def test_recovery_different_bottles(manager): | CODE |
| LOW | …es/tests/backend/integration/playtime/test_recovery.py | 88 | def test_recovery_same_bottle_different_programs(manager): | CODE |
| LOW | …es/tests/backend/integration/playtime/test_recovery.py | 124 | def test_cli_manager_init_does_not_recover_live_sessions(temp_xdg_home, test_settings_stub): | CODE |
| LOW | …tests/backend/integration/playtime/test_aggregation.py | 8 | def test_same_program_aggregates_into_one_row(manager): | CODE |
| LOW | …tests/backend/integration/playtime/test_aggregation.py | 49 | def test_different_programs_separate_rows(manager): | CODE |
| LOW | …tests/backend/integration/playtime/test_failure_run.py | 8 | def test_failure_run_marks_unknown_and_updates_totals(manager): | CODE |
| LOW | …tests/backend/integration/playtime/test_failure_run.py | 37 | def test_multiple_failures_different_bottles(manager): | CODE |
| LOW | …tests/backend/integration/playtime/test_failure_run.py | 73 | def test_multiple_failures_same_bottle_different_programs(manager): | CODE |
| LOW | …ts/backend/integration/playtime/test_successful_run.py | 8 | def test_successful_run_finalizes_and_updates_totals(manager): | CODE |
| LOW | …ts/backend/integration/playtime/test_successful_run.py | 39 | def test_success_multiple_apps_two_same_bottle_one_other(manager): | CODE |
| LOW | …/backend/integration/playtime/test_playtime_signals.py | 39 | def test_signals_flow_success(): | CODE |
| 50 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/frontend/main.py | 231 | except Exception as e: | CODE |
| LOW | bottles/frontend/main.py | 264 | except Exception as e: | CODE |
| LOW | bottles/frontend/main.py | 293 | except Exception as e: | CODE |
| LOW | bottles/frontend/utils/playtime.py | 173 | except Exception as e: | CODE |
| LOW | bottles/frontend/utils/playtime.py | 222 | except Exception as e: | CODE |
| LOW | bottles/frontend/utils/playtime.py | 286 | except Exception: | CODE |
| LOW | bottles/frontend/utils/playtime.py | 329 | except Exception: | CODE |
| LOW | bottles/frontend/utils/playtime.py | 370 | except Exception: | CODE |
| LOW | bottles/frontend/utils/playtime.py | 393 | except Exception as e: | CODE |
| LOW | bottles/frontend/utils/playtime.py | 412 | except Exception as e: | CODE |
| LOW | bottles/frontend/utils/playtime.py | 431 | except Exception as e: | CODE |
| LOW | bottles/frontend/windows/envvars.py | 75 | except Exception as e: | CODE |
| LOW | bottles/frontend/windows/playtimegraph.py | 261 | except Exception as e: | CODE |
| LOW | bottles/frontend/views/bottle_versioning.py | 107 | except Exception: | CODE |
| MEDIUM | bottles/frontend/views/bottle_versioning.py | 102 | def _refresh_details_badge(self): | CODE |
| LOW | bottles/frontend/views/bottle_details.py | 224 | except Exception: | CODE |
| MEDIUM | bottles/frontend/views/bottle_details.py | 218 | def _fetch(): | CODE |
| LOW | bottles/frontend/widgets/program.py | 173 | except Exception as e: | CODE |
| LOW | bottles/frontend/widgets/program.py | 651 | except Exception as e: | CODE |
| LOW | …nd/integration/playtime/test_wine_executor_playtime.py | 30 | except Exception: | CODE |
| LOW | …/backend/integration/playtime/test_playtime_signals.py | 34 | except Exception: | CODE |
| LOW | bottles/backend/cabextract.py | 114 | except Exception as exception: | CODE |
| LOW | bottles/backend/managers/library.py | 80 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/steamgriddb.py | 55 | except Exception: | CODE |
| LOW | bottles/backend/managers/playtime.py | 157 | except Exception: | CODE |
| LOW⚡ | bottles/backend/managers/playtime.py | 249 | except Exception: | CODE |
| LOW⚡ | bottles/backend/managers/playtime.py | 252 | except Exception: | CODE |
| LOW⚡ | bottles/backend/managers/playtime.py | 260 | except Exception: | CODE |
| LOW | bottles/backend/managers/playtime.py | 481 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/playtime.py | 746 | except Exception: | CODE |
| LOW | bottles/backend/managers/playtime.py | 848 | except Exception: | CODE |
| LOW | bottles/backend/managers/playtime.py | 920 | except Exception: | CODE |
| LOW | bottles/backend/managers/playtime.py | 968 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/playtime.py | 1006 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/playtime.py | 1044 | except Exception as e: | CODE |
| MEDIUM | bottles/backend/managers/playtime.py | 257 | def _atexit_shutdown(self) -> None: | CODE |
| LOW | bottles/backend/managers/eagle.py | 136 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 171 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 259 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 287 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 343 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 350 | except Exception as e: | CODE |
| LOW⚡ | bottles/backend/managers/eagle.py | 382 | except Exception: | CODE |
| LOW⚡ | bottles/backend/managers/eagle.py | 387 | except Exception: | CODE |
| LOW⚡ | bottles/backend/managers/eagle.py | 395 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 406 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 800 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 964 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 373 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 384 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 396 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 408 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 435 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/dependency.py | 646 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/dependency.py | 727 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/component.py | 534 | except Exception as e: | CODE |
| MEDIUM | bottles/backend/managers/manager.py | 533 | def clear_temp_cache(self) -> Result[None]: | CODE |
| LOW | bottles/backend/managers/manager.py | 197 | except Exception: | CODE |
| LOW | bottles/backend/managers/manager.py | 316 | except Exception as error: # pragma: no cover - defensive | CODE |
| LOW | bottles/backend/managers/manager.py | 332 | except Exception as error: # pragma: no cover - defensive | CODE |
| 34 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/frontend/cli/cli.py | 288 | CODE | |
| LOW | bottles/frontend/cli/cli.py | 447 | CODE | |
| LOW | bottles/frontend/cli/cli.py | 638 | CODE | |
| LOW | bottles/frontend/cli/cli.py | 760 | CODE | |
| LOW | bottles/frontend/windows/crash.py | 62 | CODE | |
| LOW | bottles/frontend/windows/window.py | 82 | CODE | |
| LOW | bottles/frontend/windows/bulkupdate.py | 136 | CODE | |
| LOW | bottles/frontend/windows/playtimegraph.py | 120 | CODE | |
| LOW | bottles/frontend/windows/playtimegraph.py | 334 | CODE | |
| LOW | bottles/frontend/windows/vkbasalt.py | 85 | CODE | |
| LOW | bottles/frontend/views/preferences.py | 515 | CODE | |
| LOW | bottles/frontend/views/details.py | 116 | CODE | |
| LOW | bottles/frontend/views/eagle.py | 205 | CODE | |
| LOW | bottles/frontend/views/eagle.py | 579 | CODE | |
| LOW | bottles/fvs/repo.py | 81 | CODE | |
| LOW | bottles/fvs/repo.py | 124 | CODE | |
| LOW | bottles/fvs/repo.py | 175 | CODE | |
| LOW | bottles/fvs/repo.py | 222 | CODE | |
| LOW | bottles/backend/downloader.py | 60 | CODE | |
| LOW | bottles/backend/cabextract.py | 72 | CODE | |
| LOW | bottles/backend/health.py | 103 | CODE | |
| LOW | bottles/backend/managers/backup.py | 88 | CODE | |
| LOW | bottles/backend/managers/backup.py | 159 | CODE | |
| LOW | bottles/backend/managers/backup.py | 314 | CODE | |
| LOW | bottles/backend/managers/journal.py | 138 | CODE | |
| LOW | bottles/backend/managers/importer.py | 36 | CODE | |
| LOW | bottles/backend/managers/conf.py | 38 | CODE | |
| LOW | bottles/backend/managers/conf.py | 113 | CODE | |
| LOW | bottles/backend/managers/ubisoftconnect.py | 53 | CODE | |
| LOW | bottles/backend/managers/installer.py | 85 | CODE | |
| LOW | bottles/backend/managers/installer.py | 169 | CODE | |
| LOW | bottles/backend/managers/playtime.py | 263 | CODE | |
| LOW | bottles/backend/managers/playtime.py | 754 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 182 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 292 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 354 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 409 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 313 | CODE | |
| LOW | bottles/backend/managers/versioning.py | 225 | CODE | |
| LOW | bottles/backend/managers/dependency.py | 156 | CODE | |
| LOW | bottles/backend/managers/dependency.py | 390 | CODE | |
| LOW | bottles/backend/managers/dependency.py | 567 | CODE | |
| LOW | bottles/backend/managers/dependency.py | 675 | CODE | |
| LOW | bottles/backend/managers/component.py | 58 | CODE | |
| LOW | bottles/backend/managers/component.py | 129 | CODE | |
| LOW | bottles/backend/managers/component.py | 310 | CODE | |
| LOW | bottles/backend/managers/component.py | 365 | CODE | |
| LOW | bottles/backend/managers/component.py | 461 | CODE | |
| LOW | bottles/backend/managers/component.py | 501 | CODE | |
| LOW | bottles/backend/managers/repository.py | 112 | CODE | |
| LOW | bottles/backend/managers/steam.py | 533 | CODE | |
| LOW | bottles/backend/managers/manager.py | 698 | CODE | |
| LOW | bottles/backend/managers/manager.py | 987 | CODE | |
| LOW | bottles/backend/managers/manager.py | 1060 | CODE | |
| LOW | bottles/backend/managers/manager.py | 1212 | CODE | |
| LOW | bottles/backend/managers/manager.py | 1593 | CODE | |
| LOW | bottles/backend/managers/manager.py | 2472 | CODE | |
| LOW | bottles/backend/managers/manager.py | 2551 | CODE | |
| LOW | bottles/backend/managers/manager.py | 1228 | CODE | |
| LOW | bottles/backend/utils/terminal.py | 86 | CODE | |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | bottles/frontend/widgets/playtimechart_monthly.py | 0 | get the current font scale factor from gtk settings. | STRING |
| HIGH | bottles/frontend/widgets/playtimechart_weekly.py | 0 | get the current font scale factor from gtk settings. | STRING |
| HIGH | bottles/frontend/widgets/playtimechart_hourly.py | 0 | get the current font scale factor from gtk settings. | STRING |
| HIGH | bottles/frontend/widgets/playtimechart_monthly.py | 0 | show tooltip with time value when hovering over bars. | STRING |
| HIGH | bottles/frontend/widgets/playtimechart_weekly.py | 0 | show tooltip with time value when hovering over bars. | STRING |
| HIGH | bottles/frontend/widgets/playtimechart_hourly.py | 0 | show tooltip with time value when hovering over bars. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_fvs.py | 8 | CODE | |
| LOW | bottles/frontend/utils/playtime.py | 22 | CODE | |
| LOW | bottles/frontend/cli/cli.py | 51 | CODE | |
| LOW | bottles/frontend/windows/upgradeversioning.py | 18 | CODE | |
| LOW | bottles/frontend/windows/dependency_install.py | 17 | CODE | |
| LOW | bottles/frontend/windows/window.py | 28 | CODE | |
| LOW | bottles/frontend/windows/window.py | 31 | CODE | |
| LOW | bottles/frontend/windows/window.py | 49 | CODE | |
| LOW | bottles/frontend/windows/versioning_commit.py | 18 | CODE | |
| LOW | bottles/frontend/windows/versioning_branch.py | 18 | CODE | |
| LOW | bottles/frontend/windows/envvars.py | 18 | CODE | |
| LOW | bottles/frontend/windows/duplicate.py | 18 | CODE | |
| LOW | bottles/frontend/windows/versioning_settings.py | 19 | CODE | |
| LOW | bottles/frontend/views/list.py | 21 | CODE | |
| LOW | bottles/frontend/views/list.py | 24 | CODE | |
| LOW | bottles/frontend/views/bottle_versioning.py | 25 | CODE | |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 30 | CODE | |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 30 | CODE | |
| LOW | bottles/frontend/widgets/program.py | 21 | CODE | |
| LOW | bottles/frontend/widgets/playtimechart_hourly.py | 31 | CODE | |
| LOW | bottles/frontend/widgets/playtimechart_hourly.py | 32 | CODE | |
| LOW | bottles/backend/runner.py | 30 | CODE | |
| LOW | bottles/backend/globals.py | 23 | CODE | |
| LOW | bottles/backend/managers/registry_rule.py | 12 | CODE | |
| LOW | bottles/backend/managers/playtime.py | 5 | CODE | |
| LOW | bottles/backend/managers/playtime.py | 15 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/frontend/windows/playtimegraph.py | 202 | # Check if there's sub-minute playtime for today | COMMENT |
| LOW | bottles/frontend/windows/playtimegraph.py | 290 | # Check if we have required IDs | COMMENT |
| LOW⚡ | bottles/frontend/windows/vkbasalt.py | 104 | # Check if configuration file exists; parse the configuration file if it exists | COMMENT |
| LOW⚡ | bottles/frontend/windows/vkbasalt.py | 110 | # Check if effects are used | COMMENT |
| LOW⚡ | bottles/frontend/windows/vkbasalt.py | 119 | # Check if subeffects are used | COMMENT |
| LOW | bottles/frontend/views/importer.py | 186 | # Check if this is an import task | COMMENT |
| LOW | bottles/frontend/views/bottle_details.py | 511 | # Check if this is a backup task for our bottle | COMMENT |
| LOW | bottles/frontend/widgets/playtimechart_monthly.py | 152 | # Check if width changed - re-render if needed | COMMENT |
| LOW | bottles/frontend/widgets/playtimechart_weekly.py | 151 | # Check if width changed - re-render if needed | COMMENT |
| LOW | bottles/frontend/widgets/playtimechart_hourly.py | 142 | # Check if width changed - re-render if needed | COMMENT |
| LOW | bottles/backend/globals.py | 92 | # Check if some tools are available | COMMENT |
| LOW | bottles/backend/managers/backup.py | 98 | # Check if this directory should be excluded | COMMENT |
| LOW | bottles/backend/managers/manager.py | 1264 | # Check if the path in the bottle config corresponds to the folder name | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | bottles/frontend/views/preferences.py | 366 | subprocess.Popen("sleep 1 && bottles & disown", shell=True) | CODE |
| HIGH | bottles/backend/utils/terminal.py | 72 | f"command -v {terminal[0]} > /dev/null && echo 1 || echo 0", | CODE |
| HIGH | bottles/backend/utils/terminal.py | 72 | f"command -v {terminal[0]} > /dev/null && echo 1 || echo 0", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/tests/backend/wine/test_executor.py | 45 | CODE | |
| LOW | bottles/backend/managers/sandbox.py | 34 | CODE | |
| LOW | bottles/backend/managers/manager.py | 1593 | CODE | |
| LOW | bottles/backend/utils/vulkan.py | 117 | CODE | |
| LOW | bottles/backend/models/config.py | 277 | CODE | |
| LOW | bottles/backend/wine/xcopy.py | 14 | CODE | |
| LOW | bottles/backend/wine/wineprogram.py | 85 | CODE | |
| LOW | bottles/backend/wine/wineprogram.py | 39 | CODE | |
| LOW | bottles/backend/wine/msiexec.py | 33 | CODE | |
| LOW | bottles/backend/wine/start.py | 14 | CODE | |
| LOW | bottles/backend/wine/executor.py | 42 | CODE | |
| LOW | bottles/backend/wine/winecommand.py | 137 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | bottles/frontend/windows/playtimegraph.py | 258 | totals_data = self.parent.window.manager.playtime_tracker.get_totals( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | bottles/backend/models/config.py | 64 | # share_host_ro: bool = True # TODO: implement, requires the Bottles runtime (next) for a minimal sandbox | COMMENT |
| LOW⚡ | bottles/backend/models/config.py | 65 | # share_gpu: bool = True # TODO: implement | COMMENT |
| LOW⚡ | bottles/backend/models/config.py | 66 | # share_paths_ro: List[str] = field(default_factory=lambda: []) # TODO: implement | COMMENT |
| LOW⚡ | bottles/backend/models/config.py | 67 | # share_paths_rw: List[str] = field(default_factory=lambda: []) # TODO: implement | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/frontend/windows/dependency_install.py | 100 | def update_progress(self, fraction: Optional[float]) -> None: | CODE |
| LOW | bottles/frontend/views/list.py | 187 | def update_bottles_list(self, *args) -> None: | CODE |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 269 | def update_output(self, text: str) -> None: | CODE |
| LOW | bottles/backend/utils/gsettings_stub.py | 23 | def set_string(key: str, value: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bottles/backend/wine/winecommand.py | 613 | # Create the sh script where Gamescope will execute it | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/frontend/views/bottle_preferences.py | 787 | def run_task(status=True): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bottles/backend/managers/eagle.py | 410 | """Perform comprehensive PE analysis with YARA pattern matching.""" | STRING |