Lutris desktop client
This report presents the forensic synthetic code analysis of lutris/lutris, a Python project with 10,085 GitHub stars. SynthScan v2.0 examined 76,264 lines of code across 372 source files, recording 1127 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 19.2 places this repository in the Moderate 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).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
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 1127 distinct pattern matches across 17 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 | lutris/game.py | 147 | def create_empty_service_game(db_game: dict[str, str | int], service: Any) -> Any: | CODE |
| LOW | lutris/game.py | 1208 | def _get_move_target_directory(self, new_location: str) -> str: | CODE |
| LOW | lutris/cache.py | 58 | def has_valid_custom_cache_path() -> bool: | CODE |
| LOW | lutris/cache.py | 74 | def validate_custom_cache_path(cache_path: str) -> tuple[bool, str | None]: | CODE |
| LOW | lutris/runtime.py | 182 | def create_component_updaters(self) -> list[ComponentUpdater]: | CODE |
| LOW⚡ | lutris/api.py | 46 | def get_runtime_versions_date() -> float: | CODE |
| LOW⚡ | lutris/api.py | 50 | def get_runtime_versions_date_time_ago() -> str: | CODE |
| LOW⚡ | lutris/api.py | 57 | def check_stale_runtime_versions() -> bool: | CODE |
| LOW | lutris/api.py | 72 | def download_runtime_versions() -> RuntimeVersionsDict: | CODE |
| LOW | lutris/api.py | 213 | def normalize_version_architecture(version_name: str) -> str: | CODE |
| LOW | lutris/api.py | 220 | def format_version_architecture(base_version: str, arch: str | None = None) -> str: | CODE |
| LOW | lutris/api.py | 237 | def parse_version_architecture(version_name: str) -> tuple[str, str | None]: | CODE |
| LOW | lutris/api.py | 248 | def get_runner_version_from_cache(runner_name: str, version: str | None) -> RunnerVersionDict | None: | CODE |
| LOW | lutris/api.py | 266 | def iter_get_from_api_candidates( | CODE |
| LOW | lutris/api.py | 299 | def get_runner_version_from_api(runner_name: str, version: str | None) -> RunnerVersionDict | None: | CODE |
| LOW | lutris/api.py | 311 | def get_default_runner_version_info(runner_name: str, version: str | None = None) -> RunnerVersionDict | None: | CODE |
| LOW | lutris/api.py | 354 | def get_game_service_api_page(service: str, appids: Collection[str] | None, page: int | str = 1) -> GamesPageDict: | CODE |
| LOW | lutris/exception_backstops.py | 132 | def _error_handling_add_emission_hook( | CODE |
| LOW | lutris/exception_backstops.py | 152 | def _error_handling_timeout_add(interval: int, handler: AnyCallable, *args: Any, **kwargs: Any) -> Any: | CODE |
| LOW | lutris/game_actions.py | 347 | def on_execute_script_clicked(self, _widget: Gtk.Widget) -> None: | CODE |
| LOW | lutris/game_actions.py | 367 | def on_edit_game_configuration(self, _widget: Gtk.Widget) -> None: | CODE |
| LOW | lutris/game_actions.py | 401 | def on_create_steam_bigpicture_shortcut(self, *_args: Any) -> None: | CODE |
| LOW | lutris/game_actions.py | 413 | def on_create_desktop_shortcut(self, *_args: Any) -> None: | CODE |
| LOW | lutris/game_actions.py | 429 | def on_remove_desktop_shortcut(self, *_args: Any) -> None: | CODE |
| LOW | lutris/game_actions.py | 492 | def _select_game_launch_config_name(self, game: Game) -> str | None: | CODE |
| LOW | lutris/settings.py | 81 | def get_lutris_directory_settings(directory: str) -> dict[str, str]: | CODE |
| LOW | lutris/settings.py | 99 | def set_lutris_directory_settings(directory: str, settings: dict[str, str], merge: bool = True) -> bool: | CODE |
| LOW | lutris/search.py | 293 | def get_game_lastplayed_duration_ago(db_game): | CODE |
| LOW | lutris/search.py | 358 | def get_categorized_predicate(self, categorized: bool | None) -> SearchPredicate: | CODE |
| LOW | lutris/search.py | 377 | def get_category_flag_predicate(self, category: str, tag: str, in_category: bool | None = True) -> FlagPredicate: | CODE |
| LOW | lutris/monitored_command.py | 28 | def get_wrapper_script_location() -> str: | CODE |
| LOW | lutris/monitored_command.py | 232 | def log_handler_console_output(self, line: str) -> None: | CODE |
| LOW | lutris/runner_interpreter.py | 135 | def _get_gamescope_fsr_option(): | CODE |
| LOW | lutris/database/categories.py | 59 | def normalized_category_names(name: str, subname_allowed: bool = False) -> list[str]: | CODE |
| LOW | lutris/database/categories.py | 78 | def get_game_ids_for_categories( | CODE |
| LOW | lutris/database/categories.py | 121 | def get_uncategorized_game_ids() -> set[str]: | CODE |
| LOW | lutris/database/categories.py | 198 | def remove_category_from_game(game_id: str, category_id: int, no_signal: bool = False) -> None: | CODE |
| LOW | lutris/database/games.py | 125 | def get_all_installed_game_for_service(service: str) -> dict[str, DbGameDict]: | CODE |
| LOW | lutris/util/downloader.py | 265 | def _discard_persistent_state(self) -> None: # noqa: B027 | CODE |
| LOW | lutris/util/gog.py | 66 | def convert_gog_config_to_lutris(gog_config, gog_game_path): | CODE |
| LOW | lutris/util/gog.py | 114 | def find_installed_product_ids(install_dir): | CODE |
| LOW | lutris/util/tokenization.py | 129 | def get_cleaned_token_sequence(self, stop_function: Callable[[TokenReader], bool]) -> str | None: | CODE |
| LOW | lutris/util/sniper.py | 46 | def get_sniper_host_lib_paths() -> list[str]: | CODE |
| LOW | lutris/util/sniper.py | 85 | def get_sniper_ld_library_path() -> str: | CODE |
| LOW | lutris/util/jobs.py | 199 | def schedule_repeating_at_idle( | CODE |
| LOW | lutris/util/process.py | 63 | def get_children_pids_of_thread(self, tid): | CODE |
| LOW | lutris/util/moddb.py | 18 | def _try_import_moddb_library(): | CODE |
| LOW | lutris/util/moddb.py | 60 | def _get_html_and_resolve_mirrors_list(self, moddb_permalink_url): | CODE |
| LOW | lutris/util/linux.py | 176 | def has_enough_file_descriptors(self) -> bool: | CODE |
| LOW | lutris/util/linux.py | 455 | def get_missing_requirement_libs(self, req: str) -> list[list[str]]: | CODE |
| LOW | lutris/util/linux.py | 536 | def get_default_runner_wine_version() -> str: | CODE |
| LOW | lutris/util/linux.py | 635 | def get_required_default_terminal() -> str: | CODE |
| LOW | lutris/util/game_finder.py | 15 | def find_linux_game_executable(path, make_executable=False): | CODE |
| LOW | lutris/util/game_finder.py | 78 | def find_windows_game_executable(path): | CODE |
| LOW | lutris/util/library_sync.py | 225 | def delete_from_remote_library(self, games): | CODE |
| LOW | lutris/util/gog_downloader.py | 118 | def _discard_persistent_state(self) -> None: | CODE |
| LOW | lutris/util/gog_downloader.py | 454 | def _write_from_full_response(self, response: requests.Response, start: int, end: int) -> None: | CODE |
| LOW | lutris/util/steam/config.py | 170 | def get_entry_case_insensitive(config_dict: dict[str, Any], path: list[str]) -> Any: | CODE |
| LOW | lutris/util/steam/config.py | 196 | def get_entry_case_insensitive(library_dict: dict[str, Any], path: list[str]) -> Any: | CODE |
| LOW | lutris/util/steam/appmanifest.py | 109 | def get_appmanifest_from_appid(steamapps_path: str, appid: str) -> AppManifest | None: | CODE |
| 550 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lutris/util/download_progress.py | 47 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/download_progress.py | 49 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/download_progress.py | 109 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/download_progress.py | 111 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/download_progress.py | 131 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/download_progress.py | 133 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/download_progress.py | 186 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/download_progress.py | 188 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/download_progress.py | 204 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/download_progress.py | 206 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/downloader.py | 241 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/util/downloader.py | 243 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lutris/gui/widgets/download_collection_progress_box.py | 147 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lutris/gui/widgets/download_collection_progress_box.py | 149 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lutris/gui/widgets/download_collection_progress_box.py | 156 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lutris/gui/widgets/download_collection_progress_box.py | 158 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lutris/gui/widgets/download_collection_progress_box.py | 287 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lutris/gui/widgets/download_collection_progress_box.py | 289 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lutris/gui/widgets/download_collection_progress_box.py | 297 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | lutris/gui/widgets/download_collection_progress_box.py | 299 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 122 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 124 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 176 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 178 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 251 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 253 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 273 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 275 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 383 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 385 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 414 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | lutris/gui/widgets/download_collection_progress_box.py | 416 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tests/_test_cloud_sync_progress.py | 19 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/_test_cloud_sync_progress.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/_test_cloud_sync_progress.py | 40 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/_test_cloud_sync_progress.py | 42 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/util/_test_collection_progress.py | 199 | # ── Tests: Initialisation ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/util/_test_collection_progress.py | 217 | # ── Tests: _create_downloader ─────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/util/_test_collection_progress.py | 318 | # ── Tests: Aggregate progress ──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/util/_test_collection_progress.py | 378 | # ── Tests: Start / prefetch ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/util/_test_collection_progress.py | 20 | # ── Load the target module in isolation ────────────────────────────── | COMMENT |
| MEDIUM | tests/util/_test_collection_progress.py | 109 | # ── Helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/util/_test_collection_progress.py | 159 | # ── Fixture ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/util/_test_collection_progress.py | 181 | # ── Tests: _ActiveDownload ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/util/_test_collection_progress.py | 276 | # ── Tests: _pop_next_downloadable_file ─────────────────────────────── | COMMENT |
| MEDIUM | tests/util/_test_collection_progress.py | 341 | # ── Tests: File labels ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/util/_test_collection_progress.py | 456 | # ── Tests: Progress callback ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/util/_test_collection_progress.py | 591 | # ── Tests: Cancel ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/util/_test_collection_progress.py | 629 | # ── Tests: Edge cases ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/util/_test_gog_downloader.py | 594 | # ================================================================== | COMMENT |
| MEDIUM⚡ | tests/util/_test_gog_downloader.py | 596 | # ================================================================== | COMMENT |
| MEDIUM⚡ | tests/util/_test_download_progress.py | 24 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/util/_test_download_progress.py | 26 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/util/_test_download_progress.py | 44 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/util/_test_download_progress.py | 46 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/util/_test_download_progress.py | 77 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/util/_test_download_progress.py | 79 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/util/_test_download_progress.py | 118 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/util/_test_download_progress.py | 120 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/util/_test_download_progress.py | 151 | # ------------------------------------------------------------------ | COMMENT |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/startup.py | 91 | except Exception: | CODE |
| LOW | lutris/config.py | 276 | except Exception as ex: | CODE |
| LOW | lutris/game.py | 798 | except Exception as ex: | CODE |
| LOW | lutris/game.py | 1092 | except Exception as ex: | CODE |
| LOW | lutris/runtime.py | 234 | except Exception as ex: | CODE |
| LOW | lutris/api.py | 471 | except Exception as ex: | CODE |
| MEDIUM | lutris/api.py | 50 | def get_runtime_versions_date_time_ago() -> str: | CODE |
| LOW | lutris/exception_backstops.py | 40 | except Exception as ex: | CODE |
| LOW | lutris/exception_backstops.py | 86 | except Exception as ex: | CODE |
| LOW | lutris/settings.py | 94 | except Exception as ex: | CODE |
| LOW | lutris/settings.py | 123 | except Exception as ex: | CODE |
| LOW | lutris/style_manager.py | 69 | except Exception as ex: | CODE |
| LOW | lutris/style_manager.py | 80 | except Exception as ex: | CODE |
| MEDIUM | lutris/style_manager.py | 60 | def _new_for_bus_cb(self, obj, result): | CODE |
| MEDIUM | lutris/style_manager.py | 72 | def _call_cb(self, obj, result): | CODE |
| LOW | lutris/util/cookies.py | 76 | except Exception as err: | CODE |
| LOW | lutris/util/system.py | 437 | except Exception as ex: | CODE |
| LOW | lutris/util/gogdl.py | 102 | except Exception: | CODE |
| LOW | lutris/util/download_progress.py | 222 | except Exception: | CODE |
| LOW | lutris/util/downloader.py | 412 | except Exception as ex: | CODE |
| LOW | lutris/util/display.py | 126 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | lutris/util/display.py | 394 | except Exception as ex: | CODE |
| LOW | lutris/util/display.py | 421 | except Exception as ex: | CODE |
| LOW | lutris/util/jobs.py | 78 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | lutris/util/portals.py | 92 | except Exception as ex: | CODE |
| LOW | lutris/util/portals.py | 120 | except Exception as ex: | CODE |
| MEDIUM | lutris/util/portals.py | 41 | def _new_for_bus_cb(self, obj, result): | CODE |
| LOW | lutris/util/linux.py | 284 | except Exception as ex: | CODE |
| LOW | lutris/util/linux.py | 543 | except Exception as ex: | CODE |
| LOW | lutris/util/gog_downloader.py | 187 | except Exception as ex: | CODE |
| LOW | lutris/util/gog_downloader.py | 305 | except Exception as ex: | CODE |
| LOW | lutris/util/gog_downloader.py | 325 | except Exception as ex: | CODE |
| LOW | lutris/util/gog_downloader.py | 369 | except Exception: | CODE |
| LOW | lutris/util/gog_downloader.py | 436 | except Exception as ex: | CODE |
| LOW | lutris/util/steam/shortcut.py | 48 | except Exception as ex: | CODE |
| LOW | lutris/util/steam/shortcut.py | 78 | except Exception as ex: | CODE |
| MEDIUM | lutris/util/steam/shortcut.py | 45 | def vdf_file_exists() -> bool: | CODE |
| LOW | lutris/util/mame/database.py | 65 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | lutris/util/dolphin/cache_reader.py | 96 | except Exception as ex: | CODE |
| LOW⚡ | lutris/util/wine/prefix.py | 236 | except Exception as ex: | CODE |
| LOW | lutris/util/wine/prefix.py | 294 | except Exception as ex: | CODE |
| LOW | lutris/util/wine/prefix.py | 313 | except Exception as ex: | CODE |
| MEDIUM | lutris/util/wine/prefix.py | 226 | def _get_desktop_integration_assignment(self): | CODE |
| LOW | lutris/util/wine/registry.py | 106 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | lutris/util/wine/wine.py | 37 | except Exception as ex: | CODE |
| LOW | lutris/util/ubisoft/client.py | 45 | except Exception as ex: | CODE |
| LOW | lutris/util/ubisoft/client.py | 82 | except Exception: | CODE |
| LOW | lutris/util/ubisoft/client.py | 91 | except Exception as ex: | CODE |
| LOW | lutris/util/ubisoft/client.py | 286 | except Exception as ex: # 412: no stats available for this user | CODE |
| LOW | lutris/util/ubisoft/client.py | 307 | except Exception: | CODE |
| MEDIUM | lutris/util/ubisoft/client.py | 42 | def request(self, method, url, *args, **kwargs): | CODE |
| MEDIUM | lutris/util/ubisoft/client.py | 304 | def get_subscription(self): | CODE |
| LOW⚡ | lutris/util/ubisoft/helpers.py | 60 | except Exception as e: | CODE |
| LOW⚡ | lutris/util/ubisoft/helpers.py | 74 | except Exception as e: | CODE |
| MEDIUM | lutris/util/ubisoft/helpers.py | 52 | def _read_status_from_state_file(game_path): | CODE |
| LOW | lutris/util/graphics/drivers.py | 87 | except Exception as ex: | CODE |
| LOW | lutris/gui/installerwindow.py | 829 | except Exception as err: | CODE |
| LOW | lutris/gui/installerwindow.py | 877 | except Exception as err: | CODE |
| MEDIUM | lutris/gui/installerwindow.py | 825 | def on_continue(_button): | CODE |
| MEDIUM | lutris/gui/installerwindow.py | 873 | def wrapped_callback(*args, **kwargs): | CODE |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/startup.py | 52 | CODE | |
| LOW | lutris/startup.py | 74 | CODE | |
| LOW | lutris/config.py | 265 | CODE | |
| LOW | lutris/runtime.py | 200 | CODE | |
| LOW | lutris/runtime.py | 219 | CODE | |
| LOW | lutris/api.py | 118 | CODE | |
| LOW | lutris/exception_backstops.py | 52 | CODE | |
| LOW | lutris/game_actions.py | 95 | CODE | |
| LOW | lutris/settings.py | 81 | CODE | |
| LOW | lutris/search.py | 66 | CODE | |
| LOW | lutris/search.py | 301 | CODE | |
| LOW | lutris/monitored_command.py | 141 | CODE | |
| LOW | lutris/database/games.py | 48 | CODE | |
| LOW | lutris/util/cookies.py | 12 | CODE | |
| LOW | lutris/util/system.py | 527 | CODE | |
| LOW | lutris/util/savesync.py | 250 | CODE | |
| LOW | lutris/util/downloader.py | 368 | CODE | |
| LOW | lutris/util/datapath.py | 11 | CODE | |
| LOW | lutris/util/tokenization.py | 18 | CODE | |
| LOW | lutris/util/tokenization.py | 29 | CODE | |
| LOW | lutris/util/tokenization.py | 64 | CODE | |
| LOW | lutris/util/download_cache.py | 193 | CODE | |
| LOW | lutris/util/sniper.py | 46 | CODE | |
| LOW | lutris/util/libretro.py | 29 | CODE | |
| LOW | lutris/util/linux.py | 122 | CODE | |
| LOW | lutris/util/linux.py | 385 | CODE | |
| LOW | lutris/util/game_finder.py | 15 | CODE | |
| LOW | lutris/util/game_finder.py | 78 | CODE | |
| LOW | lutris/util/extract.py | 20 | CODE | |
| LOW | lutris/util/extract.py | 114 | CODE | |
| LOW | lutris/util/extract.py | 139 | CODE | |
| LOW | lutris/util/extract.py | 172 | CODE | |
| LOW | lutris/util/library_sync.py | 151 | CODE | |
| LOW | lutris/util/strings.py | 46 | CODE | |
| LOW | lutris/util/strings.py | 299 | CODE | |
| LOW | lutris/util/strings.py | 272 | CODE | |
| LOW | lutris/util/gog_downloader.py | 152 | CODE | |
| LOW | lutris/util/gog_downloader.py | 192 | CODE | |
| LOW | lutris/util/gog_downloader.py | 372 | CODE | |
| LOW | lutris/util/steam/config.py | 230 | CODE | |
| LOW | lutris/util/steam/log.py | 8 | CODE | |
| LOW | lutris/util/steam/vdf/__init__.py | 64 | CODE | |
| LOW | lutris/util/steam/vdf/__init__.py | 297 | CODE | |
| LOW | lutris/util/steam/vdf/__init__.py | 402 | CODE | |
| LOW | lutris/util/amazon/protobuf_decoder.py | 212 | CODE | |
| LOW | lutris/util/mame/ini.py | 36 | CODE | |
| LOW | lutris/util/dolphin/cache_reader.py | 73 | CODE | |
| LOW | lutris/util/wine/prefix.py | 330 | CODE | |
| LOW | lutris/util/wine/fsync.py | 264 | CODE | |
| LOW | lutris/util/wine/cabinstall.py | 73 | CODE | |
| LOW | lutris/util/wine/cabinstall.py | 118 | CODE | |
| LOW | lutris/util/wine/cabinstall.py | 168 | CODE | |
| LOW | lutris/util/wine/registry.py | 111 | CODE | |
| LOW | lutris/util/wine/dll_manager.py | 119 | CODE | |
| LOW | lutris/util/wine/dxvk.py | 34 | CODE | |
| LOW | lutris/util/wine/proton.py | 165 | CODE | |
| LOW | lutris/util/ubisoft/client.py | 68 | CODE | |
| LOW | lutris/util/ubisoft/client.py | 208 | CODE | |
| LOW | lutris/util/ubisoft/parser.py | 127 | CODE | |
| LOW | lutris/util/ubisoft/parser.py | 156 | CODE | |
| 63 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/game.py | 46 | CODE | |
| LOW | lutris/game.py | 47 | CODE | |
| LOW | lutris/exception_backstops.py | 12 | CODE | |
| LOW | lutris/game_actions.py | 39 | CODE | |
| LOW | lutris/game_actions.py | 40 | CODE | |
| LOW | lutris/monitored_command.py | 23 | CODE | |
| LOW | lutris/monitored_command.py | 25 | CODE | |
| LOW | lutris/sysoptions.py | 16 | CODE | |
| LOW | lutris/util/log.py | 12 | CODE | |
| LOW | lutris/util/tokenization.py | 1 | CODE | |
| LOW | lutris/util/display.py | 3 | CODE | |
| LOW | lutris/util/display.py | 39 | CODE | |
| LOW | lutris/util/jobs.py | 12 | CODE | |
| LOW | lutris/util/http.py | 21 | CODE | |
| LOW | lutris/util/http.py | 22 | CODE | |
| LOW | lutris/util/http.py | 23 | CODE | |
| LOW | lutris/util/standalone_scripts.py | 8 | CODE | |
| LOW | lutris/util/standalone_scripts.py | 9 | CODE | |
| LOW | lutris/util/discord/__init__.py | 5 | CODE | |
| LOW | lutris/util/steam/shortcut.py | 18 | CODE | |
| LOW | lutris/util/wine/proton.py | 18 | CODE | |
| LOW | lutris/gui/application.py | 66 | CODE | |
| LOW | lutris/gui/application.py | 67 | CODE | |
| LOW | lutris/gui/application.py | 68 | CODE | |
| LOW | lutris/gui/application.py | 69 | CODE | |
| LOW | lutris/gui/config/game_common.py | 28 | CODE | |
| LOW | lutris/gui/config/add_game_dialog.py | 8 | CODE | |
| LOW | lutris/gui/config/add_game_dialog.py | 10 | CODE | |
| LOW | lutris/gui/config/widget_generator.py | 20 | CODE | |
| LOW | lutris/gui/dialogs/log.py | 15 | CODE | |
| LOW | lutris/gui/dialogs/log.py | 16 | CODE | |
| LOW | lutris/gui/dialogs/__init__.py | 23 | CODE | |
| LOW | lutris/gui/dialogs/__init__.py | 24 | CODE | |
| LOW | lutris/gui/dialogs/cloud_sync_progress.py | 19 | CODE | |
| LOW | lutris/gui/dialogs/delegates.py | 15 | CODE | |
| LOW | lutris/gui/dialogs/delegates.py | 17 | CODE | |
| LOW | lutris/gui/dialogs/webconnect_dialog.py | 10 | CODE | |
| LOW | lutris/gui/views/store.py | 7 | CODE | |
| LOW | lutris/gui/views/store.py | 8 | CODE | |
| LOW | lutris/gui/widgets/download_collection_progress_box.py | 16 | CODE | |
| LOW | lutris/gui/widgets/game_bar.py | 15 | CODE | |
| LOW | lutris/gui/widgets/game_bar.py | 16 | CODE | |
| LOW | lutris/gui/widgets/utils.py | 17 | CODE | |
| LOW | lutris/gui/widgets/utils.py | 18 | CODE | |
| LOW | lutris/runners/runner.py | 3 | CODE | |
| LOW | lutris/runners/wine.py | 25 | CODE | |
| LOW | lutris/runners/wine.py | 25 | CODE | |
| LOW | lutris/runners/wine.py | 25 | CODE | |
| LOW | lutris/runners/wine.py | 25 | CODE | |
| LOW | lutris/runners/wine.py | 25 | CODE | |
| LOW | lutris/runners/wine.py | 73 | CODE | |
| LOW | lutris/runners/wine.py | 74 | CODE | |
| LOW | lutris/runners/__init__.py | 49 | CODE | |
| LOW | lutris/runners/dosbox.py | 10 | CODE | |
| LOW | lutris/runners/dosbox.py | 10 | CODE | |
| LOW | lutris/services/zoom.py | 25 | CODE | |
| LOW | lutris/services/gog.py | 30 | CODE | |
| LOW | lutris/services/__init__.py | 31 | CODE | |
| LOW | lutris/services/service_media.py | 15 | CODE | |
| LOW | lutris/services/gog_cloud_hooks.py | 28 | CODE | |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/config.py | 171 | def update_cascaded_config(self) -> None: | CODE |
| LOW | lutris/config.py | 216 | def update_raw_config(self) -> None: | CODE |
| LOW | lutris/game.py | 198 | def update_game_categories(self, added_category_names: list[str], removed_category_names: list[str]) -> None: | CODE |
| LOW | lutris/game.py | 378 | def set_desktop_compositing(self, enable: bool) -> None: | CODE |
| LOW | lutris/game.py | 494 | def set_platform_from_runner(self) -> None: | CODE |
| LOW | lutris/runtime.py | 284 | def set_updated_at(self) -> None: | CODE |
| LOW | lutris/monitored_command.py | 126 | def set_log_buffer(self, log_buffer: "Gtk.TextBuffer | None") -> None: | CODE |
| LOW | lutris/style_manager.py | 145 | def _update_is_dark(self) -> None: | CODE |
| LOW | lutris/util/path_cache.py | 115 | def update_all_missing(self) -> None: | CODE |
| LOW | lutris/util/path_cache.py | 123 | def update_one_missing(self, game_id: str, path: str | None = None) -> None: | CODE |
| LOW | lutris/util/system.py | 655 | def update_desktop_icons() -> None: | CODE |
| LOW | lutris/util/system.py | 730 | def set_keyboard_layout(layout: str) -> None: | CODE |
| LOW | lutris/util/log.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | lutris/util/download_cache.py | 61 | def update_cache_lock(file_path: str, state: CacheState) -> None: | CODE |
| LOW | lutris/util/display.py | 100 | def set_resolution(resolution: str | Iterable[Output]) -> None: | CODE |
| LOW | lutris/util/display.py | 373 | def set_dbus_iface(self, name: str, path: str, interface: str, bus_type: Gio.BusType = Gio.BusType.SESSION) -> None: | CODE |
| LOW | lutris/util/discord/__init__.py | 3 | __all__ = ["client"] | CODE |
| LOW | lutris/util/steam/shortcut.py | 207 | def set_artwork(game: "Game") -> None: | CODE |
| LOW | lutris/util/wine/extract_icon.py | 198 | __all__ = ["IconExtractor", "IconExtractorError", "InvalidIconDefinitionError", "NoIconsAvailableError"] | CODE |
| LOW | lutris/util/wine/wine.py | 87 | def set_drive_path(prefix: str, letter: str, path: str) -> None: | CODE |
| LOW | lutris/util/wine/proton.py | 202 | def update_proton_env(wine_path: str, env: dict[str, str], game_id: str = DEFAULT_GAMEID, umu_log: str = "") -> None: | CODE |
| LOW | lutris/util/graphics/xrandr.py | 239 | def set_resolution(resolution: str | Iterable[Output]) -> None: | CODE |
| LOW | lutris/util/graphics/displayconfig.py | 655 | def set_resolution(self, resolution: str | list[DisplayConfig]) -> None: | CODE |
| LOW | lutris/gui/lutriswindow.py | 589 | def update_missing_games_sidebar_row(self) -> None: | CODE |
| LOW | lutris/gui/lutriswindow.py | 815 | def update_store(self) -> None: | CODE |
| LOW | lutris/gui/addgameswindow.py | 251 | def update_search_results(self) -> None: | CODE |
| LOW | lutris/gui/application.py | 1122 | def set_tray_icon(self) -> None: | STRING |
| LOW | lutris/gui/config/boxes.py | 280 | def update_option_container(self, option, container: Gtk.Container, wrapper: Gtk.Container) -> None: | CODE |
| LOW⚡ | lutris/gui/config/game_common.py | 104 | def set_header_bar_widgets_visibility(self, value: bool) -> None: | CODE |
| LOW⚡ | lutris/gui/config/game_common.py | 108 | def update_advanced_switch_visibility(self, current_page_index: int) -> None: | CODE |
| LOW⚡ | lutris/gui/config/game_common.py | 114 | def update_search_entry_visibility(self, current_page_index: int) -> None: | CODE |
| LOW⚡ | lutris/gui/config/game_common.py | 283 | def _set_advanced_options_visible(self, value: bool) -> None: | CODE |
| LOW⚡ | lutris/gui/config/game_common.py | 293 | def _set_filter(self, value: str) -> None: | CODE |
| LOW | lutris/gui/config/widget_generator.py | 284 | def update_widgets(self) -> None: | CODE |
| LOW | lutris/gui/dialogs/uninstall_dialog.py | 76 | def update_deletability(self) -> None: | CODE |
| LOW | lutris/gui/dialogs/uninstall_dialog.py | 102 | def update_folder_sizes(self, new_games: list[Game]) -> None: | CODE |
| LOW | lutris/gui/dialogs/uninstall_dialog.py | 123 | def update_subtitle(self) -> None: | CODE |
| LOW | lutris/gui/dialogs/uninstall_dialog.py | 153 | def update_message(self) -> None: | CODE |
| LOW | lutris/gui/dialogs/uninstall_dialog.py | 195 | def update_all_checkboxes(self) -> None: | CODE |
| LOW⚡ | lutris/gui/dialogs/uninstall_dialog.py | 231 | def update_uninstall_button(self) -> None: | CODE |
| LOW | lutris/gui/widgets/progress_box.py | 95 | def update_progress(self) -> None: | CODE |
| LOW | lutris/gui/widgets/progress_box.py | 116 | def _set_label(self, markup: str) -> None: | CODE |
| LOW | lutris/gui/widgets/gi_composites.py | 38 | __all__ = ["GtkTemplate"] | CODE |
| LOW | lutris/runners/__init__.py | 3 | __all__ = [ | CODE |
| LOW | lutris/installer/interpreter.py | 414 | def _update_cache_locks_state(self, state_name: str) -> None: | CODE |
| LOW | lutris/services/gog_cloud.py | 780 | def set_sync_timestamp(self, game_id: str, location_name: str, timestamp: float) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | lutris/runners/runner.py | 0 | return the working directory to use when running the game. | STRING |
| HIGH | lutris/runners/wine.py | 0 | return the working directory to use when running the game. | STRING |
| HIGH | lutris/runners/dosbox.py | 0 | return the working directory to use when running the game. | STRING |
| HIGH | lutris/runners/linux.py | 0 | return the working directory to use when running the game. | STRING |
| HIGH | lutris/runners/steam.py | 0 | return the working directory to use when running the game. | STRING |
| HIGH | lutris/services/zoom.py | 0 | return whether the user is authenticated and if the service is available | STRING |
| HIGH | lutris/services/gog.py | 0 | return whether the user is authenticated and if the service is available | STRING |
| HIGH | lutris/services/amazon.py | 0 | return whether the user is authenticated and if the service is available | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | lutris/util/gogdl.py | 177 | Run a gogdl command as a subprocess. Args: command: "download", "update", "repair", or "info" game_ | STRING |
| HIGH | lutris/util/wine/fsync.py | 201 | Invoke the Linux futex() syscall with the provided arguments. Args: See the description of the fute | STRING |
| HIGH | lutris/util/wine/fsync.py | 356 | Invoke the Linux futex_waitv() syscall with the provided arguments. Args: See the descripti | STRING |
| HIGH | lutris/services/gog_cloud.py | 155 | Make an authenticated request to the cloud storage API. Args: method: HTTP method (GET, PUT, DELETE | STRING |
| HIGH | lutris/services/gog_cloud.py | 440 | Get the game-specific clientId and clientSecret from the build manifest. GOG cloud storage requires game-scoped cre | STRING |
| HIGH | lutris/services/gog_cloud.py | 497 | Exchange a GOG refresh token for a game-scoped access token. The cloud storage API requires a token scoped to the g | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/util/gog_downloader.py | 209 | # Step 1: Resolve URL (follow redirects) and check capabilities | COMMENT |
| LOW | lutris/util/gog_downloader.py | 225 | # Step 2: Check for resumable progress | COMMENT |
| LOW | lutris/util/gog_downloader.py | 256 | # Step 3: Compute ranges (fresh or from progress) | COMMENT |
| LOW | lutris/util/gog_downloader.py | 285 | # Step 4: Download chunks in parallel with pipelined writes | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 457 | # Step 1: Get builds list | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 466 | # Step 2: Get the build manifest | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 824 | # Step 1: Get GOG token | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 832 | # Step 2: Get game-scoped credentials | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 840 | # Step 3: Get game-scoped access token | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 856 | # Step 4: Create cloud storage client | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 859 | # Step 5: Scan local files | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 873 | # Step 6: Get cloud files | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 882 | # Step 7: Handle trivial cases | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 909 | # Step 8: Classify sync direction | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 914 | # Step 9: Handle preferred action overrides | COMMENT |
| LOW | lutris/services/gog_cloud.py | 933 | # Step 10: Execute sync | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/util/gog_downloader.py | 209 | # Step 1: Resolve URL (follow redirects) and check capabilities | COMMENT |
| LOW | lutris/util/gog_downloader.py | 225 | # Step 2: Check for resumable progress | COMMENT |
| LOW | lutris/util/gog_downloader.py | 256 | # Step 3: Compute ranges (fresh or from progress) | COMMENT |
| LOW | lutris/util/gog_downloader.py | 285 | # Step 4: Download chunks in parallel with pipelined writes | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 457 | # Step 1: Get builds list | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 466 | # Step 2: Get the build manifest | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 824 | # Step 1: Get GOG token | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 832 | # Step 2: Get game-scoped credentials | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 840 | # Step 3: Get game-scoped access token | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 856 | # Step 4: Create cloud storage client | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 859 | # Step 5: Scan local files | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 873 | # Step 6: Get cloud files | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 882 | # Step 7: Handle trivial cases | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 909 | # Step 8: Classify sync direction | COMMENT |
| LOW⚡ | lutris/services/gog_cloud.py | 914 | # Step 9: Handle preferred action overrides | COMMENT |
| LOW | lutris/services/gog_cloud.py | 933 | # Step 10: Execute sync | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/monitored_command.py | 141 | def get_environment(user_env: dict[str, str] | None) -> dict[str, str]: | COMMENT |
| LOW | lutris/util/amazon/protobuf_decoder.py | 1 | import struct | COMMENT |
| LOW | lutris/util/wine/prefix.py | 381 | # | COMMENT |
| LOW | lutris/util/battlenet/__init__.py | 1 | # Code in this package from the GOG Galaxy integration for Battle.net | COMMENT |
| LOW | lutris/gui/application.py | 1 | # pylint: disable=wrong-import-position | COMMENT |
| LOW | lutris/runners/steam.py | 21 | COMMENT | |
| LOW | tests/util/_test_collection_progress.py | 21 | # | COMMENT |
| LOW | utils/appimage/build-in-container.sh | 21 | ln -sf "python${PY_VER}" "$APPDIR/usr/bin/python3" | COMMENT |
| LOW | utils/appimage/build-in-container.sh | 41 | # for modules in dist-packages, not site-packages. Installing here means | COMMENT |
| LOW | utils/appimage/build-in-container.sh | 141 | # linuxdeploy-plugin-gtk copies libgio itself but not the GIO modules that | COMMENT |
| LOW | utils/appimage/build-in-container.sh | 181 | fi | COMMENT |
| LOW | utils/appimage/build.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | utils/appimage/linuxdeploy-plugin-gtk.sh | 1 | #! /usr/bin/env bash | COMMENT |
| LOW | .github/workflows/publish-ppa.yml | 1 | # This is a reusable workflow that should not be called directly, but | COMMENT |
| LOW | .github/workflows/publish-lutris-ppa.yml | 1 | # Handles publishing Lutris builds to the Lutris Ubuntu PPAs. This | COMMENT |
| LOW | .github/scripts/build-ubuntu-22.04.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/scripts/build-ubuntu-24.04.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/scripts/build-ubuntu-generic.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/scripts/build-ubuntu-generic.sh | 21 | # | COMMENT |
| LOW | .github/scripts/build-ubuntu.sh | 1 | #!/bin/bash -e | COMMENT |
| LOW | .github/scripts/build-ubuntu.sh | 21 | # The following environment variables are optional and will override | COMMENT |
| LOW | .github/scripts/build-ubuntu.sh | 41 | # The PPA release version which follows the same guide as mentioned | COMMENT |
| LOW | .github/scripts/build-ubuntu.sh | 101 | # ex. 0.5.12-0ubuntu1 (for just the package version) | COMMENT |
| LOW | .github/scripts/install-ubuntu.sh | 1 | #!/bin/bash -e | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lutris/search_predicate.py | 15 | """This class is a filter function that also includes formatting and other functionality so | STRING |
| MEDIUM | lutris/exception_backstops.py | 100 | """This function is called once only, during startup, and replaces ("swizzles") a bunch of | STRING |
| MEDIUM | lutris/util/path_cache.py | 88 | """This class is a singleton that holds a set of game-ids for games whose directories | STRING |
| MEDIUM | lutris/util/jobs.py | 88 | """This class provides a safe interface for cancelling idle tasks and timeouts; | STRING |
| MEDIUM | lutris/util/gog_downloader.py | 74 | # Create a dedicated session with connection pooling sized for our workers | COMMENT |
| MEDIUM | lutris/util/discord/client.py | 20 | # Create a new Presence object with the desired app id | COMMENT |
| MEDIUM | lutris/gui/download_queue.py | 20 | """This class is a widget that displays a stack of progress boxes, which you can create | STRING |
| MEDIUM | lutris/gui/widgets/sidebar.py | 551 | # Create the basic rows that are not data dependant | COMMENT |
| MEDIUM | lutris/gui/widgets/sidebar.py | 617 | # Create the dynamic rows that are initially needed | COMMENT |
| MEDIUM | lutris/gui/widgets/scaled_image.py | 14 | """This class provides a rather basic feature the GtkImage doesn't offer - the ability | STRING |
| MEDIUM | tests/util/_test_pipelining.py | 172 | # Create a mock response that simulates a stall then success | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/util/system.py | 99 | # Check if the executable exists | COMMENT |
| LOW | lutris/util/system.py | 159 | # Check if the executable exists | COMMENT |
| LOW | lutris/gui/addgameswindow.py | 643 | # Check if it's a media file reference (e.g., "media:playtron") | COMMENT |
| LOW | lutris/gui/dialogs/runner_install.py | 236 | # Check if there are apps installed, if so, show the view apps button | COMMENT |
| LOW | lutris/runners/runner.py | 322 | # Set monitor to use for SDL 1 games | COMMENT |
| LOW⚡ | lutris/runners/wine.py | 1438 | # Set this to 1 to enable access to more RAM for 32-bit applications | COMMENT |
| LOW | lutris/runners/commands/wine.py | 233 | # Check if umu crashed before prefix was created | COMMENT |
| LOW | lutris/installer/commands.py | 1021 | # Check if any extracted .exe is an installer | COMMENT |
| LOW | lutris/services/flathub.py | 103 | # Check if Flathub repo is active on the system | COMMENT |
| LOW | lutris/services/base.py | 317 | # Check if the game is not already installed | COMMENT |
| LOW | tests/util/_test_download_cache.py | 184 | # Set updated_at to 8 days ago | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/util/magic.py | 100 | # so rather than fail hard just use default behavior | COMMENT |
| LOW | lutris/util/system.py | 531 | # If a path isn't provided, or it exists as is, or is a relative path, just return it. | COMMENT |
| LOW | lutris/util/downloader.py | 319 | # Until we get the first sample, just return our default | COMMENT |
| LOW | lutris/util/ubisoft/parser.py | 82 | # just return 0s, this way it will be handled later in the code | COMMENT |
| MEDIUM | lutris/installer/installer.py | 240 | # Commit changes only at the end; this is more robust in this method is runner | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lutris/monitored_command.py | 53 | CODE | |
| LOW | lutris/util/wine/cabinstall.py | 71 | CODE | |
| LOW | lutris/gui/widgets/common.py | 50 | CODE | |
| LOW | lutris/runners/commands/wine.py | 313 | CODE | |
| LOW | lutris/runners/commands/wine.py | 480 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lutris/installer/commands.py | 303 | # Useful when the source is throwaway scaffolding (e.g. the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | utils/appimage/build.sh | 8 | # Usage: | COMMENT |