Run Windows software and games on Linux
This report summarizes scanner evidence for bottlesdevs/Bottles, a Python project with 8,938 GitHub stars. SynthScan examined 82,355 lines of code across 395 source files, recording 1546 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 22.3 (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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1282 finding(s).
Are imports declared and package/API names verified? 76 finding(s).
Are wrappers, guards, and repeated structures necessary? 1196 finding(s).
Which changes need focused human review? 1546 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1546 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 11 | def _add_repo_root_to_syspath() -> None: | CODE |
| LOW | tests/test_funding.py | 8 | def test_paypal_donation_url_contains_selected_amount(): | CODE |
| LOW | tests/test_funding.py | 23 | def test_paypal_donation_url_rejects_amount_below_minimum(): | CODE |
| LOW | bottles/frontend/utils/gtk.py | 73 | def _on_system_setting_changed(self, _display, setting): | CODE |
| LOW | bottles/frontend/utils/gtk.py | 80 | def create_full_width_string_list_factory() -> Gtk.SignalListItemFactory: | CODE |
| LOW | bottles/frontend/utils/localization.py | 71 | def get_ui_language_environment(language): | CODE |
| LOW | bottles/frontend/utils/flatpak.py | 33 | def get_filesystem_override_command(path: str) -> Optional[str]: | CODE |
| LOW | bottles/frontend/utils/flatpak.py | 64 | def show_external_folder_access_dialog(parent, path: str) -> None: | CODE |
| LOW | bottles/frontend/utils/flatpak.py | 119 | def resolve_bottles_directory(parent, path: str) -> Optional[str]: | CODE |
| LOW | bottles/frontend/cli/utils.py | 4 | def _quote_command_placeholder(argument: str) -> str: | CODE |
| LOW | bottles/frontend/windows/dependency_install.py | 69 | def __mark_last_step_completed(self) -> None: | CODE |
| LOW | bottles/frontend/windows/funding.py | 35 | def build_paypal_donation_url(amount: int) -> str: | CODE |
| LOW | bottles/frontend/windows/funding.py | 66 | def do_get_intrinsic_aspect_ratio(self) -> float: | CODE |
| LOW | bottles/frontend/windows/window.py | 353 | def __maybe_prompt_winebridge_update(self): | CODE |
| LOW | bottles/frontend/windows/window.py | 630 | def show_download_preferences_view(self, widget=False): | CODE |
| LOW | bottles/frontend/windows/window.py | 633 | def show_runners_preferences_view(self, widget=False): | CODE |
| LOW | bottles/frontend/windows/window.py | 648 | def __continue_startup_dialogs(self): | CODE |
| LOW | bottles/frontend/windows/window.py | 679 | def __maybe_show_funding_dialog(self): | CODE |
| LOW | bottles/frontend/windows/window.py | 702 | def __maybe_show_eagle_intel_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/umu.py | 1513 | def __update_installed_dependencies(self): | CODE |
| LOW | bottles/frontend/windows/umu.py | 1693 | def __choose_working_directory(self, *_args): | CODE |
| LOW | bottles/frontend/windows/umu.py | 1706 | def __reset_working_directory(self, *_args): | CODE |
| LOW | bottles/frontend/windows/umu.py | 1710 | def __update_working_directory(self): | CODE |
| LOW | bottles/frontend/windows/umu.py | 1852 | def __dependency_tool_changed(self, *_args): | CODE |
| LOW | bottles/frontend/windows/sandbox.py | 123 | def __populate_hidraw_devices(self): | CODE |
| LOW | bottles/frontend/windows/sandbox.py | 162 | def __update_device_permissions(self): | CODE |
| LOW | bottles/frontend/windows/launchoptions.py | 452 | def __update_automatic_backup(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 | 177 | def __populate_combo_and_drives(self): | CODE |
| LOW | bottles/frontend/views/list.py | 372 | def update_component_updates_banner(self) -> None: | CODE |
| LOW | bottles/frontend/views/bottle_versioning.py | 135 | def show_manage_branches_dialog(self, widget): | CODE |
| LOW⚡ | bottles/frontend/views/preferences.py | 714 | def __on_audio_driver_setting_changed(self, *_args): | CODE |
| LOW⚡ | bottles/frontend/views/preferences.py | 717 | def __on_ui_language_setting_changed(self, *_args): | CODE |
| LOW⚡ | bottles/frontend/views/preferences.py | 720 | def __sync_ui_language_selection(self, *_args): | CODE |
| LOW | bottles/frontend/views/preferences.py | 365 | def __update_eagle_security_style(self, *_args): | CODE |
| LOW | bottles/frontend/views/preferences.py | 377 | def __funding_setting_changed(self, switch, _pspec): | CODE |
| LOW | bottles/frontend/views/preferences.py | 407 | def __toggle_component_updates(self, *_args): | CODE |
| LOW | bottles/frontend/views/preferences.py | 593 | def __on_umu_dependency_selected(self, combo, _pspec): | CODE |
| LOW | bottles/frontend/views/preferences.py | 662 | def __on_personal_repo_changed(self, row, repo_name): | CODE |
| LOW | bottles/frontend/views/preferences.py | 678 | def __persist_personal_repositories(self): | CODE |
| LOW | bottles/frontend/views/preferences.py | 690 | def __on_font_scale_setting_changed(self, *_args): | CODE |
| LOW | bottles/frontend/views/preferences.py | 693 | def __sync_font_scale_selection(self, *_args): | CODE |
| LOW | bottles/frontend/views/preferences.py | 731 | def __on_ui_language_selected(self, combo, _pspec): | CODE |
| LOW | bottles/frontend/views/preferences.py | 748 | def __sync_audio_driver_selection(self, *_args): | CODE |
| LOW | bottles/frontend/views/preferences.py | 759 | def __on_audio_driver_selected(self, combo, _pspec): | CODE |
| LOW | bottles/frontend/views/preferences.py | 774 | def __display_unstable_candidate(self, component=["", {"Channel": "unstable"}]): | CODE |
| LOW | bottles/frontend/views/preferences.py | 779 | def __populate_component_list( | CODE |
| LOW | bottles/frontend/views/preferences.py | 836 | def __on_runner_expander_expanded(self, expander, _pspec, runner_struct): | CODE |
| LOW | bottles/frontend/views/preferences.py | 847 | def __populate_runners_helper( | CODE |
| LOW | bottles/frontend/views/preferences.py | 1113 | def __populate_template_cache_rows(self, templates: list[dict]): | CODE |
| LOW | bottles/frontend/views/preferences.py | 1161 | def __format_template_subtitle(self, template: dict) -> str: | CODE |
| LOW | bottles/frontend/views/preferences.py | 1186 | def __confirm_clear_all_caches(self, widget): | CODE |
| LOW | bottles/frontend/views/preferences.py | 1197 | def __confirm_clear_temp_cache(self, widget): | CODE |
| LOW | bottles/frontend/views/preferences.py | 1208 | def __confirm_clear_templates_cache(self, widget): | CODE |
| LOW | bottles/frontend/views/bottle_preferences.py | 398 | def __create_unavailable_popover( | CODE |
| LOW | bottles/frontend/views/bottle_preferences.py | 445 | def __add_unavailable_indicator( | CODE |
| LOW | bottles/frontend/views/bottle_preferences.py | 467 | def __copy_command_to_clipboard(self, _widget, command: str): | CODE |
| 935 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | bottles/frontend/utils/sandbox_guard.py | 115 | except OSError: | CODE |
| HIGH | bottles/frontend/cli/cli.py | 855 | except ValueError: | CODE |
| HIGH | bottles/frontend/views/bottle_versioning.py | 107 | except Exception: | CODE |
| HIGH | bottles/frontend/views/bottle_versioning.py | 186 | except ValueError: | CODE |
| HIGH | bottles/frontend/views/eagle.py | 108 | except: pass | CODE |
| HIGH | bottles/frontend/views/eagle.py | 115 | except: pass | CODE |
| HIGH | bottles/frontend/views/eagle.py | 219 | except: pass | CODE |
| HIGH | bottles/frontend/views/bottle_details.py | 222 | except: # pylint: disable=bare-except | CODE |
| HIGH | …nd/integration/playtime/test_wine_executor_playtime.py | 30 | except Exception: | CODE |
| HIGH | …/backend/integration/playtime/test_playtime_signals.py | 34 | except Exception: | CODE |
| HIGH | bottles/tests/backend/manager/test_playtime.py | 276 | except sqlite3.IntegrityError: | CODE |
| HIGH | bottles/fvs/repo.py | 158 | except FileNotFoundError: | CODE |
| HIGH | bottles/fvs/repo.py | 178 | except FileNotFoundError: | CODE |
| HIGH | bottles/fvs/repo.py | 291 | except ProcessLookupError: | CODE |
| HIGH | bottles/fvs/repo.py | 431 | except ValueError: | CODE |
| HIGH | bottles/fvs/repo.py | 298 | except ProcessLookupError: | CODE |
| HIGH | bottles/backend/globals.py | 56 | except OSError: | CODE |
| HIGH | bottles/backend/globals.py | 144 | except OSError: | CODE |
| HIGH | bottles/backend/identity.py | 714 | except FileNotFoundError: | CODE |
| HIGH | bottles/backend/identity.py | 784 | except AuthenticationError: | CODE |
| HIGH | bottles/backend/identity.py | 1317 | except OSError: | CODE |
| HIGH | bottles/backend/identity.py | 1223 | except FileNotFoundError: | CODE |
| HIGH | bottles/backend/identity.py | 674 | except OSError: | CODE |
| HIGH | bottles/backend/managers/intel.py | 237 | except OSError: | CODE |
| HIGH | bottles/backend/managers/intel.py | 202 | except (OSError, IndexError): | CODE |
| HIGH | bottles/backend/managers/backup.py | 492 | except (OSError, FileNotFoundError): | CODE |
| HIGH | bottles/backend/managers/backup.py | 580 | except FileNotFoundError: | CODE |
| HIGH | bottles/backend/managers/library.py | 286 | except FileNotFoundError: | CODE |
| HIGH | bottles/backend/managers/importer.py | 61 | except OSError: | CODE |
| HIGH | bottles/backend/managers/playtime.py | 157 | except Exception: | CODE |
| HIGH | bottles/backend/managers/playtime.py | 252 | except Exception: | CODE |
| HIGH | bottles/backend/managers/playtime.py | 260 | except Exception: | CODE |
| HIGH | bottles/backend/managers/playtime.py | 249 | except Exception: | CODE |
| HIGH | bottles/backend/managers/sandbox.py | 262 | except (ProcessLookupError, PermissionError, OSError): | CODE |
| HIGH | bottles/backend/managers/eagle.py | 687 | except: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 698 | except: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 728 | except: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 749 | except: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 759 | except: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 772 | except: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 310 | except OSError: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 906 | except: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 316 | except Exception: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 854 | except OSError: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 940 | except: | CODE |
| HIGH | bottles/backend/managers/eagle.py | 239 | except: | CODE |
| HIGH | bottles/backend/managers/versioning.py | 458 | except FVSNothingToCommit: | CODE |
| HIGH | bottles/backend/managers/manager.py | 461 | except Exception: | CODE |
| HIGH | bottles/backend/managers/manager.py | 559 | except Exception: | CODE |
| HIGH | bottles/backend/managers/manager.py | 579 | except Exception: | CODE |
| HIGH | bottles/backend/managers/manager.py | 231 | except Exception: | CODE |
| HIGH | bottles/backend/managers/manager.py | 1353 | except: # safe to ignore | CODE |
| HIGH | bottles/backend/managers/manager.py | 1563 | except (shutil.Error, OSError): | CODE |
| HIGH | bottles/backend/managers/manager.py | 1571 | except (shutil.Error, OSError): | CODE |
| HIGH | bottles/backend/managers/manager.py | 1579 | except (shutil.Error, OSError): | CODE |
| HIGH | bottles/backend/utils/terminal.py | 210 | except Exception: | CODE |
| HIGH | bottles/backend/utils/vulkan.py | 57 | except: | CODE |
| HIGH | bottles/backend/utils/wine.py | 152 | except OSError: | CODE |
| HIGH | bottles/backend/utils/wine.py | 241 | except OSError: | CODE |
| HIGH | bottles/backend/utils/wine.py | 314 | except OSError: | CODE |
| 17 more matches not shown… | ||||
| 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/umu.py | 1 | # umu.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/flatpak.py | 1 | # flatpak.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/lsfgvk.py | 1 | # lsfgvk.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/fileassociations.py | 1 | # fileassociations.py | COMMENT |
| LOW | bottles/frontend/windows/programbackups.py | 1 | # programbackups.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/umu.py | 1 | # umu.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/eagleintel.py | 1 | # eagleintel.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 |
| 77 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/frontend/cli/cli.py | 329 | CODE | |
| LOW | bottles/frontend/cli/cli.py | 621 | CODE | |
| LOW | bottles/frontend/cli/cli.py | 815 | CODE | |
| LOW | bottles/frontend/cli/cli.py | 992 | CODE | |
| LOW | bottles/frontend/windows/crash.py | 81 | CODE | |
| LOW | bottles/frontend/windows/window.py | 93 | CODE | |
| LOW | bottles/frontend/windows/bulkupdate.py | 166 | CODE | |
| LOW | bottles/frontend/windows/umu.py | 837 | CODE | |
| LOW | bottles/frontend/windows/umu.py | 870 | 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 | 847 | CODE | |
| LOW | bottles/frontend/views/details.py | 121 | CODE | |
| LOW | bottles/frontend/views/bottle_preferences.py | 1247 | CODE | |
| LOW | bottles/frontend/views/eagle.py | 205 | CODE | |
| LOW | bottles/frontend/views/eagle.py | 674 | CODE | |
| LOW | bottles/frontend/views/eagle.py | 773 | CODE | |
| LOW | bottles/fvs/repo.py | 73 | CODE | |
| LOW | bottles/fvs/repo.py | 208 | CODE | |
| LOW | bottles/fvs/repo.py | 319 | CODE | |
| LOW | bottles/fvs/repo.py | 370 | CODE | |
| LOW | bottles/fvs/repo.py | 417 | CODE | |
| LOW | bottles/fvs/repo.py | 253 | CODE | |
| LOW | bottles/backend/downloader.py | 60 | CODE | |
| LOW | bottles/backend/cabextract.py | 97 | CODE | |
| LOW | bottles/backend/health.py | 107 | CODE | |
| LOW | bottles/backend/identity.py | 1261 | CODE | |
| LOW | bottles/backend/identity.py | 648 | CODE | |
| LOW | bottles/backend/identity.py | 1017 | CODE | |
| LOW | bottles/backend/identity.py | 1179 | CODE | |
| LOW | bottles/backend/managers/intel.py | 192 | CODE | |
| LOW | bottles/backend/managers/intel.py | 502 | CODE | |
| LOW | bottles/backend/managers/backup.py | 69 | CODE | |
| LOW | bottles/backend/managers/backup.py | 459 | CODE | |
| LOW | bottles/backend/managers/backup.py | 584 | CODE | |
| LOW | bottles/backend/managers/backup.py | 766 | CODE | |
| LOW | bottles/backend/managers/journal.py | 138 | CODE | |
| LOW | bottles/backend/managers/library.py | 135 | CODE | |
| LOW | bottles/backend/managers/library.py | 289 | CODE | |
| LOW | bottles/backend/managers/importer.py | 37 | 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 | 118 | CODE | |
| LOW | bottles/backend/managers/installer.py | 202 | CODE | |
| LOW | bottles/backend/managers/installer.py | 346 | CODE | |
| LOW | bottles/backend/managers/installer.py | 413 | CODE | |
| LOW | bottles/backend/managers/playtime.py | 263 | CODE | |
| LOW | bottles/backend/managers/playtime.py | 754 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 185 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 295 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 452 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 514 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 569 | CODE | |
| LOW | bottles/backend/managers/eagle.py | 473 | CODE | |
| LOW | bottles/backend/managers/versioning.py | 195 | CODE | |
| LOW | bottles/backend/managers/versioning.py | 258 | CODE | |
| LOW | bottles/backend/managers/dependency.py | 313 | CODE | |
| LOW | bottles/backend/managers/dependency.py | 585 | CODE | |
| 58 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/frontend/main.py | 237 | except Exception as e: | CODE |
| LOW | bottles/frontend/main.py | 283 | except Exception as e: | CODE |
| LOW | bottles/frontend/main.py | 318 | 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_dependencies.py | 157 | except Exception as exception: | CODE |
| LOW | bottles/frontend/views/bottle_details.py | 237 | except Exception: | CODE |
| MEDIUM | bottles/frontend/views/bottle_details.py | 231 | def _fetch(): | CODE |
| LOW | bottles/frontend/widgets/program.py | 235 | except Exception as e: | CODE |
| LOW | bottles/frontend/widgets/program.py | 961 | 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 | 163 | except Exception as exception: | CODE |
| LOW | bottles/backend/managers/library.py | 100 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/steamgriddb.py | 65 | except Exception: | CODE |
| MEDIUM | bottles/backend/managers/playtime.py | 257 | def _atexit_shutdown(self) -> None: | 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 | 157 | 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 |
| LOW⚡ | bottles/backend/managers/eagle.py | 542 | except Exception: | CODE |
| LOW⚡ | bottles/backend/managers/eagle.py | 547 | except Exception: | CODE |
| LOW⚡ | bottles/backend/managers/eagle.py | 555 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 139 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 174 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 262 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 290 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 316 | except Exception: | CODE |
| LOW | bottles/backend/managers/eagle.py | 351 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 503 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 510 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 566 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 969 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/eagle.py | 1139 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 178 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 406 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 417 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 429 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 441 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/versioning.py | 468 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/dependency.py | 843 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/dependency.py | 924 | except Exception as e: | CODE |
| LOW | bottles/backend/managers/component.py | 807 | except Exception as e: | CODE |
| 37 more matches not shown… | ||||
| 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 | 59 | CODE | |
| LOW | bottles/frontend/windows/upgradeversioning.py | 18 | CODE | |
| LOW | bottles/frontend/windows/dependency_install.py | 17 | CODE | |
| LOW | bottles/frontend/windows/window.py | 27 | CODE | |
| LOW | bottles/frontend/windows/window.py | 30 | CODE | |
| LOW | bottles/frontend/windows/window.py | 50 | 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/versioning_settings.py | 19 | CODE | |
| LOW | bottles/frontend/views/list.py | 22 | CODE | |
| LOW | bottles/frontend/views/list.py | 26 | CODE | |
| LOW | bottles/frontend/views/bottle_versioning.py | 25 | CODE | |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 32 | CODE | |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 32 | 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 | 31 | 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 | |
| LOW | bottles/backend/umu/__init__.py | 1 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 1 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 1 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 1 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 1 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 1 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 9 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 9 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 13 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 13 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 13 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 13 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 13 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 13 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 21 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 21 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 21 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 21 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 21 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 21 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 21 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 30 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 31 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 31 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 31 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 31 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 37 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 37 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 37 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 37 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 43 | CODE | |
| LOW | bottles/backend/umu/__init__.py | 43 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | bottles/frontend/views/preferences.py | 631 | subprocess.Popen("sleep 1 && bottles & disown", shell=True, env=environment) | CODE |
| HIGH | bottles/tests/fvs/test_repo.py | 31 | (meta_path / "index.json").write_text('{"commits": null}\n') | CODE |
| HIGH | bottles/backend/utils/terminal.py | 80 | f"command -v {terminal[0]} > /dev/null && echo 1 || echo 0", | CODE |
| HIGH | bottles/backend/utils/terminal.py | 80 | f"command -v {terminal[0]} > /dev/null && echo 1 || echo 0", | CODE |
| HIGH | bottles/backend/wine/winecommand.py | 1051 | 'kill "$mangoapp_pid" 2>/dev/null || true\n' | CODE |
| HIGH | bottles/backend/wine/winecommand.py | 1052 | 'wait "$mangoapp_pid" 2>/dev/null || true\n' | CODE |
| 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 | 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 | 215 | # Check if this is an import task | COMMENT |
| LOW | bottles/frontend/views/bottle_details.py | 540 | # 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 | 153 | # Check if some tools are available | COMMENT |
| LOW | bottles/backend/managers/backup.py | 473 | # Check if this directory should be excluded | COMMENT |
| LOW | bottles/backend/managers/manager.py | 1472 | # Check if the path in the bottle config corresponds to the folder name | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/tests/backend/wine/test_executor.py | 270 | CODE | |
| LOW | bottles/backend/managers/sandbox.py | 43 | CODE | |
| LOW | bottles/backend/managers/manager.py | 1766 | CODE | |
| LOW | bottles/backend/utils/vulkan.py | 119 | CODE | |
| LOW | bottles/backend/models/config.py | 344 | CODE | |
| LOW | bottles/backend/wine/xcopy.py | 14 | CODE | |
| LOW | bottles/backend/wine/wineprogram.py | 89 | CODE | |
| LOW | bottles/backend/wine/wineprogram.py | 39 | CODE | |
| LOW | bottles/backend/wine/msiexec.py | 33 | CODE | |
| LOW | bottles/backend/wine/start.py | 15 | CODE | |
| LOW | bottles/backend/wine/explorer.py | 13 | CODE | |
| LOW | bottles/backend/wine/executor.py | 74 | CODE | |
| LOW | bottles/backend/wine/winecommand.py | 391 | 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 | 98 | # share_host_ro: bool = True # TODO: implement, requires the Bottles runtime (next) for a minimal sandbox | COMMENT |
| LOW⚡ | bottles/backend/models/config.py | 99 | # share_gpu: bool = True # TODO: implement | COMMENT |
| LOW⚡ | bottles/backend/models/config.py | 100 | # share_paths_ro: List[str] = field(default_factory=lambda: []) # TODO: implement | COMMENT |
| LOW⚡ | bottles/backend/models/config.py | 101 | # share_paths_rw: List[str] = field(default_factory=lambda: []) # TODO: implement | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | bottles/tests/backend/test_identity.py | 1491 | "account-id", "user@example.com", "Test", "User", "Test User", | CODE |
| LOW⚡ | bottles/tests/backend/test_identity.py | 1497 | assert store.accounts("client", "organizations") == [("account-id", "user@example.com")] | CODE |
| LOW | bottles/tests/backend/test_identity.py | 95 | def _id_token(client_id, nonce="nonce", username="user@example.com"): | CODE |
| LOW | bottles/tests/backend/test_identity.py | 547 | requested_client, "organizations", "openid profile offline_access", "user@example.com" | CODE |
| LOW | bottles/tests/backend/test_identity.py | 556 | assert query["login_hint"] == ["user@example.com"] | CODE |
| LOW | bottles/tests/backend/test_identity.py | 824 | "username": "user@example.com", | CODE |
| LOW | bottles/tests/backend/test_identity.py | 1145 | "user@example.com", | CODE |
| LOW | bottles/tests/backend/test_identity.py | 1186 | "user@example.com", | CODE |
| LOW | bottles/tests/backend/test_identity.py | 1245 | "user@example.com", | CODE |
| LOW | bottles/tests/backend/test_identity.py | 1322 | "user@example.com", | CODE |
| LOW | bottles/tests/backend/test_identity.py | 1429 | return [("account-id", "user@example.com")] | CODE |
| LOW | bottles/tests/backend/test_identity.py | 1442 | + struct.pack("<I", 16) + b"user@example.com" | CODE |
| 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 | 253 | def update_bottles_list(self, *args, refresh_updates=True) -> None: | CODE |
| LOW | bottles/frontend/views/list.py | 372 | def update_component_updates_banner(self) -> None: | CODE |
| LOW | bottles/frontend/views/new_bottle_dialog.py | 273 | def update_output(self, text: str) -> None: | CODE |
| LOW | bottles/backend/managers/steam.py | 288 | def _set_shortcut_value(shortcut: dict, key: str, value) -> None: | CODE |
| LOW | bottles/backend/utils/gsettings_stub.py | 23 | def set_string(key: str, value: str) -> None: | CODE |
| LOW | bottles/backend/utils/manager.py | 215 | def set_external_runner_paths(runners: dict[str, str]) -> None: | CODE |
| LOW | bottles/backend/umu/__init__.py | 45 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bottles/frontend/views/bottle_preferences.py | 1007 | def run_task(status=True): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bottles/backend/managers/eagle.py | 570 | """Perform comprehensive PE analysis with YARA pattern matching.""" | STRING |