A keyboard-driven, vim-like browser based on Python and Qt.
This report summarizes scanner evidence for qutebrowser/qutebrowser, a Python project with 11,726 GitHub stars. SynthScan examined 167,397 lines of code across 726 source files, recording 1340 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 11.9 (Moderate 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? 911 finding(s).
Are imports declared and package/API names verified? 242 finding(s).
Are wrappers, guards, and repeated structures necessary? 928 finding(s).
Which changes need focused human review? 1340 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 1340 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 | 168 | def pytest_collection_modifyitems(config, items): | CODE |
| LOW | tests/conftest.py | 414 | def pytest_runtest_makereport(item, call): | CODE |
| LOW⚡ | tests/unit/test_qt_machinery.py | 54 | def test_importerror_exceptions(exception: Exception, base: type[Exception]): | CODE |
| LOW⚡ | tests/unit/test_qt_machinery.py | 59 | def test_selectioninfo_set_module_error(): | CODE |
| LOW⚡ | tests/unit/test_qt_machinery.py | 69 | def test_selectioninfo_use_wrapper(): | CODE |
| LOW | tests/unit/test_qt_machinery.py | 121 | def test_selectioninfo_str_wrapper_precedence(order: list[str]): | CODE |
| LOW | tests/unit/test_qt_machinery.py | 346 | def test_autoselect_by_default( | CODE |
| LOW | tests/unit/test_qt_machinery.py | 417 | def test_none_available_implicit( | CODE |
| LOW | tests/unit/test_qt_machinery.py | 441 | def test_none_available_explicit( | CODE |
| LOW⚡ | tests/unit/misc/test_ipc.py | 355 | def test_atime_update_no_name(self, qtbot, caplog, ipc_server): | CODE |
| LOW⚡ | tests/unit/misc/test_ipc.py | 362 | def test_atime_shutdown_typeerror(self, qtbot, ipc_server): | CODE |
| LOW⚡ | tests/unit/misc/test_ipc.py | 368 | def test_vanished_runtime_file(self, qtbot, caplog, ipc_server): | CODE |
| LOW | tests/unit/misc/test_ipc.py | 186 | def test_windows_broken_getpass(self, monkeypatch): | CODE |
| LOW | tests/unit/misc/test_ipc.py | 430 | def test_disconnected_immediately(self, ipc_server, caplog): | CODE |
| LOW | tests/unit/misc/test_ipc.py | 446 | def test_read_line_immediately(self, qtbot, ipc_server, caplog): | CODE |
| LOW | tests/unit/misc/test_ipc.py | 472 | def test_disconnected_without_data(qtbot, connected_socket, | CODE |
| LOW | tests/unit/misc/test_ipc.py | 581 | def test_not_disconnected_immediately(self): | CODE |
| LOW | tests/unit/misc/test_ipc.py | 585 | def test_socket_error_no_server(self): | CODE |
| LOW | tests/unit/misc/test_ipc.py | 609 | def test_ipcserver_socket_none_readyread(ipc_server, caplog): | CODE |
| LOW | tests/unit/misc/test_ipc.py | 619 | def test_ipcserver_socket_none_error(ipc_server, caplog): | CODE |
| LOW | tests/unit/misc/test_ipc.py | 708 | def test_address_in_use_error(self, qlocalserver_mock, qlocalsocket_mock, | CODE |
| LOW | tests/unit/misc/test_ipc.py | 753 | def test_error_while_listening(self, qlocalserver_mock, caplog, args): | CODE |
| LOW | tests/unit/misc/test_ipc.py | 803 | def test_socket_options_address_in_use_problem(qlocalserver, short_tmpdir): | CODE |
| LOW | tests/unit/misc/test_checkpyver.py | 43 | def test_patched_no_errwindow(capfd, monkeypatch): | CODE |
| LOW | tests/unit/misc/test_split.py | 92 | def _parse_split_test_data_str(): | STRING |
| LOW | tests/unit/misc/test_miscwidgets.py | 58 | def test_selection_cursor_left(self, qtbot, cmd_edit): | CODE |
| LOW | tests/unit/misc/test_miscwidgets.py | 159 | def test_cycle_focus_no_inspector(self, splitter): | CODE |
| LOW | tests/unit/misc/test_miscwidgets.py | 185 | def test_cycle_focus_hidden_inspector(self, splitter, fake_inspector): | CODE |
| LOW | tests/unit/misc/test_wmname.py | 21 | def test_load_libwayland_client(): | CODE |
| LOW | tests/unit/misc/test_wmname.py | 29 | def test_load_libwayland_client_error(mocker: pytest_mock.MockerFixture): | CODE |
| LOW | tests/unit/misc/test_wmname.py | 65 | def test_pid_from_fd_getsockopt_error( | CODE |
| LOW⚡ | tests/unit/misc/test_wmname.py | 77 | def test_pid_from_fd_no_so_peercred(monkeypatch: pytest.MonkeyPatch): | CODE |
| LOW⚡ | tests/unit/misc/test_wmname.py | 84 | def test_process_name_from_pid(): | CODE |
| LOW⚡ | tests/unit/misc/test_wmname.py | 91 | def test_process_name_from_pid_invalid(): | CODE |
| LOW | tests/unit/misc/test_wmname.py | 124 | def test_wayland_display_error(libwayland_client_mock: unittest.mock.Mock): | CODE |
| LOW | tests/unit/misc/test_wmname.py | 150 | def test_wayland_get_fd_error( | CODE |
| LOW | tests/unit/misc/test_utilcmds.py | 15 | def test_cmd_repeat_last_initial(mocker, mode_manager): | CODE |
| LOW | tests/unit/misc/test_pastebin.py | 61 | def test_paste_without_parent(data, pbclient): | CODE |
| LOW | tests/unit/misc/test_pastebin.py | 97 | def test_client_success_invalid_http(http, pbclient, qtbot): | CODE |
| LOW | tests/unit/misc/test_sessions.py | 196 | def test_last_window_session_none(self, caplog, sess_man, tmp_path): | CODE |
| LOW | tests/unit/misc/test_earlyinit.py | 15 | def test_init_faulthandler_stderr_none(monkeypatch, attr): | CODE |
| LOW | tests/unit/misc/test_keyhints.py | 108 | def test_suggestions_with_count(keyhint, config_stub, monkeypatch, stubs): | CODE |
| LOW⚡ | tests/unit/misc/test_cmdhistory.py | 107 | def test_nextitem_previtem_chain(hist): | CODE |
| LOW⚡ | tests/unit/misc/test_cmdhistory.py | 115 | def test_nextitem_index_error(hist): | CODE |
| LOW⚡ | tests/unit/misc/test_cmdhistory.py | 122 | def test_previtem_index_error(hist): | CODE |
| LOW | tests/unit/misc/test_cmdhistory.py | 146 | def test_append_empty_history(hist): | CODE |
| LOW | tests/unit/misc/test_guiprocess.py | 142 | def test_start_output_message(proc, qtbot, caplog, message_mock, py_proc, | CODE |
| LOW | tests/unit/misc/test_guiprocess.py | 235 | def test_live_messages_output(qtbot, proc, py_proc, message_mock, | CODE |
| LOW | tests/unit/misc/test_guiprocess.py | 317 | def test_start_detached_error(fake_proc, message_mock, caplog): | CODE |
| LOW | tests/unit/misc/test_guiprocess.py | 339 | def test_double_start_finished(qtbot, proc, py_proc): | CODE |
| LOW | tests/unit/misc/test_guiprocess.py | 479 | def test_exit_unsuccessful_output(qtbot, proc, caplog, py_proc, stream): | STRING |
| LOW | tests/unit/misc/test_guiprocess.py | 494 | def test_exit_successful_output(qtbot, proc, py_proc, stream): | STRING |
| LOW | tests/unit/misc/test_guiprocess.py | 508 | def test_stdout_not_decodable(proc, qtbot, message_mock, py_proc): | STRING |
| LOW | tests/unit/misc/test_sql.py | 131 | def test_sqlite_error_codes_reverse(self): | CODE |
| LOW | tests/unit/misc/test_sql.py | 215 | def test_insert_batch_replace(qtbot, database): | CODE |
| LOW | tests/unit/misc/test_sql.py | 402 | def test_run_batch_missing_binding(self, database): | CODE |
| LOW | tests/unit/misc/test_sql.py | 413 | def test_num_rows_affected_not_active(self, database): | CODE |
| LOW | tests/unit/misc/test_sql.py | 418 | def test_num_rows_affected_select(self, database): | CODE |
| LOW | tests/unit/misc/test_sql.py | 440 | def test_successful_transaction(self, database): | CODE |
| LOW | tests/unit/misc/test_throttle.py | 55 | def test_delayed_immediate_delayed(throttled, func, qtbot): | CODE |
| 669 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/misc/test_ipc.py | 48 | except ipc.Error: | CODE |
| HIGH | tests/unit/misc/test_wmname.py | 25 | except wmname.Error: | CODE |
| HIGH | tests/unit/misc/test_wmname.py | 182 | except wmname.Error: | CODE |
| HIGH | tests/unit/misc/test_sessions.py | 41 | except KeyError: | CODE |
| HIGH | tests/unit/misc/test_sessions.py | 238 | except sessions.SessionError: | CODE |
| HIGH | tests/unit/misc/test_sql.py | 464 | except RuntimeError: | CODE |
| HIGH | tests/unit/config/test_configtypes.py | 643 | except configexc.ValidationError: | CODE |
| HIGH | tests/unit/config/test_configtypes.py | 655 | except configexc.ValidationError: | CODE |
| HIGH | tests/unit/config/test_configtypes.py | 795 | except configexc.ValidationError: | CODE |
| HIGH | tests/unit/config/test_configtypes.py | 807 | except configexc.ValidationError: | CODE |
| HIGH | tests/unit/config/test_configtypes.py | 1214 | except configexc.ValidationError: | CODE |
| HIGH | tests/unit/config/test_configtypes.py | 1226 | except configexc.ValidationError: | CODE |
| HIGH | tests/unit/config/test_configinit.py | 32 | except KeyError: | CODE |
| HIGH | tests/unit/completion/test_models.py | 24 | except ImportError: | CODE |
| HIGH | tests/unit/utils/test_version.py | 1045 | except ImportError: | CODE |
| HIGH | tests/unit/utils/test_utils.py | 938 | except ValueError: | CODE |
| HIGH | tests/unit/utils/test_utils.py | 823 | except yaml.YAMLError: | CODE |
| HIGH | tests/unit/utils/test_qtutils.py | 256 | except AttributeError: | CODE |
| HIGH | tests/unit/utils/test_qtutils.py | 544 | except FileNotFoundError: | CODE |
| HIGH | tests/unit/utils/test_urlutils.py | 784 | except urlutils.Error: | CODE |
| HIGH | tests/unit/keyinput/test_keyutils.py | 559 | except keyutils.KeyParseError: | CODE |
| HIGH | tests/unit/browser/test_history.py | 294 | except ImportError: | CODE |
| HIGH | tests/unit/browser/webkit/http/test_httpheaders.py | 70 | except httpheaders.ContentDispositionError: | CODE |
| HIGH | tests/end2end/conftest.py | 39 | except FileNotFoundError: | CODE |
| HIGH | tests/end2end/test_invocations.py | 790 | except ImportError: | CODE |
| HIGH | tests/end2end/test_invocations.py | 976 | except (ChildProcessError, PermissionError): | CODE |
| HIGH | tests/end2end/features/test_javascript_bdd.py | 41 | except FileExistsError: | CODE |
| HIGH | tests/end2end/features/conftest.py | 410 | except FileExistsError: | CODE |
| HIGH | tests/end2end/features/conftest.py | 433 | except testprocess.WaitForTimeout: | CODE |
| HIGH | tests/end2end/features/test_downloads_bdd.py | 27 | except AttributeError: | CODE |
| HIGH | tests/helpers/fixtures.py | 170 | except ImportError: | CODE |
| HIGH | tests/helpers/fixtures.py | 333 | except configexc.NoOptionError: | CODE |
| HIGH | tests/helpers/fixtures.py | 424 | except AttributeError: | CODE |
| HIGH | qutebrowser/misc/sessions.py | 665 | except KeyError: | CODE |
| HIGH | qutebrowser/misc/sessions.py | 366 | except SessionNotFoundError: | CODE |
| HIGH | qutebrowser/misc/ipc.py | 493 | except OSError: | CODE |
| HIGH | qutebrowser/misc/ipc.py | 456 | except TypeError: | CODE |
| HIGH | qutebrowser/misc/miscwidgets.py | 381 | except KeyError: | CODE |
| HIGH | qutebrowser/misc/crashsignal.py | 340 | except KeyError: | CODE |
| HIGH | qutebrowser/misc/earlyinit.py | 318 | except ImportError: | CODE |
| HIGH | qutebrowser/misc/throttle.py | 75 | except TypeError: | CODE |
| HIGH | qutebrowser/mainwindow/mainwindow.py | 697 | except KeyError: | CODE |
| HIGH | qutebrowser/mainwindow/tabbedbrowser.py | 1017 | except (AttributeError, ValueError): | CODE |
| HIGH | qutebrowser/mainwindow/tabbedbrowser.py | 512 | except browsertab.WebTabError: | CODE |
| HIGH | qutebrowser/mainwindow/prompt.py | 419 | except UnsupportedOperationError: | CODE |
| HIGH | qutebrowser/mainwindow/prompt.py | 434 | except UnsupportedOperationError: | CODE |
| HIGH | qutebrowser/config/configtypes.py | 1096 | except ValueError: | CODE |
| HIGH | qutebrowser/config/configfiles.py | 85 | except configparser.DuplicateSectionError: | CODE |
| HIGH | qutebrowser/utils/qtutils.py | 202 | except AttributeError: | CODE |
| HIGH | qutebrowser/utils/version.py | 161 | except KeyError: | CODE |
| HIGH | qutebrowser/utils/version.py | 892 | except ImportError: | CODE |
| HIGH | qutebrowser/utils/objreg.py | 126 | except KeyError: | CODE |
| HIGH | qutebrowser/utils/objreg.py | 99 | except RuntimeError: | CODE |
| HIGH | qutebrowser/utils/debug.py | 132 | except AttributeError: | CODE |
| HIGH | qutebrowser/utils/debug.py | 112 | except ValueError: | CODE |
| HIGH | qutebrowser/utils/debug.py | 71 | except TypeError: # pragma: no cover | CODE |
| HIGH | qutebrowser/utils/standarddir.py | 151 | except KeyError: | CODE |
| HIGH | qutebrowser/browser/pdfjs.py | 224 | except PDFJSNotFound: | CODE |
| HIGH | qutebrowser/browser/inspector.py | 175 | except KeyError: | CODE |
| HIGH | qutebrowser/browser/qtnetworkdownloads.py | 465 | except AttributeError: | CODE |
| 29 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/unit/misc/test_ipc.py | 495 | (b'{"args": [], "target_arg": null, "protocol_version": ' + OLD_VERSION + | CODE |
| HIGH⚡ | tests/unit/misc/test_ipc.py | 497 | (b'{"args": [], "target_arg": null, "protocol_version": ' + NEW_VERSION + | CODE |
| HIGH⚡ | tests/unit/misc/test_ipc.py | 499 | (b'{"args": [], "target_arg": null, "protocol_version": "foo"}\n', | CODE |
| HIGH⚡ | tests/unit/misc/test_ipc.py | 501 | (b'{"args": [], "target_arg": null}\n', 'invalid version'), | CODE |
| HIGH | tests/unit/misc/test_ipc.py | 520 | '{{"args": ["two"], "target_arg": null,' | CODE |
| HIGH | tests/unit/utils/test_version.py | 886 | // Initializing PDFJS global object (if still undefined) | COMMENT |
| HIGH | tests/unit/browser/test_qutescheme.py | 35 | ids=lambda url: url.toString(), | CODE |
| HIGH | tests/unit/browser/webkit/network/test_pac.py | 159 | return null; | CODE |
| HIGH⚡ | tests/unit/components/test_hostblock.py | 217 | blocklist1.toString(), | CODE |
| HIGH⚡ | tests/unit/components/test_hostblock.py | 218 | blocklist2.toString(), | CODE |
| HIGH⚡ | tests/unit/components/test_hostblock.py | 219 | blocklist3.toString(), | CODE |
| HIGH⚡ | tests/unit/components/test_hostblock.py | 220 | blocklist4.toString(), | CODE |
| HIGH⚡ | tests/unit/components/test_hostblock.py | 221 | blocklist5.toString(), | CODE |
| HIGH | tests/unit/components/test_hostblock.py | 365 | hosts_to_block = generic_blocklists(tmp_path) + [dl_fail_blocklist.toString()] | CODE |
| HIGH | tests/unit/components/test_hostblock.py | 403 | config_stub.val.content.blocking.hosts.lists = [url.toString()] | CODE |
| HIGH | tests/unit/components/test_hostblock.py | 502 | config_stub.val.content.blocking.hosts.lists = [blocklist.toString()] | CODE |
| HIGH⚡ | tests/unit/javascript/test_greasemonkey.py | 386 | result.push(window.$); | CODE |
| HIGH⚡ | tests/unit/javascript/test_greasemonkey.py | 387 | result.push($); | CODE |
| HIGH⚡ | tests/unit/javascript/test_greasemonkey.py | 392 | result.push(window.$); | CODE |
| HIGH⚡ | tests/unit/javascript/test_greasemonkey.py | 393 | result.push($); | CODE |
| HIGH | tests/unit/javascript/test_greasemonkey.py | 407 | result.push(window.$); | CODE |
| HIGH | tests/unit/javascript/test_greasemonkey.py | 408 | result.push($); | CODE |
| HIGH | tests/unit/javascript/stylesheet/test_stylesheet_js.py | 49 | "window.getComputedStyle({document}, null)" | CODE |
| HIGH | qutebrowser/mainwindow/tabbedbrowser.py | 549 | first_tab_urlstr = first_tab_url.toString().rstrip('/') | CODE |
| HIGH | qutebrowser/utils/qtlog.py | 103 | ('QObject::connect: Cannot connect (null)::stateChanged(' | CODE |
| HIGH | qutebrowser/utils/urlutils.py | 60 | QUrl.FormattingOptions values, i.e. can be passed to QUrl.toString(). | STRING |
| HIGH | qutebrowser/utils/urlutils.py | 447 | mimetype, _encoding = mimetypes.guess_type(url.toString()) | CODE |
| HIGH | qutebrowser/browser/webkit/webkittab.py | 482 | (!position && sel.anchorOffset < sel.focusOffset || | CODE |
| HIGH | qutebrowser/browser/webkit/webkittab.py | 495 | } else if (aElm && aElm !== document.body) { | CODE |
| HIGH | qutebrowser/browser/webkit/webkitelem.py | 82 | """Raise an exception if the element vanished (is null).""" | STRING |
| HIGH | qutebrowser/browser/webkit/webkitelem.py | 110 | val = self._elem.evaluateJavaScript('this.isContentEditable || false') | CODE |
| HIGH | qutebrowser/browser/webkit/webkitelem.py | 163 | event.initTextEvent("textInput", true, true, null, text); | CODE |
| HIGH | qutebrowser/browser/network/pac.py | 164 | raise EvalProxyError(err.format(ret.toString())) | CODE |
| HIGH | qutebrowser/browser/network/pac.py | 190 | raise EvalProxyError(err.format(self._resolver.toString())) | CODE |
| HIGH | qutebrowser/browser/network/pac.py | 221 | result_str = result.toString() | CODE |
| HIGH | qutebrowser/components/braveadblock.py | 204 | request_url.toString(), | CODE |
| HIGH | qutebrowser/components/braveadblock.py | 205 | first_party_url.toString(), | CODE |
| HIGH⚡ | scripts/dev/update_version.py | 95 | print("* git checkout main && git cherry-pick -x v{v} && " | CODE |
| HIGH⚡ | scripts/dev/update_version.py | 102 | print("* Linux: git fetch && git checkout v{v} && " | CODE |
| HIGH⚡ | scripts/dev/update_version.py | 108 | print("* macOS: git fetch && git checkout v{v} && " | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 11 | CODE | |
| LOW | tests/conftest.py | 19 | CODE | |
| LOW | tests/conftest.py | 20 | CODE | |
| LOW | tests/conftest.py | 21 | CODE | |
| LOW | tests/conftest.py | 22 | CODE | |
| LOW | tests/conftest.py | 30 | CODE | |
| LOW | tests/conftest.py | 302 | CODE | |
| LOW | tests/conftest.py | 315 | CODE | |
| LOW | tests/conftest.py | 395 | CODE | |
| LOW | tests/conftest.py | 304 | CODE | |
| LOW | tests/conftest.py | 320 | CODE | |
| LOW | tests/unit/misc/test_checkpyver.py | 63 | CODE | |
| LOW | tests/unit/config/test_configfiles.py | 177 | CODE | |
| LOW | tests/unit/config/test_configdata.py | 14 | CODE | |
| LOW | tests/unit/browser/test_notification.py | 18 | CODE | |
| LOW | tests/end2end/conftest.py | 21 | CODE | |
| LOW | tests/end2end/conftest.py | 22 | CODE | |
| LOW | tests/end2end/conftest.py | 22 | CODE | |
| LOW | tests/end2end/conftest.py | 22 | CODE | |
| LOW | tests/end2end/conftest.py | 22 | CODE | |
| LOW | tests/end2end/conftest.py | 23 | CODE | |
| LOW | tests/end2end/conftest.py | 23 | CODE | |
| LOW | tests/end2end/conftest.py | 23 | CODE | |
| LOW | tests/end2end/conftest.py | 23 | CODE | |
| LOW | tests/end2end/conftest.py | 23 | CODE | |
| LOW | tests/end2end/conftest.py | 29 | CODE | |
| LOW | tests/end2end/features/test_caret_bdd.py | 8 | CODE | |
| LOW | tests/helpers/testutils.py | 271 | CODE | |
| LOW | qutebrowser/app.py | 60 | CODE | |
| LOW | qutebrowser/app.py | 61 | CODE | |
| LOW | qutebrowser/misc/utilcmds.py | 21 | CODE | |
| LOW | qutebrowser/misc/backendproblem.py | 202 | CODE | |
| LOW | qutebrowser/misc/backendproblem.py | 202 | CODE | |
| LOW | qutebrowser/misc/backendproblem.py | 211 | CODE | |
| LOW | qutebrowser/misc/backendproblem.py | 211 | CODE | |
| LOW | qutebrowser/misc/objects.py | 14 | CODE | |
| LOW | qutebrowser/misc/objects.py | 15 | CODE | |
| LOW | qutebrowser/misc/objects.py | 16 | CODE | |
| LOW | qutebrowser/misc/earlyinit.py | 210 | CODE | |
| LOW | qutebrowser/misc/earlyinit.py | 317 | CODE | |
| LOW | qutebrowser/mainwindow/windowundo.py | 18 | CODE | |
| LOW | qutebrowser/config/config.py | 22 | CODE | |
| LOW | qutebrowser/config/config.py | 22 | CODE | |
| LOW | qutebrowser/config/config.py | 23 | CODE | |
| LOW | qutebrowser/config/configcommands.py | 22 | CODE | |
| LOW | qutebrowser/config/configcommands.py | 22 | CODE | |
| LOW | qutebrowser/config/configfiles.py | 30 | CODE | |
| LOW | qutebrowser/config/configutils.py | 23 | CODE | |
| LOW | qutebrowser/config/qtargs.py | 53 | CODE | |
| LOW | qutebrowser/qt/webenginewidgets.py | 24 | CODE | |
| LOW | qutebrowser/qt/webenginewidgets.py | 26 | CODE | |
| LOW | qutebrowser/qt/webenginewidgets.py | 28 | CODE | |
| LOW | qutebrowser/qt/webenginecore.py | 24 | CODE | |
| LOW | qutebrowser/qt/webenginecore.py | 26 | CODE | |
| LOW | qutebrowser/qt/webenginecore.py | 27 | CODE | |
| LOW | qutebrowser/qt/webenginecore.py | 27 | CODE | |
| LOW | qutebrowser/qt/webenginecore.py | 27 | CODE | |
| LOW | qutebrowser/qt/webenginecore.py | 27 | CODE | |
| LOW | qutebrowser/qt/webenginecore.py | 27 | CODE | |
| LOW | qutebrowser/qt/webenginecore.py | 27 | CODE | |
| 98 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 359 | CODE | |
| LOW | tests/unit/misc/test_ipc.py | 544 | CODE | |
| LOW | tests/unit/config/test_configfiles.py | 390 | CODE | |
| LOW | tests/unit/config/test_configtypes.py | 173 | CODE | |
| LOW | tests/unit/config/test_config.py | 524 | CODE | |
| LOW | tests/unit/config/test_configinit.py | 106 | CODE | |
| LOW | tests/unit/utils/test_version.py | 1365 | CODE | |
| LOW | tests/unit/utils/test_urlutils.py | 409 | CODE | |
| LOW | tests/unit/utils/test_jinja.py | 19 | CODE | |
| LOW | tests/unit/utils/test_jinja.py | 21 | CODE | |
| LOW | tests/unit/components/test_hostblock.py | 73 | CODE | |
| LOW | tests/end2end/conftest.py | 70 | CODE | |
| LOW | tests/end2end/conftest.py | 154 | CODE | |
| LOW | tests/end2end/features/conftest.py | 191 | CODE | |
| LOW | tests/helpers/stubs.py | 707 | CODE | |
| LOW | qutebrowser/app.py | 217 | CODE | |
| LOW | qutebrowser/misc/quitter.py | 66 | CODE | |
| LOW | qutebrowser/misc/crashsignal.py | 106 | CODE | |
| LOW | qutebrowser/misc/backendproblem.py | 171 | CODE | |
| LOW | qutebrowser/misc/backendproblem.py | 248 | CODE | |
| LOW | qutebrowser/misc/split.py | 42 | CODE | |
| LOW | qutebrowser/misc/guiprocess.py | 132 | CODE | |
| LOW | qutebrowser/mainwindow/tabwidget.py | 439 | CODE | |
| LOW | qutebrowser/mainwindow/tabwidget.py | 543 | CODE | |
| LOW | qutebrowser/mainwindow/tabwidget.py | 844 | CODE | |
| LOW | qutebrowser/mainwindow/mainwindow.py | 401 | CODE | |
| LOW | qutebrowser/mainwindow/tabbedbrowser.py | 259 | CODE | |
| LOW | qutebrowser/mainwindow/tabbedbrowser.py | 446 | CODE | |
| LOW | qutebrowser/mainwindow/tabbedbrowser.py | 478 | CODE | |
| LOW | qutebrowser/mainwindow/tabbedbrowser.py | 686 | CODE | |
| LOW | qutebrowser/mainwindow/prompt.py | 545 | CODE | |
| LOW | qutebrowser/mainwindow/prompt.py | 695 | CODE | |
| LOW | qutebrowser/mainwindow/statusbar/command.py | 255 | CODE | |
| LOW | qutebrowser/mainwindow/statusbar/bar.py | 202 | CODE | |
| LOW | qutebrowser/mainwindow/statusbar/bar.py | 238 | CODE | |
| LOW | qutebrowser/mainwindow/statusbar/bar.py | 284 | CODE | |
| LOW | qutebrowser/mainwindow/statusbar/bar.py | 322 | CODE | |
| LOW | qutebrowser/config/configtypes.py | 837 | CODE | |
| LOW | qutebrowser/config/configdata.py | 158 | CODE | |
| LOW | qutebrowser/config/configfiles.py | 156 | CODE | |
| LOW | qutebrowser/config/configfiles.py | 878 | CODE | |
| LOW | qutebrowser/config/configexc.py | 80 | CODE | |
| LOW | qutebrowser/config/websettings.py | 160 | CODE | |
| LOW | qutebrowser/config/qtargs.py | 78 | CODE | |
| LOW | qutebrowser/config/qtargs.py | 175 | CODE | |
| LOW | qutebrowser/config/qtargs.py | 393 | CODE | |
| LOW | qutebrowser/completion/completionwidget.py | 180 | CODE | |
| LOW | qutebrowser/completion/completionwidget.py | 299 | CODE | |
| LOW | qutebrowser/utils/version.py | 109 | CODE | |
| LOW | qutebrowser/utils/version.py | 254 | CODE | |
| LOW | qutebrowser/utils/version.py | 453 | CODE | |
| LOW | qutebrowser/utils/debug.py | 43 | CODE | |
| LOW | qutebrowser/utils/debug.py | 57 | CODE | |
| LOW | qutebrowser/utils/urlutils.py | 295 | CODE | |
| LOW | qutebrowser/utils/urlutils.py | 385 | CODE | |
| LOW | qutebrowser/utils/javascript.py | 40 | CODE | |
| LOW | qutebrowser/utils/standarddir.py | 306 | CODE | |
| LOW | qutebrowser/extensions/loader.py | 130 | CODE | |
| LOW | qutebrowser/keyinput/modeparsers.py | 163 | CODE | |
| LOW | qutebrowser/keyinput/modeparsers.py | 265 | CODE | |
| 62 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/config/test_configtypes.py | 0 | patch the cmdutils module to provide fake commands. | STRING |
| HIGH | tests/unit/completion/test_models.py | 0 | patch the cmdutils module to provide fake commands. | STRING |
| HIGH | tests/unit/completion/test_completer.py | 0 | patch the cmdutils module to provide fake commands. | STRING |
| HIGH | tests/unit/commands/test_parser.py | 0 | patch the cmdutils module to provide fake commands. | STRING |
| HIGH | tests/unit/completion/test_listcategory.py | 0 | validate the filtering and sorting results of set_pattern. | STRING |
| HIGH | tests/unit/completion/test_histcategory.py | 0 | validate the filtering and sorting results of set_pattern. | STRING |
| HIGH | tests/unit/completion/test_completionmodel.py | 0 | validate the filtering and sorting results of set_pattern. | STRING |
| HIGH | qutebrowser/qt/webenginewidgets.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/webenginecore.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/dbus.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/core.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/test.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/widgets.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/opengl.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/network.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/printsupport.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/sql.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/qml.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| HIGH | qutebrowser/qt/gui.py | 0 | wrapped qt imports for qt gui. all code in qutebrowser should use this module instead of importing from pyqt/pyside dire | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/misc/userscripts/test_qute_lastpass.py | 80 | 'fake-key \\j\\o\\h\\n\\.<less><less>\\d\\o\\e<greater><greater>\\@' | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 158 | call('fake-key \\f\\a\\k\\e\\@\\f\\a\\k\\e\\.\\c\\o\\m'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 159 | call('fake-key <Tab>'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 160 | call('fake-key \\f\\o\\o\\b\\a\\r'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 206 | call('fake-key \\f\\a\\k\\e\\@\\f\\a\\k\\e\\.\\c\\o\\m'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 220 | call('fake-key \\f\\o\\o\\b\\a\\r'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 259 | 'fake-key \\j\\o\\h\\n\\.\\d\\o\\e\\@\\f\\a\\k\\e\\.\\c\\o\\m'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 260 | call('fake-key <Tab>'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 261 | call('fake-key \\b\\a\\r\\f\\o\\o'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 330 | 'fake-key \\j\\o\\h\\n\\.\\d\\o\\e\\@\\f\\a\\k\\e\\.\\c\\o\\m'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 331 | call('fake-key <Tab>'), | CODE |
| LOW⚡ | tests/unit/misc/userscripts/test_qute_lastpass.py | 332 | call('fake-key \\b\\a\\r\\f\\o\\o'), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1863 | ({'placeholder': True}, '[foo, "{}", bar]', ['foo', '{}', 'bar']), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1864 | ({'placeholder': True}, '["foo{}bar"]', ['foo{}bar']), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1865 | ({'placeholder': True}, '[foo, "bar {}"]', ['foo', 'bar {}']), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1866 | ({'placeholder': True}, '[f, "{file}", b]', ['f', '{file}', 'b']), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1867 | ({'placeholder': True}, '["f{file}b"]', ['f{file}b']), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1868 | ({'placeholder': True}, '[f, "b {file}"]', ['f', 'b {file}']), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1876 | ({'placeholder': True}, '[foo, bar]'), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1877 | ({'placeholder': True}, '[foo, "{", "}", bar'), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1878 | ({'placeholder': True}, '[foo, "{fi", "le}", bar'), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1881 | ({'placeholder': True}, '[f, "{wrong}", b]'), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1882 | ({'placeholder': True}, '["f{wrong}b"]'), | CODE |
| LOW⚡ | tests/unit/config/test_configtypes.py | 1883 | ({'placeholder': True}, '[f, "b {wrong}"]'), | CODE |
| LOW | …/unit/javascript/position_caret/scrolled_down_img.html | 3 | <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante d | CODE |
| LOW | …/unit/javascript/position_caret/scrolled_down_img.html | 3 | <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante d | CODE |
| LOW | tests/unit/javascript/position_caret/scrolled_down.html | 3 | <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante d | CODE |
| LOW | tests/unit/javascript/position_caret/scrolled_down.html | 3 | <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante d | CODE |
| LOW | tests/end2end/data/hints/html/zoom_precision.html | 12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | tests/end2end/data/hints/html/zoom_precision.html | 12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | tests/end2end/data/hints/html/wrapped.html | 12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | tests/end2end/data/hints/html/wrapped.html | 12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | tests/end2end/data/hints/html/wrapped_button.html | 12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | tests/end2end/data/hints/html/wrapped_button.html | 12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | tests/manual/hints/find_implementation.html | 11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | tests/manual/hints/find_implementation.html | 11 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | qutebrowser/config/configdata.yml | 3883 | <Shift-Escape>: fake-key <Escape> | CODE |
| LOW⚡ | qutebrowser/browser/hints.py | 1084 | "placeholder": lambda elem: elem["placeholder"], | CODE |
| LOW⚡ | qutebrowser/browser/hints.py | 1093 | "input": ["name", "placeholder"], | CODE |
| LOW⚡ | qutebrowser/browser/hints.py | 1094 | "textarea": ["name", "placeholder"], | CODE |
| LOW⚡ | qutebrowser/browser/commands.py | 1771 | def fake_key(self, keystring, global_=False): | CODE |
| LOW⚡ | qutebrowser/browser/commands.py | 1774 | :fake-key xy - sends the keychain 'xy' | STRING |
| LOW⚡ | qutebrowser/browser/commands.py | 1775 | :fake-key <Ctrl-x> - sends Ctrl-x | STRING |
| LOW⚡ | qutebrowser/browser/commands.py | 1776 | :fake-key <Escape> - sends the escape key | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | qutebrowser/misc/throttle.py | 83 | def set_delay(self, delay_ms: int) -> None: | CODE |
| LOW | qutebrowser/mainwindow/tabwidget.py | 337 | def update_tab_favicon(self, tab: browsertab.AbstractTab) -> None: | CODE |
| LOW | qutebrowser/mainwindow/tabbedbrowser.py | 124 | def update_size(self) -> None: | CODE |
| LOW | qutebrowser/mainwindow/messageview.py | 79 | def update_from_info(self, info: message.MessageInfo) -> None: | CODE |
| LOW | qutebrowser/mainwindow/statusbar/searchmatch.py | 20 | def set_match(self, search_match: browsertab.SearchMatch) -> None: | CODE |
| LOW | qutebrowser/config/configtypes.py | 1211 | def set_defaults(cls, default_family: list[str], default_size: str) -> None: | CODE |
| LOW | qutebrowser/config/configinit.py | 83 | def _update_font_defaults(setting: str) -> None: | CODE |
| LOW | qutebrowser/config/config.py | 537 | def update_mutables(self, *, save_yaml: bool = False) -> None: | CODE |
| LOW | qutebrowser/config/configfiles.py | 137 | def _set_changed_attributes(self) -> None: | CODE |
| LOW | qutebrowser/config/configfiles.py | 156 | def _set_qutebrowser_changed_attribute(self) -> None: | CODE |
| LOW | qutebrowser/config/configfiles.py | 181 | def _set_chromium_changed_attribute(self) -> None: | CODE |
| LOW | qutebrowser/config/websettings.py | 105 | def set_attribute(self, name: str, value: Any) -> None: | CODE |
| LOW | qutebrowser/config/websettings.py | 126 | def set_font_size(self, name: str, value: int | usertypes.Unset) -> None: | CODE |
| LOW⚡ | qutebrowser/config/websettings.py | 155 | def set_default_text_encoding(self, encoding: str | usertypes.Unset) -> None: | CODE |
| LOW⚡ | qutebrowser/config/websettings.py | 160 | def _update_setting(self, setting: str, value: Any) -> None: | CODE |
| LOW | qutebrowser/config/websettings.py | 175 | def update_setting(self, setting: str) -> None: | CODE |
| LOW | qutebrowser/config/websettings.py | 180 | def update_for_url(self, url: QUrl) -> None: | CODE |
| LOW | qutebrowser/qt/machinery.py | 111 | def set_module_error(self, name: str, error: Exception) -> None: | CODE |
| LOW | qutebrowser/qt/machinery.py | 235 | def _set_globals(info: SelectionInfo) -> None: | CODE |
| LOW | qutebrowser/completion/completionwidget.py | 383 | def set_pattern(self, pattern: str) -> None: | CODE |
| LOW | qutebrowser/completion/models/filepathcategory.py | 65 | def set_pattern(self, val: str) -> None: | CODE |
| LOW | qutebrowser/utils/log.py | 451 | def update_from(self, other: 'LogFilter') -> None: | CODE |
| LOW | qutebrowser/utils/utils.py | 516 | def set_clipboard(data: str, selection: bool = False) -> None: | CODE |
| LOW | qutebrowser/keyinput/modeparsers.py | 111 | def set_inhibited_timeout(self, timeout: int) -> None: | CODE |
| LOW | qutebrowser/browser/browsertab.py | 477 | def _set_factor_internal(self, factor: float) -> None: | CODE |
| LOW | qutebrowser/browser/browsertab.py | 480 | def set_factor(self, factor: float, *, fuzzyval: bool = True) -> None: | CODE |
| LOW | qutebrowser/browser/browsertab.py | 848 | def set_muted(self, muted: bool, override: bool = False) -> None: | CODE |
| LOW | qutebrowser/browser/browsertab.py | 1068 | def _set_widget(self, widget: _WidgetType) -> None: | CODE |
| LOW | qutebrowser/browser/browsertab.py | 1096 | def _set_load_status(self, val: usertypes.LoadStatus) -> None: | CODE |
| LOW | qutebrowser/browser/browsertab.py | 1197 | def _update_load_status(self, ok: bool) -> None: | CODE |
| LOW | qutebrowser/browser/browsertab.py | 1297 | def set_pinned(self, pinned: bool) -> None: | CODE |
| LOW | qutebrowser/browser/inspector.py | 98 | def _set_widget(self, widget: _WidgetType) -> None: | CODE |
| LOW | qutebrowser/browser/inspector.py | 131 | def set_position(self, position: Position | None) -> None: | CODE |
| LOW | qutebrowser/browser/webelem.py | 115 | def set_value(self, value: JsValueType) -> None: | CODE |
| LOW | qutebrowser/browser/hints.py | 106 | def update_text(self, matched: str, unmatched: str) -> None: | CODE |
| LOW | qutebrowser/browser/webengine/webenginesettings.py | 234 | def _set_js_clipboard(self, value: str | usertypes.Unset) -> None: | CODE |
| LOW | qutebrowser/browser/webengine/webengineelem.py | 132 | def set_value(self, value: webelem.JsValueType) -> None: | CODE |
| LOW | qutebrowser/browser/webengine/webenginetab.py | 855 | def set_muted(self, muted: bool, override: bool = False) -> None: | CODE |
| LOW | qutebrowser/browser/webkit/webkittab.py | 815 | def set_muted(self, muted: bool, override: bool = False) -> None: | CODE |
| LOW | qutebrowser/browser/webkit/webkitelem.py | 120 | def set_value(self, value: webelem.JsValueType) -> None: | CODE |
| LOW | qutebrowser/components/hostblock.py | 276 | def update_files(self) -> None: | CODE |
| LOW | qutebrowser/components/braveadblock.py | 292 | def update_files(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/utils/test_error.py | 34 | except Exception as e: | CODE |
| LOW | qutebrowser/misc/utilcmds.py | 155 | except Exception: | CODE |
| LOW | qutebrowser/misc/utilcmds.py | 161 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashsignal.py | 129 | except Exception: | CODE |
| LOW⚡ | qutebrowser/misc/crashsignal.py | 198 | except Exception as e: | CODE |
| LOW⚡ | qutebrowser/misc/crashsignal.py | 204 | except Exception as e: | CODE |
| LOW⚡ | qutebrowser/misc/crashsignal.py | 210 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashsignal.py | 268 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 175 | except Exception: | CODE |
| LOW⚡ | qutebrowser/misc/crashdialog.py | 226 | except Exception: | CODE |
| LOW⚡ | qutebrowser/misc/crashdialog.py | 230 | except Exception: | CODE |
| LOW⚡ | qutebrowser/misc/crashdialog.py | 235 | except Exception: | CODE |
| LOW⚡ | qutebrowser/misc/crashdialog.py | 239 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 276 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 295 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 302 | except Exception as e: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 410 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 446 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 506 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 521 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 585 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 636 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 641 | except Exception: | CODE |
| LOW | qutebrowser/misc/crashdialog.py | 654 | except Exception: | CODE |
| LOW | qutebrowser/config/configfiles.py | 990 | except Exception as e: | CODE |
| LOW | qutebrowser/components/misccommands.py | 409 | except Exception as e: | CODE |
| LOW | scripts/dev/misc_checks.py | 156 | except Exception: | CODE |
| LOW | scripts/dev/misc_checks.py | 333 | except Exception: | CODE |
| LOW | scripts/dev/misc_checks.py | 412 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pytest.ini | 61 | # Qt 6.5 debug build | COMMENT |
| LOW | misc/requirements/README.md | 21 | #@ replace: foo bar | COMMENT |
| LOW | tests/unit/config/test_configfiles.py | 1421 | # file. | COMMENT |
| LOW | tests/unit/config/test_configfiles.py | 1501 | commented=False) | COMMENT |
| LOW | tests/unit/browser/webkit/test_webkitelem.py | 541 | elems: webkitelem.WebKitElement | COMMENT |
| LOW | tests/unit/browser/webkit/test_webkitelem.py | 621 | 0, 0 300, 0 | COMMENT |
| LOW | qutebrowser/misc/earlyinit.py | 101 | when sys.stderr got replaced, e.g. by "Python Tools for Visual Studio". | COMMENT |
| LOW | qutebrowser/config/qtargs.py | 101 | pass | COMMENT |
| LOW | qutebrowser/config/qtargs.py | 121 | # just turn it on unconditionally on Linux, which shouldn't hurt. | COMMENT |
| LOW | qutebrowser/qt/__init__.py | 1 | # SPDX-FileCopyrightText: Freya Bruhin (The Compiler) <mail@qutebrowser.org> | COMMENT |
| LOW | qutebrowser/utils/version.py | 821 | COMMENT | |
| LOW | qutebrowser/utils/qtlog.py | 61 | qtcore.QtMsgType.QtInfoMsg: logging.INFO, | COMMENT |
| LOW | qutebrowser/utils/urlutils.py | 521 | """ | COMMENT |
| LOW | qutebrowser/browser/browsertab.py | 1001 | #: Signal emitted before load starts (URL as QUrl) | COMMENT |
| LOW | qutebrowser/browser/downloads.py | 501 | def _do_die(self): | COMMENT |
| LOW | qutebrowser/browser/webengine/webenginesettings.py | 541 | if not config.val.content.site_specific_quirks.enabled: | COMMENT |
| LOW | qutebrowser/browser/webengine/notification.py | 1081 | # Or in the words of dunst: | COMMENT |
| LOW | qutebrowser/browser/webengine/tabhistory.py | 21 | COMMENT | |
| LOW | qutebrowser/browser/webengine/tabhistory.py | 41 | COMMENT | |
| LOW | qutebrowser/browser/webkit/network/networkmanager.py | 61 | # https://en.wikipedia.org/wiki/Data_Encryption_Standard#Security_and_cryptanalysis | COMMENT |
| LOW | qutebrowser/components/readlinecommands.py | 101 | is_boundary = text[target_position - 1] in delim | COMMENT |
| LOW | qutebrowser/components/readlinecommands.py | 121 | # trying to delete 7 chars: | COMMENT |
| LOW | qutebrowser/api/config.py | 1 | # SPDX-FileCopyrightText: Freya Bruhin (The Compiler) <mail@qutebrowser.org> | COMMENT |
| LOW | qutebrowser/javascript/.eslintrc.yaml | 1 | # qutebrowser's way of using eslint is perhaps a bit untypical: We turn on *all* | COMMENT |
| LOW | doc/extapi/conf.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | doc/extapi/conf.py | 61 | # | COMMENT |
| LOW | doc/extapi/conf.py | 81 | COMMENT | |
| LOW | doc/extapi/conf.py | 161 | # -- Options for Epub output ------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/config/test_configutils.py | 359 | CODE | |
| MEDIUM | tests/unit/config/test_configutils.py | 360 | CODE | |
| MEDIUM | tests/unit/config/test_configutils.py | 361 | CODE | |
| MEDIUM | tests/unit/config/test_configutils.py | 363 | CODE | |
| MEDIUM | tests/unit/config/test_configutils.py | 367 | CODE | |
| MEDIUM | tests/unit/config/test_configutils.py | 368 | CODE | |
| MEDIUM | tests/unit/config/test_configutils.py | 369 | CODE | |
| MEDIUM | tests/unit/config/test_configutils.py | 373 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/conftest.py | 275 | Select the backend for running tests. The backend is auto-selected in the following manner: 1. Use QtWebKit if | STRING |
| HIGH | qutebrowser/misc/lineparser.py | 70 | Open self._configfile for reading. Args: mode: The mode to use ('a'/'r'/'w') Raises: | STRING |
| HIGH | qutebrowser/commands/userscripts.py | 372 | Search userscript directories for given command. Raises: NotFoundError if the command could not be found. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/utils/usertypes/test_timer.py | 78 | # Check if there are any stray timers still alive. | COMMENT |
| LOW⚡ | tests/unit/browser/test_hints.py | 94 | # Check if hints are unique | COMMENT |
| LOW⚡ | tests/unit/browser/test_hints.py | 97 | # Check if any hints are shorter than min_len | COMMENT |
| LOW⚡ | tests/unit/browser/test_hints.py | 106 | # Check if hint_lens are more than 1 apart | COMMENT |
| LOW⚡ | tests/unit/browser/test_hints.py | 116 | # Check if we have any unique prefixes. For example, 'la' | COMMENT |
| LOW | tests/unit/scripts/test_check_coverage.py | 85 | # Check if coverage plugin is available | STRING |
| LOW | qutebrowser/utils/urlmatch.py | 265 | # Check if the test host is a subdomain of our host. | COMMENT |
| LOW | qutebrowser/browser/webengine/webenginetab.py | 242 | # Check if the match count change is opposite to the search direction | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 56 | CODE | |
| LOW | tests/unit/browser/webkit/test_webkitelem.py | 26 | CODE | |
| LOW | tests/helpers/stubs.py | 245 | CODE | |
| LOW | qutebrowser/app.py | 116 | CODE | |
| LOW | qutebrowser/misc/sessions.py | 574 | CODE | |
| LOW | qutebrowser/config/configtypes.py | 396 | CODE | |
| LOW | qutebrowser/qt/_core_pyqtproperty.py | 36 | CODE | |
| LOW | qutebrowser/browser/commands.py | 284 | CODE | |
| LOW | qutebrowser/browser/webkit/webkittab.py | 846 | CODE | |
| LOW | qutebrowser/commands/command.py | 66 | CODE | |
| LOW | scripts/dev/update_3rdparty.py | 176 | CODE | |
| LOW | scripts/dev/run_pylint_on_tests.py | 74 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/utils/test_standarddir.py | 303 | # This file is a cache directory tag created by qutebrowser. | COMMENT |
| MEDIUM | qutebrowser/utils/standarddir.py | 359 | f.write("# This file is a cache directory tag created by " | CODE |
| MEDIUM | scripts/dev/recompile_requirements.py | 290 | elif line[1:].startswith('# This file is automatically'): | CODE |
| MEDIUM | scripts/dev/recompile_requirements.py | 375 | f.write("# This file is automatically generated by " | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/completion/test_completer.py | 217 | # open has maxsplit=0, so all args just set the pattern, not the model | COMMENT |
| LOW | qutebrowser/browser/qtnetworkdownloads.py | 553 | # User doesn't want to be asked, so just use the download_dir | COMMENT |
| LOW | qutebrowser/browser/webengine/webenginedownloads.py | 293 | # User doesn't want to be asked, so just use the download_dir | COMMENT |
| LOW | qutebrowser/browser/webengine/webenginetab.py | 1145 | # make sure we replace existing scripts, not just add new ones. | COMMENT |
| LOW | qutebrowser/browser/webengine/webenginequtescheme.py | 107 | # We can't just use the QBuffer constructor taking a QByteArray, | COMMENT |