BleachBit system cleaner for Windows and Linux
This report presents the forensic synthetic code analysis of bleachbit/bleachbit, a Python project with 6,288 GitHub stars. SynthScan v2.0 examined 54,135 lines of code across 231 source files, recording 728 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 14.6 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).
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 728 distinct pattern matches across 13 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 | tests/TestExternalCommand.py | 34 | def is_bleachbit_running_process(process_name, cmdline): | CODE |
| LOW | tests/TestExternalCommand.py | 58 | def wait_for_process_tree_windows(process, timeout=60, poll_interval=0.1): | CODE |
| LOW | tests/TestExternalCommand.py | 176 | def _is_running_based_on_checks(self, is_process_running, window_open): | CODE |
| LOW | tests/TestExternalCommand.py | 351 | def _get_shred_command_string(self, file_to_shred): | CODE |
| LOW | tests/TestExternalCommand.py | 385 | def test_windows_explorer_context_menu_natural(self): | CODE |
| LOW | tests/TestExternalCommand.py | 397 | def test_windows_explorer_context_menu_privilege_escalation(self): | CODE |
| LOW | tests/TestExternalCommand.py | 409 | def test_context_menu_command_while_the_app_is_running(self): | CODE |
| LOW⚡ | tests/TestExternalCommand.py | 436 | def _test_as_non_admin_with_context_menu_path(self, fn_prefix): | CODE |
| LOW⚡ | tests/TestExternalCommand.py | 446 | def shell_execute_synchronous(lpVerb='', lpFile='', lpParameters='', nShow=''): | CODE |
| LOW | tests/TestExternalCommand.py | 485 | def test_is_bleachbit_running_process(self): | CODE |
| LOW | tests/TestExternalCommand.py | 538 | def test_wait_for_grandchild_process(self): | CODE |
| LOW | tests/TestGtkShim.py | 86 | def test_unknown_error_includes_traceback_and_sysinfo(self): | CODE |
| LOW | tests/TestGtkShim.py | 102 | def test_unknown_error_escapes_html_in_error_message(self): | CODE |
| LOW | tests/TestGtkShim.py | 124 | def test_yes_writes_html_file(self): | CODE |
| LOW | tests/TestGtkShim.py | 136 | def test_no_does_not_write_file(self): | CODE |
| LOW | tests/TestGtkShim.py | 156 | def test_unknown_error_includes_traceback_in_html(self): | CODE |
| LOW | tests/TestGtkShim.py | 185 | def test_valid_unicode_unchanged(self): | CODE |
| LOW | tests/TestGtkShim.py | 201 | def test_restored_on_exception(self): | CODE |
| LOW | tests/TestGtkShim.py | 211 | def test_restores_reference_identity(self): | CODE |
| LOW | tests/TestWipe.py | 32 | def test_detect_orphaned_wipe_files(self): | CODE |
| LOW | tests/TestWipe.py | 167 | def test_wipe_name_when_basic_characters_exist(self): | CODE |
| LOW | tests/TestWipe.py | 196 | def test_wipe_name_rejects_windows_invalid_names(self): | CODE |
| LOW | tests/TestWipe.py | 216 | def test_wipe_name_allows_windows_reserved_names_on_linux(self): | CODE |
| LOW | tests/TestWipe.py | 228 | def test_wipe_name_non_retryable_error(self): | CODE |
| LOW | tests/TestWipe.py | 307 | def test_wipe_path_not_directory(self): | CODE |
| LOW | tests/TestWipe.py | 332 | def test_wipe_path_tempfile_enametoolong_retry(self): | CODE |
| LOW | tests/TestWipe.py | 351 | def test_wipe_path_write_enospc(self): | CODE |
| LOW | tests/TestWipe.py | 374 | def test_wipe_path_write_efbig(self): | CODE |
| LOW | tests/TestWipe.py | 383 | def test_wipe_path_flush_enospc(self): | CODE |
| LOW | tests/TestWipe.py | 402 | def test_wipe_path_idle_yields_eta(self): | CODE |
| LOW | tests/TestWipe.py | 432 | def test_wipe_path_cleanup_finally(self): | CODE |
| LOW | tests/TestNsisUtilities.py | 30 | def test_generate_add_remove_nsis_expressions(self): | CODE |
| LOW | tests/TestNsisUtilities.py | 62 | def _generate_nsis_expressions(self, tree): | CODE |
| LOW | tests/TestNsisUtilities.py | 91 | def _generate_nsis_expressions_helper(self, target_dir, tree, expected_install_expression, | CODE |
| LOW | tests/TestNsisUtilities.py | 116 | def test_walk_with_parent_directory_and_filepaths(self): | CODE |
| LOW | tests/TestNsisUtilities.py | 121 | def test_write_nsis_expressions_to_files(self): | CODE |
| LOW | tests/TestNsisUtilities.py | 166 | def test_generate_delete_expressions(self): | CODE |
| LOW | tests/TestNsisUtilities.py | 243 | def _generate_install_file_expression(cls, files): | CODE |
| LOW | tests/TestNsisUtilities.py | 248 | def _generate_delete_expressions(cls, folder, files): | CODE |
| LOW⚡ | tests/TestNsisUtilities.py | 259 | def _generate_setoutpath_expression(cls, dir, subdir): | CODE |
| LOW⚡ | tests/TestNsisUtilities.py | 263 | def _generate_rmdir_expression(cls, dir, subdir): | CODE |
| LOW⚡ | tests/TestNsisUtilities.py | 267 | def _generate_dir_subdir_expression(cls, command, dir, subdir): | CODE |
| LOW | tests/TestFileUtilities.py | 242 | def test_bytes_to_human_one_way(self): | CODE |
| LOW | tests/TestFileUtilities.py | 278 | def test_bytes_to_human_roundtrip(self): | CODE |
| LOW | tests/TestFileUtilities.py | 293 | def test_bytes_to_human_localization(self): | CODE |
| LOW | tests/TestFileUtilities.py | 304 | def test_children_in_directory(self): | CODE |
| LOW | tests/TestFileUtilities.py | 337 | def test_children_in_directory_ordering(self): | CODE |
| LOW | tests/TestFileUtilities.py | 388 | def test_children_in_directory_posix_symlink(self): | CODE |
| LOW | tests/TestFileUtilities.py | 422 | def test_children_in_directory_posix_circular_symlink(self): | CODE |
| LOW | tests/TestFileUtilities.py | 449 | def test_children_in_directory_windows_links(self): | CODE |
| LOW | tests/TestFileUtilities.py | 573 | def test_delete_ignore_missing(self): | CODE |
| LOW | tests/TestFileUtilities.py | 578 | def test_delete_access_denied(self): | CODE |
| LOW | tests/TestFileUtilities.py | 847 | def test_delete_read_only_file(self): | CODE |
| LOW | tests/TestFileUtilities.py | 950 | def test_delete_read_only_directory(self): | CODE |
| LOW | tests/TestFileUtilities.py | 983 | def test_delete_extended_path(self): | CODE |
| LOW | tests/TestFileUtilities.py | 1027 | def test_detect_encoding_missing_chardet(self): | CODE |
| LOW | tests/TestFileUtilities.py | 1135 | def test_expand_vars_no_change(self): | CODE |
| LOW | tests/TestFileUtilities.py | 1264 | def test_get_filesystem_type_missing_psutil(self): | CODE |
| LOW | tests/TestFileUtilities.py | 1360 | def test_guess_overwrite_paths(self): | CODE |
| LOW | tests/TestFileUtilities.py | 1414 | def test_is_normal_directory_real(self): | CODE |
| 364 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/TestExternalCommand.py | 58 | CODE | |
| LOW | tests/TestExternalCommand.py | 136 | CODE | |
| LOW | tests/TestExternalCommand.py | 209 | CODE | |
| LOW | tests/test_with_sudo.py | 32 | CODE | |
| LOW | tests/TestFileUtilities.py | 209 | CODE | |
| LOW | tests/TestFileUtilities.py | 718 | CODE | |
| LOW | tests/TestFileUtilities.py | 950 | CODE | |
| LOW | tests/TestCookie.py | 146 | CODE | |
| LOW | tests/TestOptions.py | 404 | CODE | |
| LOW | tests/TestCommon.py | 75 | CODE | |
| LOW | tests/TestProtectedPath.py | 431 | CODE | |
| LOW | tests/TestProtectedPath.py | 435 | CODE | |
| LOW | tests/TestGeneral.py | 161 | CODE | |
| LOW | tests/TestGeneral.py | 258 | CODE | |
| LOW | tests/TestSpecial.py | 341 | CODE | |
| LOW | tests/TestAction.py | 95 | CODE | |
| LOW | tests/TestAction.py | 139 | CODE | |
| LOW | tests/TestWindows.py | 782 | CODE | |
| LOW | tests/TestWindows.py | 894 | CODE | |
| LOW | tests/TestWindows.py | 1037 | CODE | |
| LOW | tests/TestNetwork.py | 59 | CODE | |
| LOW | tests/TestNetwork.py | 179 | CODE | |
| LOW | tests/TestCLI.py | 248 | CODE | |
| LOW | tests/TestCLI.py | 424 | CODE | |
| LOW | tests/TestCLI.py | 434 | CODE | |
| LOW | tests/TestCLI.py | 444 | CODE | |
| LOW | tests/TestCLI.py | 455 | CODE | |
| LOW | tests/TestCLI.py | 466 | CODE | |
| LOW | tests/TestCLI.py | 504 | CODE | |
| LOW | tests/TestCLI.py | 516 | CODE | |
| LOW | tests/TestWindowsWipe.py | 290 | CODE | |
| LOW | tests/TestMemory.py | 52 | CODE | |
| LOW | tests/TestMemory.py | 65 | CODE | |
| LOW | tests/TestMemory.py | 284 | CODE | |
| LOW | tests/TestMemory.py | 449 | CODE | |
| LOW | tests/TestMemory.py | 477 | CODE | |
| LOW | tests/TestCleaner.py | 181 | CODE | |
| LOW | tests/TestCleaner.py | 206 | CODE | |
| LOW | bleachbit/Worker.py | 88 | CODE | |
| LOW | bleachbit/Worker.py | 160 | CODE | |
| LOW | bleachbit/Worker.py | 215 | CODE | |
| LOW | bleachbit/Worker.py | 263 | CODE | |
| LOW | bleachbit/GuiStartup.py | 238 | CODE | |
| LOW | bleachbit/GuiWindow.py | 396 | CODE | |
| LOW | bleachbit/GuiWindow.py | 626 | CODE | |
| LOW | bleachbit/GuiWindow.py | 663 | CODE | |
| LOW | bleachbit/GuiWindow.py | 980 | CODE | |
| LOW | bleachbit/Command.py | 159 | CODE | |
| LOW | bleachbit/Unix.py | 325 | CODE | |
| LOW | bleachbit/Unix.py | 87 | CODE | |
| LOW | bleachbit/Unix.py | 119 | CODE | |
| LOW | bleachbit/FileUtilities.py | 258 | CODE | |
| LOW | bleachbit/FileUtilities.py | 448 | CODE | |
| LOW | bleachbit/FileUtilities.py | 589 | CODE | |
| LOW | bleachbit/FileUtilities.py | 755 | CODE | |
| LOW | bleachbit/FileUtilities.py | 915 | CODE | |
| LOW | bleachbit/SystemInformation.py | 181 | CODE | |
| LOW | bleachbit/WindowsWipe.py | 163 | CODE | |
| LOW | bleachbit/WindowsWipe.py | 242 | CODE | |
| LOW | bleachbit/WindowsWipe.py | 362 | CODE | |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_with_sudo.py | 113 | except Exception as e: | CODE |
| MEDIUM | tests/test_with_sudo.py | 114 | print(f"Error running sudo tests: {e}") | CODE |
| MEDIUM | tests/TestAll.py | 24 | print(f'Error importing tests: {e}') | CODE |
| LOW | tests/TestFileUtilities.py | 975 | except Exception: | CODE |
| LOW | tests/TestWipePath.py | 279 | except Exception: | CODE |
| LOW | tests/TestWipePath.py | 448 | except Exception: | CODE |
| MEDIUM | tests/TestWipePath.py | 512 | print(f"Error: unsupported filesystem(s): {', '.join(invalid)}") | CODE |
| MEDIUM | tests/TestWindowsWipe.py | 95 | print(f"Error opening {path}: {e}") | CODE |
| LOW | bleachbit/Bootstrap.py | 33 | except Exception: | CODE |
| LOW | bleachbit/Worker.py | 102 | except Exception as e: | CODE |
| LOW | bleachbit/Options.py | 162 | except Exception: | CODE |
| LOW | bleachbit/Options.py | 479 | except Exception: | CODE |
| LOW | bleachbit/GuiStartup.py | 161 | except Exception as e: | CODE |
| LOW | bleachbit/GuiWindow.py | 274 | except Exception as e: | CODE |
| LOW | bleachbit/GuiWindow.py | 288 | except Exception as e: | CODE |
| LOW | bleachbit/GuiWindow.py | 730 | except Exception: | CODE |
| LOW | bleachbit/GuiWindow.py | 804 | except Exception: | CODE |
| LOW | bleachbit/GuiWindow.py | 1296 | except Exception as e: | CODE |
| LOW | bleachbit/Command.py | 83 | except Exception as e: | CODE |
| LOW | bleachbit/Command.py | 179 | except Exception as e: | CODE |
| LOW | bleachbit/Unix.py | 71 | except Exception as errormsg: | CODE |
| LOW | bleachbit/Unix.py | 339 | except Exception as e: | CODE |
| LOW | bleachbit/Unix.py | 377 | except Exception as e1: | CODE |
| LOW | bleachbit/Unix.py | 384 | except Exception as e2: | CODE |
| LOW | bleachbit/Unix.py | 937 | except Exception as e: | CODE |
| LOW | bleachbit/Memory.py | 194 | except Exception: | CODE |
| LOW | bleachbit/Memory.py | 265 | except Exception: | CODE |
| LOW | bleachbit/WindowsWipe.py | 1138 | except Exception as e: | CODE |
| LOW | bleachbit/GtkShim.py | 125 | except Exception: | CODE |
| LOW | bleachbit/GtkShim.py | 202 | except Exception as e: | STRING |
| LOW | bleachbit/GtkShim.py | 274 | except Exception as e: | CODE |
| LOW | bleachbit/GtkShim.py | 305 | except Exception as e: | CODE |
| LOW | bleachbit/Action.py | 469 | except Exception as e: | CODE |
| LOW | bleachbit/Action.py | 479 | except Exception as e: | CODE |
| LOW | bleachbit/Action.py | 622 | except Exception as e: | CODE |
| MEDIUM | bleachbit/Action.py | 618 | def run_process(): | CODE |
| LOW | bleachbit/GuiChaff.py | 172 | except Exception as exc: | CODE |
| LOW | bleachbit/GuiChaff.py | 192 | except Exception as exc: | CODE |
| LOW | bleachbit/Cleaner.py | 83 | except Exception: | CODE |
| LOW | bleachbit/Cleaner.py | 503 | except Exception: | CODE |
| LOW | bleachbit/Wipe.py | 172 | except Exception as e: | CODE |
| LOW | bleachbit/Wipe.py | 508 | except Exception as e: | CODE |
| LOW | bleachbit/Wipe.py | 527 | except Exception as e: | CODE |
| LOW | bleachbit/CLI.py | 105 | except Exception: | CODE |
| LOW | bleachbit/Winapp.py | 166 | except Exception: | CODE |
| LOW | bleachbit/Winapp.py | 462 | except Exception: | CODE |
| LOW | bleachbit/CleanerML.py | 158 | except Exception as e: | CODE |
| LOW | bleachbit/CleanerML.py | 212 | except Exception: | CODE |
| LOW | bleachbit/CleanerML.py | 400 | except Exception: | CODE |
| LOW | bleachbit/CleanerML.py | 457 | except Exception: | STRING |
| MEDIUM | bleachbit/Windows.py | 1308 | def run(self): | CODE |
| LOW⚡ | bleachbit/Windows.py | 1646 | except Exception: | CODE |
| LOW⚡ | bleachbit/Windows.py | 1650 | except Exception: | CODE |
| LOW⚡ | bleachbit/Windows.py | 1657 | except Exception: | CODE |
| LOW⚡ | bleachbit/Windows.py | 1665 | except Exception: | CODE |
| LOW | bleachbit/Windows.py | 322 | except Exception: | CODE |
| LOW | bleachbit/Windows.py | 459 | except Exception as e: | CODE |
| LOW | bleachbit/Windows.py | 702 | except Exception as wait_err: | CODE |
| LOW | bleachbit/Windows.py | 753 | except Exception: | CODE |
| LOW | bleachbit/Windows.py | 798 | except Exception as e: | CODE |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | bleachbit/GuiWindow.py | 1019 | self.status_bar.push(context_id, text) | CODE |
| HIGH⚡ | bleachbit/Special.py | 319 | "where moz_bookmarks.id is null); " | CODE |
| HIGH⚡ | bleachbit/Special.py | 326 | cmds += "update moz_places set visit_count=0, frecency=-1, last_visit_date=null;" | CODE |
| HIGH⚡ | bleachbit/Special.py | 333 | "where moz_places.id is null); " | CODE |
| HIGH | bleachbit/Special.py | 344 | "from moz_places where favicon_id is not null ); " | CODE |
| HIGH | bleachbit/Special.py | 405 | "where fk is not null){filter}") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # These are universal dependencies. | COMMENT |
| LOW | tests/TestWipePath.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | tests/TestWinapp.py | 201 | @common.skipUnlessWindows | COMMENT |
| LOW | tests/TestWinapp.py | 321 | COMMENT | |
| LOW | tests/TestCommand.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | tests/TestLanguage.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | tests/TestCleanerML.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | tests/TestUpdate.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | tests/TestChaff.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/Update.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/Worker.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/Options.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/Command.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/GuiBasic.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/Memory.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/Log.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/FontCheckDialog.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/SystemInformation.py | 1 | COMMENT | |
| LOW | bleachbit/WindowsWipe.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/WindowsWipe.py | 1021 | COMMENT | |
| LOW | bleachbit/GuiPreferences.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/GuiChaff.py | 41 | # when generating chaff (dummy) files. This option means "stop after | COMMENT |
| LOW | bleachbit/Cleaner.py | 541 | '^' + os.path.expanduser('~/.cache/wallpaper/'), | COMMENT |
| LOW | bleachbit/Wipe.py | 481 | # TRANSLATORS: Debug message showing disk space available to the root (admin) user. | COMMENT |
| LOW | bleachbit/Language.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/Network.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/CleanerML.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/DeepScan.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/Special.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/Special.py | 421 | cmds = "" | COMMENT |
| LOW | bleachbit/GUI.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/ProtectedPath.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/General.py | 1 | # vim: ts=4:sw=4:expandtab | COMMENT |
| LOW | bleachbit/General.py | 401 | # gksu in Ubuntu 9.10 changes the username. If the username is root, | COMMENT |
| LOW | scripts/install-deps.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/install-deps.sh | 21 | # | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/TestNetwork.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Update.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Worker.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Options.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/GuiStartup.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Command.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Unix.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/FileUtilities.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Chaff.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Memory.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/SystemInformation.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/WindowsWipe.py | 140 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/GuiPreferences.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/GtkShim.py | 49 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Action.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Cookie.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/GuiChaff.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Wipe.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/CLI.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/GuiCookie.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Language.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Winapp.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Network.py | 65 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/CleanerML.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Windows.py | 83 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/Special.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/GUI.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/ProtectedPath.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/General.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | bleachbit/RecognizeCleanerML.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | windows/setup.py | 46 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/TestExternalCommand.py | 431 | if p.poll() is None: # Check if process is still running | CODE |
| LOW | tests/TestWipe.py | 37 | # Set shred_drives to include our temp directory | COMMENT |
| LOW | tests/TestWindowsWipe.py | 286 | # Close the file handle to release the lock | COMMENT |
| LOW | tests/TestWorker.py | 143 | # Open the file with a blocking handle that allows read/write but blocks delete. | COMMENT |
| LOW | bleachbit/GuiStartup.py | 36 | # Check if old_version < target_version | COMMENT |
| LOW | bleachbit/GuiStartup.py | 286 | # Check if any selected cleaning option has a warning | COMMENT |
| LOW | bleachbit/GuiWindow.py | 329 | # Check if splash screen is forced via environment variable | COMMENT |
| LOW | bleachbit/GuiWindow.py | 916 | # Check if this option has a cookie command | COMMENT |
| LOW | bleachbit/GuiWindow.py | 923 | # Check if this is the system.custom option | COMMENT |
| LOW | bleachbit/GuiPreferences.py | 787 | # Check if user already confirmed this path | COMMENT |
| LOW | bleachbit/Wipe.py | 163 | # Set range to the entire filesystem | COMMENT |
| LOW | bleachbit/Winapp.py | 421 | # Check if this registry key is excluded (exact match or starts with exclusion) | COMMENT |
| LOW | bleachbit/Winapp.py | 426 | # Check if the path matches the exclusion (exact match or starts with exclusion) | COMMENT |
| LOW | bleachbit/Windows.py | 516 | # Check if this key is excluded | COMMENT |
| LOW | bleachbit/Windows.py | 521 | # Check if the key matches the exclusion (exact match or is a child of exclusion) | COMMENT |
| LOW | bleachbit/Windows.py | 545 | # Check if any child keys are excluded | COMMENT |
| LOW | bleachbit/ProtectedPath.py | 191 | # Check if user path is a parent of protected path | COMMENT |
| LOW | bleachbit/ProtectedPath.py | 197 | # Check if user path is a child of protected path (within depth) | COMMENT |
| LOW | windows/setup.py | 218 | # Check if target file exists and compare content | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/TestFileUtilities.py | 427 | # Create a normal directory and file inside the base directory | COMMENT |
| MEDIUM | tests/TestRecognizeCleanerML.py | 32 | # Create a CleanerML file so list_cleanerml_files() returns a file, | COMMENT |
| MEDIUM | tests/TestCommon.py | 201 | # Create a file in the current directory | COMMENT |
| MEDIUM | tests/TestSystemInformation.py | 105 | # Create a directory with Unicode characters that will have a short path | COMMENT |
| MEDIUM | tests/TestCleaner.py | 355 | # Create the file | COMMENT |
| MEDIUM | bleachbit/GuiCookie.py | 111 | # Create the TreeView | COMMENT |
| MEDIUM | bleachbit/General.py | 234 | # Define the current operating system. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/TestExternalCommand.py | 59 | Wait for a process and its grandchildren to complete on Windows. This function handles the case where a child proce | STRING |
| HIGH | bleachbit/FileUtilities.py | 590 | Execute SQL commands on SQLite database Args: path (str): Path to the SQLite database file cmds (st | STRING |
| HIGH | bleachbit/Cookie.py | 153 | Process cookies with optional deletion based on keep list Args: path (str): Path to the cookies database fi | STRING |
| HIGH | bleachbit/Network.py | 156 | Fetch a URL using requests library Args: url (str): URL to fetch content from max_retries (int, opt | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/TestCommon.py | 156 | CODE | |
| LOW | tests/TestCommon.py | 157 | CODE | |
| LOW | tests/TestCommon.py | 154 | CODE | |
| LOW | tests/TestCommon.py | 150 | CODE | |
| LOW | tests/TestCommon.py | 152 | CODE | |
| LOW | tests/TestAction.py | 13 | CODE | |
| LOW | tests/TestAction.py | 27 | CODE | |
| LOW | tests/TestAction.py | 28 | CODE | |
| LOW | tests/TestWindowsWipe.py | 31 | CODE | |
| LOW | tests/TestWindowsWipe.py | 31 | CODE | |
| LOW | tests/TestWindowsWipe.py | 31 | CODE | |
| LOW | bleachbit/__init__.py | 14 | CODE | |
| LOW | bleachbit/__init__.py | 14 | CODE | |
| LOW | bleachbit/markovify/__init__.py | 3 | CODE | |
| LOW | bleachbit/markovify/__init__.py | 4 | CODE | |
| LOW | bleachbit/markovify/__init__.py | 4 | CODE | |
| LOW | bleachbit/markovify/__init__.py | 5 | CODE | |
| LOW | bleachbit/markovify/__init__.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bleachbit/Command.py | 58 | CODE | |
| LOW | bleachbit/FileUtilities.py | 638 | CODE | |
| LOW | bleachbit/Winapp.py | 62 | CODE | |
| LOW | bleachbit/CleanerML.py | 437 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bleachbit/Constant.py | 38 | # Expert mode is an option in the preferences to relax guardrails. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/install-deps.sh | 8 | # Usage: | COMMENT |