AI Slop Code Risk Monitor

hugsy/gef

SlopCodeMonitor badge for hugsy/gef Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging capabilities for exploit devs & reverse engineers on Linux

6.0 Moderate pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for hugsy/gef, a Python project with 8,430 GitHub stars. SynthScan examined 47,651 lines of code across 195 source files, recording 224 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 6.0 (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.

6.0
Adjusted Signal
6.0
Raw Pattern Score
100%
Time Factor
2026-11-09
Last Push
8.4K
Stars
Python
Language
47.7K
Lines of Code
195
Files
224
Pattern Hits
2026-11-11
Scan Date
0.16
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-11-11.

Cognitive Ownership Risk 12.6/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 157 finding(s).

Hallucinated Dependency & Supply Chain Risk 6.3/100 · LOW

Are imports declared and package/API names verified? 11 finding(s).

Agent Over-Engineering Ratio 18.0/100 · LOW

Are wrappers, guards, and repeated structures necessary? 162 finding(s).

PR Review Velocity Impact 33.9/100 · MEDIUM

Which changes need focused human review? 224 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 0HIGH 32MEDIUM 5LOW 187

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 224 distinct pattern matches across 10 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.

Hyper-Verbose Identifiers106 hits · 96 pts
SeverityFileLineSnippetContext
LOWgef.py803 def _search_for_realpath_without_versions(self, path: pathlib.Path) -> str | None:CODE
LOWgef.py1138 def __check_security_property(CODE
LOWgef.py2366def gdb_get_location_from_symbol(address: int) -> tuple[str, int] | None:CODE
LOWgef.py2417def gdb_get_nth_previous_instruction_address(addr: int, n: int) -> int | None:CODE
LOWgef.py2455def gdb_get_nth_next_instruction_address(addr: int, n: int) -> int:CODE
LOWgef.py2726 def __get_register_for_selected_frame(self, regname: str, hash_key: int) -> int:CODE
LOWgef.py4748def gef_on_unload_objfile_hook(CODE
LOWgef.py4755def gef_on_unload_objfile_unhook(CODE
LOWgef.py5237def register_external_context_pane(CODE
LOWgef.py5266def register_external_context_layout_mapping(CODE
LOWgef.py5282def register_external_command(cls: Type["GenericCommand"]) -> Type["GenericCommand"]:CODE
LOWgef.py5294def register_priority_command(cls: Type["GenericCommand"]) -> Type["GenericCommand"]:CODE
LOWgef.py6686 def __create_or_edit_structure(self, mod_name: str, struct_name: str) -> int:CODE
LOWgef.py6926 def search_pattern_by_address(CODE
LOWgef.py6960 def search_binpattern_by_address(CODE
LOWgef.py9049 def print_arguments_from_symbol(CODE
LOWgef.py9076 def __get_current_block_start_address() -> int | None:CODE
LOWgef.py9412 def context_additional_information(self) -> None:CODE
LOWgef.py10675 def print_security_properties(self, filename: str) -> None:CODE
LOWgef.py11374 def load_plugins_from_directory(plugin_directory: pathlib.Path):CODE
LOWgef.py11419 def add_context_layout_mapping(CODE
LOWgef.py12446 def parse_gdb_maintenance_info_sections() -> Generator[Section, None, None]:CODE
LOWgef.py13204 def remote_objfile_event_handler(self, evt: "gdb.NewObjFileEvent") -> None:CODE
LOWtests/config/__init__.py16 def test_config_show_opcodes_size(self):CODE
LOWtests/config/__init__.py45 def test_config_hook_validator(self):CODE
LOWtests/config/__init__.py64 def test_config_type_validator(self):CODE
LOWtests/api/misc.py33 def test_func_gef_convenience(self):CODE
LOWtests/api/misc.py44 def test_func_show_last_exception(self):CODE
LOWtests/api/misc.py69 def test_func_process_lookup_path(self):CODE
LOWtests/api/gef_heap.py65 def test_func_gef_heap_malloc_align_address(self):CODE
LOWtests/api/gef_heap.py79 def test_class_glibcarena_main_arena(self):CODE
LOWtests/api/gef_disassemble.py19 def test_func_gef_disassemble(self):CODE
LOWtests/api/gef_disassemble.py37 def test_func_gef_disassemble_page_border(self):CODE
LOWtests/api/deprecated.py14 def test_deprecated_elf_values(self):CODE
LOWtests/api/deprecated.py34 def test_deprecated_gef_attributes(self):CODE
LOWtests/api/gef_arch.py18 def test_api_gef_arch_ptrsize(self):CODE
LOWtests/api/gef_session.py44 def test_func_auxiliary_vector(self):CODE
LOWtests/api/gef_memory.py28 def test_api_gef_memory_only_running(self):CODE
LOWtests/api/gef_memory.py37 def test_api_gef_memory_parse_info_proc_maps_expected_format(self):CODE
LOWtests/api/gef_memory.py68 def test_api_gef_memory_parse_info_proc_maps(self):CODE
LOWtests/api/gef_memory.py86 def test_func_parse_permissions(self):CODE
LOWtests/api/gef_memory.py100 def test_func_parse_maps_local_procfs(self):CODE
LOWtests/api/gef_memory.py123 def test_func_parse_maps_remote_gdbserver(self):CODE
LOWtests/api/gef_memory.py143 def test_func_parse_maps_remote_qemu(self):CODE
LOWtests/api/gef_memory.py161 def test_func_parse_maps_realpath(self):CODE
LOWtests/api/gef_memory.py191 def test_func_read_cstring_oob(self):CODE
LOWtests/regressions/filename_collision_lookup.py16 def test_process_lookup_path_use_only_filename(self):CODE
LOWtests/regressions/gdbserver_connection.py14 def test_can_establish_connection_to_gdbserver_again_after_disconnect(self):CODE
LOWtests/regressions/registers_register_order.py11 def test_registers_show_registers_in_correct_order(self):CODE
LOWtests/regressions/registers_register_order.py70 def test_context_correct_registers_refresh_with_frames(self):CODE
LOWtests/commands/patch.py26 def test_cmd_patch_byte_bytearray(self):CODE
LOWtests/commands/patch.py72 def test_cmd_patch_qword_symbol(self):CODE
LOWtests/commands/edit_flags.py15 def test_cmd_edit_flags_disable(self):CODE
LOWtests/commands/edit_flags.py32 def test_cmd_edit_flags_enable(self):CODE
LOWtests/commands/edit_flags.py42 def test_cmd_edit_flags_toggle(self):CODE
LOWtests/commands/heap.py50 def test_cmd_heap_chunk_no_arg(self):CODE
LOWtests/commands/heap.py61 def test_cmd_heap_chunk_with_number(self):CODE
LOWtests/commands/heap.py86 def test_cmd_heap_chunks_summary(self):CODE
LOWtests/commands/heap.py99 def test_cmd_heap_chunks_min_size_filter(self):CODE
LOWtests/commands/heap.py115 def test_cmd_heap_chunks_max_size_filter(self):CODE
46 more matches not shown…
Empty Error Handlers20 hits · 72 pts
SeverityFileLineSnippetContext
HIGHgef.py2163except FileNotFoundError:CODE
HIGHgef.py4473except Exception:CODE
HIGHgef.py2497except gdb.MemoryError:CODE
HIGHgef.py2730except gdb.error:CODE
HIGHgef.py9255except Exception:CODE
HIGHgef.py12316except Exception:CODE
HIGHgef.py12321except Exception:CODE
HIGHgef.py12326except Exception:CODE
HIGHgef.py12572except gdb.error:CODE
HIGHgef.py13096except SystemError:CODE
HIGHgef.py13392except gdb.error:CODE
HIGHgef.py5974except Exception:CODE
HIGHgef.py8343except ValueError:CODE
HIGHgef.py8795except IndexError:CODE
HIGHgef.py11367except AlreadyRegisteredException:CODE
HIGHgef.py12538except Exception:CODE
HIGHgef.py12566except gdb.error:CODE
HIGHgef.py12597except gdb.error:CODE
HIGHgef.py12623except Exception:CODE
HIGHgef.py11044except RuntimeError:CODE
Cross-Language Confusion11 hits · 62 pts
SeverityFileLineSnippetContext
HIGH⚡gef.py3759 "N && O",CODE
HIGH⚡gef.py3769 "Z || (N || O)",CODE
HIGH⚡gef.py3774 "C || Z",CODE
HIGHgef.py3058 "Z || N!=V",CODE
HIGHgef.py3065 "!Z && N==V",CODE
HIGHgef.py3090 "!C || Z",CODE
HIGHgef.py3392 "C || Z",CODE
HIGHgef.py3406 "!Z && S==O",CODE
HIGHgef.py3424 "Z || S!=O",CODE
HIGHgef.py3590 "E || L",CODE
HIGHgef.py3598 "E || G",CODE
Deep Nesting39 hits · 20 pts
SeverityFileLineSnippetContext
LOWgef.py247CODE
LOWgef.py495CODE
LOWgef.py2482CODE
LOWgef.py9879CODE
LOWgef.py251CODE
LOWgef.py504CODE
LOWgef.py2862CODE
LOWgef.py3036CODE
LOWgef.py3241CODE
LOWgef.py3371CODE
LOWgef.py3577CODE
LOWgef.py3723CODE
LOWgef.py3918CODE
LOWgef.py4942CODE
LOWgef.py5657CODE
LOWgef.py6812CODE
LOWgef.py6993CODE
LOWgef.py7090CODE
LOWgef.py7839CODE
LOWgef.py8083CODE
LOWgef.py8751CODE
LOWgef.py8923CODE
LOWgef.py9073CODE
LOWgef.py9149CODE
LOWgef.py9223CODE
LOWgef.py9341CODE
LOWgef.py9412CODE
LOWgef.py10059CODE
LOWgef.py10119CODE
LOWgef.py11461CODE
LOWgef.py11603CODE
LOWgef.py11778CODE
LOWgef.py12238CODE
LOWgef.py12550CODE
LOWgef.py505CODE
LOWgef.py6341CODE
LOWgef.py6402CODE
LOWtests/commands/registers.py18CODE
LOWtests/commands/pattern.py32CODE
Excessive Try-Catch Wrapping32 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMgef.py9149def context_source(self) -> None:CODE
LOW⚡gef.py378 except Exception:CODE
LOW⚡gef.py386 except Exception:CODE
LOW⚡gef.py395 except Exception as e:CODE
LOW⚡gef.py12316 except Exception:CODE
LOW⚡gef.py12321 except Exception:CODE
LOW⚡gef.py12326 except Exception:CODE
LOWgef.py110 except Exception:CODE
LOWgef.py1806 except Exception as e:CODE
LOWgef.py4473 except Exception:CODE
LOWgef.py5375 except Exception as e:CODE
LOWgef.py5974 except Exception:CODE
LOWgef.py6089 except Exception:CODE
LOWgef.py6417 except Exception as e:CODE
LOWgef.py7177 except Exception as e:CODE
LOWgef.py7324 except Exception as e:CODE
LOWgef.py7951 except Exception as e:CODE
LOWgef.py8868 except Exception:CODE
LOWgef.py9162 except Exception:CODE
LOWgef.py9255 except Exception:CODE
LOWgef.py9442 except Exception:CODE
LOWgef.py9778 except Exception:CODE
LOWgef.py11369 except Exception as e:CODE
LOWgef.py11499 except Exception as reason:CODE
LOWgef.py11788 except Exception as e:CODE
LOWgef.py11797 except Exception:CODE
LOWgef.py12202 except Exception:CODE
LOWgef.py12538 except Exception:CODE
LOWgef.py12623 except Exception:CODE
LOWgef.py13030 except Exception as e:CODE
LOWgef.py13113 except Exception as e:CODE
LOWtests/utils.py279 except Exception:CODE
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHtests/utils.py180Find a symbol by name in a ELF binary using `objdump`. The expect output syntax for `objdump` is: SYMBOL TABLE: STRING
AI Slop Vocabulary5 hits · 4 pts
SeverityFileLineSnippetContext
LOWgef.py9034 # it's an address, just use as isCOMMENT
MEDIUMgef.py8632 """Displays a comprehensive and modular summary of runtime context. Unless setting `enable` isSTRING
MEDIUMgef.py10108 """Display a comprehensive layout of the virtual memory mapping. If a filter argument, GEF willSTRING
MEDIUMgef.py13297 """The GEF root class, which serves as a entrypoint for all the debugging session attributes (architecture,STRING
LOWtests/config/__init__.py50 # Validators just use `err` to print an errorCOMMENT
Over-Commented Block5 hits · 3 pts
SeverityFileLineSnippetContext
LOWgef.py1#######################################################################################COMMENT
LOWgef.py21# * powerpc & powerpc64COMMENT
LOWgef.py8021 """Update the max bin size and count size if they are not already set using theCOMMENT
LOWgef.py12381 output = output[start_idx:]COMMENT
LOWtests/binaries/utils.h41#elif defined(__riscv)COMMENT
Modern Structural Boilerplate4 hits · 2 pts
SeverityFileLineSnippetContext
LOWgef.py4656def set_gef_setting(name: str, value: Any) -> None:CODE
LOWgef.py4698def set_arch(arch: str | None = None, _: str | None = None) -> None:CODE
LOWgef.py5757 def set_pie_breakpoint(set_func: Callable[[int], str], addr: int) -> None:CODE
LOWgef.py9438 def update_registers(cls, _) -> None:CODE
Self-Referential Comments1 hit · 0 pts
SeverityFileLineSnippetContext
MEDIUMgef.py819 """This function is a workaround for gdb bug #23764STRING