A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.
This report presents the forensic synthetic code analysis of dbcli/mycli, a Python project with 11,942 GitHub stars. SynthScan v2.0 examined 40,611 lines of code across 141 source files, recording 1435 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 34.1 places this repository in the Strong 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 1435 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 | mycli/cli_runner.py | 96 | def expand_dsn_alias_env_vars( | CODE |
| LOW | mycli/config.py | 141 | def read_and_decrypt_mylogin_cnf(f: BinaryIO) -> BytesIO | None: | CODE |
| LOW | mycli/completion_refresher.py | 129 | def _invalidate_after_visibility_deadline(self) -> None: | CODE |
| LOW⚡ | mycli/client.py | 204 | def _invalidate_prompt_session(self) -> None: | CODE |
| LOW | mycli/clitoolbar.py | 11 | def create_toolbar_tokens_func( | CODE |
| LOW | mycli/schema_prefetcher.py | 170 | def _invalidate_after_visibility_deadline(self) -> None: | CODE |
| LOW | mycli/client_commands.py | 34 | def register_special_commands(self) -> None: | CODE |
| LOW | mycli/sqlcompleter.py | 1211 | def _register_schema_completions( | CODE |
| LOW | mycli/sqlcompleter.py | 1250 | def quote_collection_if_needed( | CODE |
| LOW | mycli/client_query.py | 59 | def _on_completions_refreshed(self, new_completer: SQLCompleter) -> None: | CODE |
| LOW | mycli/ssh_tunnel.py | 39 | def _check_local_socket_path_limit(path: str) -> None: | CODE |
| LOW | mycli/app_state.py | 65 | def destructive_keywords_from_config(config: ConfigObj) -> list[str]: | CODE |
| LOW | mycli/packages/cli_utils.py | 22 | def is_valid_connection_scheme(text: str) -> tuple[bool, str | None]: | CODE |
| LOW | mycli/packages/interactive_utils.py | 28 | def confirm_destructive_query(keywords: list[str], queries: str) -> bool | None: | CODE |
| LOW | mycli/packages/batch_utils.py | 9 | def statements_from_filehandle(file_h: IO) -> Generator[tuple[str, int], None, None]: | CODE |
| LOW | mycli/packages/key_binding_utils.py | 114 | def handle_unprettify_binding( | STRING |
| LOW | mycli/packages/completion_engine.py | 73 | def _keyword_and_special_suggestions() -> list[Suggestion]: | CODE |
| LOW | mycli/packages/completion_engine.py | 78 | def _parse_suggestion_statement(text_before_cursor: str) -> sqlparse.sql.Statement: | CODE |
| LOW | mycli/packages/completion_engine.py | 126 | def _is_single_or_double_quoted(ctx: SuggestContext) -> bool: | CODE |
| LOW | mycli/packages/completion_engine.py | 383 | def _word_starts_with_digit_or_dot(ctx: SuggestContext) -> bool: | CODE |
| LOW | mycli/packages/completion_engine.py | 391 | def _word_inside_single_or_double_quotes(ctx: SuggestContext) -> bool: | CODE |
| LOW | mycli/packages/completion_engine.py | 411 | def _token_is_relation_keyword(ctx: SuggestContext) -> bool: | CODE |
| LOW | mycli/packages/completion_engine.py | 419 | def _token_is_binary_or_comma(ctx: SuggestContext) -> bool: | CODE |
| LOW | mycli/packages/completion_engine.py | 822 | def suggest_based_on_last_token( | CODE |
| LOW | mycli/packages/sql_utils.py | 173 | def extract_table_identifiers(token_stream: Generator[Any, None, None]) -> Generator[tuple[str | None, str, str], None, | STRING |
| LOW | mycli/packages/sql_utils.py | 221 | def extract_columns_from_select(sql: str) -> list[str]: | CODE |
| LOW | mycli/packages/sql_utils.py | 271 | def extract_tables_from_complete_statements(sql: str) -> list[tuple[str | None, str, str | None]]: | CODE |
| LOW | mycli/packages/sql_utils.py | 362 | def query_is_single_table_update(query: str) -> bool: | CODE |
| LOW | mycli/packages/sql_utils.py | 488 | def classify_sandbox_statement(text: str) -> tuple[str | None, str | None]: | CODE |
| LOW⚡ | mycli/packages/special/iocommands.py | 87 | def set_show_warnings_enabled(val: bool) -> None: | CODE |
| LOW⚡ | mycli/packages/special/iocommands.py | 192 | def set_forced_horizontal_output(val: bool) -> None: | CODE |
| LOW | mycli/packages/special/iocommands.py | 390 | def subst_favorite_query_args(query: str, args: list[str]) -> list[str | None]: | CODE |
| LOW | mycli/packages/special/iocommands.py | 702 | def flush_pipe_once_if_written(post_redirect_command: str) -> None: | CODE |
| LOW | mycli/packages/ptoolkit/history.py | 27 | def load_history_with_timestamp(self) -> list[tuple[str, str]]: | CODE |
| LOW | mycli/main_modes/repl.py | 99 | def complete_while_typing_filter() -> bool: | CODE |
| LOW⚡ | mycli/main_modes/repl.py | 169 | def set_external_terminal_tab_title(mycli: 'MyCli') -> None: | CODE |
| LOW | mycli/main_modes/repl.py | 187 | def set_external_terminal_window_title(mycli: 'MyCli') -> None: | CODE |
| LOW | mycli/main_modes/repl.py | 205 | def set_external_multiplex_window_title(mycli: 'MyCli') -> None: | CODE |
| LOW | mycli/main_modes/repl.py | 231 | def set_external_multiplex_pane_title(mycli: 'MyCli') -> None: | CODE |
| LOW | mycli/main_modes/batch.py | 92 | def dispatch_batch_statements( | CODE |
| LOW | mycli/main_modes/batch.py | 132 | def main_batch_with_progress_bar(mycli: 'MyCli', cli_args: 'CliArgs') -> int: | CODE |
| LOW | mycli/main_modes/batch.py | 188 | def main_batch_without_progress_bar(mycli: 'MyCli', cli_args: 'CliArgs') -> int: | CODE |
| LOW | test/utils.py | 245 | def call_click_entrypoint_direct(cli_args: main.CliArgs) -> None: | CODE |
| LOW | test/features/steps/crud_database.py | 40 | def step_db_connect_quoted_tmp(context): | CODE |
| LOW | test/features/steps/crud_database.py | 99 | def step_see_db_dropped_no_default(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 33 | def step_see_named_query_saved(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 39 | def step_see_named_query_executed(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 45 | def step_see_named_query_deleted(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 51 | def step_save_named_query_with_parameters(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 57 | def step_use_named_query_with_parameters(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 63 | def step_see_named_query_with_parameters_executed(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 69 | def step_use_named_query_with_too_few_parameters(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 75 | def step_see_named_query_with_parameters_fail_with_missing_parameters(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 81 | def step_use_named_query_with_too_many_parameters(context): | CODE |
| LOW⚡ | test/features/steps/named_queries.py | 87 | def step_see_named_query_with_parameters_fail_with_extra_parameters(context): | CODE |
| LOW | test/features/steps/connection.py | 14 | def step_run_cli_without_args(context, excluded_args, exact_args=""): | CODE |
| LOW | test/features/steps/iocommands.py | 107 | def step_see_csv_result_in_redirected_ouput(context, result): | STRING |
| LOW | test/features/steps/iocommands.py | 115 | def step_see_text_result_in_redirected_ouput(context, result): | STRING |
| LOW | test/features/steps/basic_commands.py | 68 | def step_check_application_name(context): | STRING |
| LOW⚡ | test/features/steps/basic_commands.py | 123 | def step_confirm_destructive_command(context): # noqa | STRING |
| 1128 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mycli/cli_runner.py | 1 | CODE | |
| LOW | mycli/cli_runner.py | 27 | CODE | |
| LOW | mycli/client.py | 1 | CODE | |
| LOW | mycli/schema_prefetcher.py | 10 | CODE | |
| LOW | mycli/schema_prefetcher.py | 21 | CODE | |
| LOW | mycli/schema_prefetcher.py | 22 | CODE | |
| LOW | mycli/client_commands.py | 1 | CODE | |
| LOW | mycli/client_connection.py | 1 | CODE | |
| LOW | mycli/sqlcompleter.py | 1 | CODE | |
| LOW | mycli/vault.py | 1 | CODE | |
| LOW | mycli/client_query.py | 1 | CODE | |
| LOW | mycli/ssh_tunnel.py | 1 | CODE | |
| LOW | mycli/app_state.py | 1 | CODE | |
| LOW | mycli/main.py | 1 | CODE | |
| LOW | mycli/output.py | 1 | CODE | |
| LOW | mycli/sqlexecute.py | 1 | CODE | |
| LOW | mycli/packages/cli_utils.py | 1 | CODE | |
| LOW | mycli/packages/key_binding_utils.py | 1 | CODE | |
| LOW | mycli/packages/key_binding_utils.py | 12 | CODE | |
| LOW | mycli/packages/sql_utils.py | 1 | CODE | |
| LOW | mycli/packages/tabular_output/sql_format.py | 3 | CODE | |
| LOW | mycli/packages/special/delimitercommand.py | 1 | CODE | |
| LOW | mycli/packages/special/__init__.py | 3 | CODE | |
| LOW | mycli/packages/special/__init__.py | 3 | CODE | |
| LOW | mycli/packages/special/__init__.py | 3 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| LOW | mycli/packages/special/__init__.py | 8 | CODE | |
| 40 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/features/steps/crud_table.py | 109 | context.cli.sendline("select null;") | CODE |
| HIGH⚡ | test/pytests/test_sqlexecute.py | 356 | run(executor, """create table ts_null(a timestamp null)""") | CODE |
| HIGH⚡ | test/pytests/test_sqlexecute.py | 357 | run(executor, """insert into ts_null values(null)""") | CODE |
| HIGH⚡ | test/pytests/test_sqlexecute.py | 364 | run(executor, """create table dt_null(a datetime null)""") | CODE |
| HIGH⚡ | test/pytests/test_sqlexecute.py | 365 | run(executor, """insert into dt_null values(null)""") | CODE |
| HIGH⚡ | test/pytests/test_sqlexecute.py | 372 | run(executor, """create table date_null(a date null)""") | CODE |
| HIGH⚡ | test/pytests/test_sqlexecute.py | 373 | run(executor, """insert into date_null values(null)""") | CODE |
| HIGH⚡ | test/pytests/test_sqlexecute.py | 380 | run(executor, """create table time_null(a time null)""") | CODE |
| HIGH⚡ | test/pytests/test_sqlexecute.py | 381 | run(executor, """insert into time_null values(null)""") | CODE |
| HIGH | test/pytests/test_completion_engine.py | 1130 | suggestion = suggest_type("SELECT MAX(col1 || FROM tbl", "SELECT MAX(col1 || ") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | mycli/client.py | 197 | print("Error: Unable to read login path file.") | CODE |
| LOW⚡ | mycli/client.py | 211 | except Exception: | CODE |
| LOW⚡ | mycli/client.py | 216 | except Exception: | CODE |
| LOW⚡ | mycli/client.py | 221 | except Exception: | CODE |
| MEDIUM | mycli/client.py | 208 | def close(self) -> None: | CODE |
| LOW | mycli/schema_prefetcher.py | 130 | except Exception as e: # pragma: no cover - defensive | CODE |
| LOW | mycli/schema_prefetcher.py | 138 | except Exception as e: | CODE |
| LOW | mycli/schema_prefetcher.py | 150 | except Exception as e: | CODE |
| LOW | mycli/schema_prefetcher.py | 155 | except Exception: # pragma: no cover - defensive | CODE |
| LOW | mycli/schema_prefetcher.py | 259 | except Exception: # pragma: no cover - defensive | CODE |
| LOW | mycli/client_connection.py | 113 | except Exception: | CODE |
| LOW | mycli/client_connection.py | 265 | except Exception as e: | CODE |
| LOW | mycli/client_connection.py | 374 | except Exception as e: # Connecting to a database could fail. | CODE |
| LOW | mycli/sqlcompleter.py | 1114 | except Exception: | CODE |
| LOW | mycli/main.py | 377 | except Exception as e: | CODE |
| LOW | mycli/sqlexecute.py | 346 | except Exception as e: | CODE |
| LOW | mycli/sqlexecute.py | 457 | except Exception as e: | CODE |
| LOW | mycli/sqlexecute.py | 572 | except Exception as e: | CODE |
| LOW | mycli/packages/key_binding_utils.py | 100 | except Exception: | STRING |
| LOW | mycli/packages/key_binding_utils.py | 122 | except Exception: | STRING |
| LOW | mycli/packages/sql_utils.py | 449 | except Exception: | CODE |
| LOW | mycli/packages/sql_utils.py | 467 | except Exception: | CODE |
| LOW | mycli/packages/special/llm.py | 76 | except Exception as e: | CODE |
| LOW | mycli/packages/special/llm.py | 283 | except Exception as e: | STRING |
| LOW | mycli/packages/special/llm.py | 358 | except Exception: | STRING |
| LOW | mycli/packages/special/iocommands.py | 666 | except Exception as e: | CODE |
| LOW | mycli/main_modes/repl.py | 528 | except Exception as e: | CODE |
| LOW | mycli/main_modes/repl.py | 750 | except Exception as e2: | CODE |
| LOW | mycli/main_modes/repl.py | 775 | except Exception as e: | CODE |
| LOW | mycli/main_modes/repl.py | 789 | except Exception as e: | CODE |
| LOW | mycli/main_modes/execute.py | 53 | except Exception as e: | CODE |
| LOW | mycli/main_modes/list_dsn.py | 17 | except Exception as e: | CODE |
| LOW | test/utils.py | 259 | except Exception: | CODE |
| LOW | test/utils.py | 270 | except Exception: | CODE |
| LOW | test/features/environment.py | 83 | except Exception: | CODE |
| MEDIUM | test/pytests/test_special_iocommands.py | 255 | print(f"An error occurred while attempting to delete the file: {e}") | CODE |
| MEDIUM | test/pytests/test_special_iocommands.py | 319 | print(f"An error occurred while attempting to delete the file: {e}") | CODE |
| LOW | test/pytests/test_special_iocommands.py | 254 | except Exception as e: | CODE |
| LOW | test/pytests/test_special_iocommands.py | 318 | except Exception as e: | CODE |
| LOW | test/pytests/test_completer_use_switch.py | 93 | except Exception: | CODE |
| LOW | test/pytests/test_special_main.py | 55 | except Exception: | CODE |
| MEDIUM⚡ | test/pytests/test_main.py | 1885 | print(f"An error occurred while attempting to delete the file: {e}") | CODE |
| MEDIUM⚡ | test/pytests/test_main.py | 1904 | print(f"An error occurred while attempting to delete the file: {e}") | CODE |
| LOW⚡ | test/pytests/test_main.py | 361 | except Exception as e: | CODE |
| LOW⚡ | test/pytests/test_main.py | 366 | except Exception as e: | CODE |
| MEDIUM⚡ | test/pytests/test_main.py | 579 | print(f"An error occurred while attempting to delete the file: {e}") | STRING |
| MEDIUM⚡ | test/pytests/test_main.py | 670 | print(f"An error occurred while attempting to delete the file: {e}") | STRING |
| LOW⚡ | test/pytests/test_main.py | 1884 | except Exception as e: | CODE |
| LOW⚡ | test/pytests/test_main.py | 1903 | except Exception as e: | CODE |
| MEDIUM⚡ | test/pytests/test_main.py | 2064 | print(f'An error occurred while attempting to delete the file: {e}') | STRING |
| MEDIUM | test/pytests/test_main.py | 887 | print(f"An error occurred while attempting to delete the file: {e}") | STRING |
| LOW⚡ | test/pytests/test_main.py | 578 | except Exception as e: | STRING |
| LOW⚡ | test/pytests/test_main.py | 669 | except Exception as e: | STRING |
| LOW⚡ | test/pytests/test_main.py | 2063 | except Exception as e: | STRING |
| LOW | test/pytests/test_main.py | 886 | except Exception as e: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mycli/cli_runner.py | 123 | CODE | |
| LOW | mycli/completion_refresher.py | 66 | CODE | |
| LOW | mycli/clistyle.py | 140 | CODE | |
| LOW | mycli/clistyle.py | 170 | CODE | |
| LOW | mycli/client_connection.py | 48 | CODE | |
| LOW | mycli/client_connection.py | 268 | CODE | |
| LOW | mycli/sqlcompleter.py | 1403 | CODE | |
| LOW | mycli/sqlcompleter.py | 1849 | CODE | |
| LOW | mycli/client_query.py | 74 | CODE | |
| LOW | mycli/ssh_tunnel.py | 199 | CODE | |
| LOW | mycli/output.py | 107 | CODE | |
| LOW | mycli/output.py | 190 | CODE | |
| LOW | mycli/sqlexecute.py | 122 | CODE | |
| LOW | mycli/sqlexecute.py | 350 | CODE | |
| LOW | mycli/sqlexecute.py | 602 | CODE | |
| LOW | mycli/packages/batch_utils.py | 9 | CODE | |
| LOW | mycli/packages/completion_engine.py | 632 | CODE | |
| LOW | mycli/packages/completion_engine.py | 688 | CODE | |
| LOW | mycli/packages/sql_utils.py | 128 | CODE | |
| LOW | mycli/packages/sql_utils.py | 173 | CODE | |
| LOW | mycli/packages/sql_utils.py | 221 | CODE | |
| LOW | mycli/packages/filepaths.py | 12 | CODE | |
| LOW | mycli/packages/filepaths.py | 113 | CODE | |
| LOW | mycli/packages/tabular_output/sql_format.py | 30 | CODE | |
| LOW | mycli/packages/special/delimitercommand.py | 38 | CODE | |
| LOW | mycli/packages/special/llm.py | 47 | CODE | |
| LOW | mycli/packages/special/llm.py | 220 | CODE | |
| LOW | mycli/packages/special/iocommands.py | 337 | CODE | |
| LOW | mycli/packages/special/iocommands.py | 451 | CODE | |
| LOW | mycli/packages/special/iocommands.py | 739 | CODE | |
| LOW | mycli/packages/ptoolkit/history.py | 27 | CODE | |
| LOW | mycli/main_modes/checkup.py | 71 | CODE | |
| LOW | mycli/main_modes/repl.py | 412 | CODE | |
| LOW | mycli/main_modes/repl.py | 595 | CODE | |
| LOW | mycli/main_modes/repl.py | 843 | CODE | |
| LOW | mycli/main_modes/repl.py | 859 | CODE | |
| LOW | mycli/main_modes/batch.py | 28 | CODE | |
| LOW | mycli/main_modes/batch.py | 92 | CODE | |
| LOW | mycli/main_modes/batch.py | 132 | CODE | |
| LOW | mycli/main_modes/execute.py | 16 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/features/steps/crud_database.py | 0 | steps for behavioral style tests are defined in this module. each step is defined by the string decorating it. this stri | STRING |
| HIGH | test/features/steps/named_queries.py | 0 | steps for behavioral style tests are defined in this module. each step is defined by the string decorating it. this stri | STRING |
| HIGH | test/features/steps/crud_table.py | 0 | steps for behavioral style tests are defined in this module. each step is defined by the string decorating it. this stri | STRING |
| HIGH | test/features/steps/basic_commands.py | 0 | steps for behavioral style tests are defined in this module. each step is defined by the string decorating it. this stri | STRING |
| HIGH | test/features/steps/specials.py | 0 | steps for behavioral style tests are defined in this module. each step is defined by the string decorating it. this stri | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mycli/config.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | mycli/clistyle.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | mycli/sqlcompleter.py | 1157 | def set_dbname(self, dbname: str | None) -> None: | CODE |
| LOW | mycli/packages/hybrid_redirection.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | mycli/packages/special/dbcommands.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | mycli/packages/special/iocommands.py | 59 | def set_timing_enabled(val: bool) -> None: | CODE |
| LOW⚡ | mycli/packages/special/iocommands.py | 64 | def set_pager_enabled(val: bool) -> None: | CODE |
| LOW⚡ | mycli/packages/special/iocommands.py | 73 | def set_show_favorite_query(val: bool) -> None: | CODE |
| LOW⚡ | mycli/packages/special/iocommands.py | 82 | def set_destructive_keywords(val: list[str]) -> None: | CODE |
| LOW⚡ | mycli/packages/special/iocommands.py | 87 | def set_show_warnings_enabled(val: bool) -> None: | CODE |
| LOW⚡ | mycli/packages/special/iocommands.py | 183 | def set_expanded_output(val: bool) -> None: | CODE |
| LOW⚡ | mycli/packages/special/iocommands.py | 192 | def set_forced_horizontal_output(val: bool) -> None: | CODE |
| LOW | mycli/packages/special/utils.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | mycli/packages/special/main.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | mycli/main_modes/repl.py | 162 | def set_all_external_titles(mycli: 'MyCli') -> None: | CODE |
| LOW⚡ | mycli/main_modes/repl.py | 169 | def set_external_terminal_tab_title(mycli: 'MyCli') -> None: | CODE |
| LOW | mycli/main_modes/repl.py | 187 | def set_external_terminal_window_title(mycli: 'MyCli') -> None: | CODE |
| LOW | mycli/main_modes/repl.py | 205 | def set_external_multiplex_window_title(mycli: 'MyCli') -> None: | CODE |
| LOW | mycli/main_modes/repl.py | 231 | def set_external_multiplex_pane_title(mycli: 'MyCli') -> None: | CODE |
| LOW | test/pytests/test_sqlexecute.py | 629 | def set_ciphers(self, cipher_string: str) -> None: | CODE |
| LOW | test/pytests/test_sqlexecute.py | 827 | def set_character_set(self, *args, **kwargs) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | mycli/config.py | 182 | # Create a bytes buffer to hold the plaintext. | COMMENT |
| MEDIUM | mycli/completion_refresher.py | 74 | # Create a new sqlexecute method to populate the completions. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/pytests/test_sqlcompleter.py | 428 | CODE | |
| MEDIUM | test/pytests/test_main_modes_batch.py | 279 | CODE | |
| MEDIUM | test/pytests/test_main_modes_batch.py | 300 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mycli/client.py | 66 | CODE | |
| LOW | mycli/client_connection.py | 48 | CODE | |
| LOW | mycli/sqlexecute.py | 189 | CODE | |
| LOW | test/pytests/test_sqlexecute.py | 19 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mycli/client_connection.py | 366 | # Check if SQLExecute detected sandbox mode during connection | COMMENT |
| LOW | test/pytests/test_completion_refresher.py | 136 | # Set refreshers to 0: we're not testing refresh logic here | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mycli/packages/completion_engine.py | 21 | # missing because not binary | COMMENT |
| LOW | test/features/environment.py | 141 | # TODO: uncomment to debug a failure | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/pytests/test_main.py | 837 | testdata = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do".split(" ") | CODE |
| LOW | test/pytests/test_main.py | 837 | testdata = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do".split(" ") | CODE |
| LOW | test/pytests/test_special_utils.py | 288 | user='user@example.com', | CODE |