AI Slop Code RIsk Monitor

mrexodia/ida-pro-mcp

AI-powered reverse engineering assistant that bridges IDA Pro with language models through MCP.

51.2 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for mrexodia/ida-pro-mcp, a Python project with 12,645 GitHub stars. SynthScan examined 41,206 lines of code across 153 source files, recording 1360 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 51.2 (High 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.

51.2
Adjusted Signal
51.2
Raw Pattern Score
100%
Time Factor
2026-09-26
Last Push
12.6K
Stars
Python
Language
41.2K
Lines of Code
153
Files
1.4K
Pattern Hits
2026-10-12
Scan Date
0.39
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 61.6/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 9.5/100 · LOW

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

Agent Over-Engineering Ratio 90.6/100 · CRITICAL

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

PR Review Velocity Impact 92.2/100 · CRITICAL

Which changes need focused human review? 1360 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

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.

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 59MEDIUM 224LOW 1077

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 1360 distinct pattern matches across 12 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.

Decorative Section Separators213 hits · 756 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_output_schema.py23# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_output_schema.py25# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_output_schema.py40# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_output_schema.py42# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/_mcp_spec_support.py27# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/_mcp_spec_support.py29# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/_mcp_spec_support.py172# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/_mcp_spec_support.py174# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/_mcp_spec_support.py187# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/_mcp_spec_support.py189# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/_mcp_spec_support.py275# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/_mcp_spec_support.py277# ---------------------------------------------------------------------------COMMENT
MEDIUMscripts/stress_search_cancellation.py58# ─── Headless idalib-mcp lifecycle ─────────────────────────────────────────COMMENT
MEDIUMscripts/stress_search_cancellation.py177# ─── Low-level RPC ─────────────────────────────────────────────────────────COMMENT
MEDIUMscripts/stress_search_cancellation.py232# ─── Reporting helpers ─────────────────────────────────────────────────────COMMENT
MEDIUMscripts/stress_search_cancellation.py243# ─── Phases ────────────────────────────────────────────────────────────────COMMENT
MEDIUMscripts/stress_search_cancellation.py447# ─── Main ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/ida_pro_mcp/idalib_supervisor.py249 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/ida_pro_mcp/idalib_supervisor.py251 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/ida_pro_mcp/idalib_supervisor.py439 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/ida_pro_mcp/idalib_supervisor.py441 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/ida_pro_mcp/idalib_supervisor.py503 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/ida_pro_mcp/idalib_supervisor.py505 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/ida_pro_mcp/idalib_supervisor.py1213 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/ida_pro_mcp/idalib_supervisor.py1215 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/sync.py15# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/sync.py17# ============================================================================COMMENT
MEDIUM⚡src/ida_pro_mcp/ida_mcp/api_types.py556# ============================================================================COMMENT
MEDIUM⚡src/ida_pro_mcp/ida_mcp/api_types.py558# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_types.py153# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_types.py155# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_types.py331# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_types.py333# ============================================================================COMMENT
MEDIUM⚡src/ida_pro_mcp/ida_mcp/compat.py317# ============================================================================COMMENT
MEDIUM⚡src/ida_pro_mcp/ida_mcp/compat.py319# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py25# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py27# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py92# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py94# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py105# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py107# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py155# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py157# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py174# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py176# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py209# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py211# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py234# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py236# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py289# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/compat.py291# ============================================================================COMMENT
MEDIUM⚡src/ida_pro_mcp/ida_mcp/api_python.py28# ============================================================================COMMENT
MEDIUM⚡src/ida_pro_mcp/ida_mcp/api_python.py30# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_python.py108# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_python.py110# ============================================================================COMMENT
MEDIUM⚡src/ida_pro_mcp/ida_mcp/api_modify.py1038# ============================================================================COMMENT
MEDIUM⚡src/ida_pro_mcp/ida_mcp/api_modify.py1040# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_modify.py109# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_modify.py111# ============================================================================COMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_sigmaker.py22# ---------------------------------------------------------------------------COMMENT
153 more matches not shown…
Hyper-Verbose Identifiers690 hits · 715 pts
SeverityFileLineSnippetContext
LOWdevdocs/test-framework.md376def test_functions_are_decompilable():CODE
LOWdevdocs/test-framework.md569def test_int_convert_invalid_text():CODE
LOWdevdocs/test-framework.md639def test_decompile_invalid_address():CODE
LOWdevdocs/test-framework.md649def test_lookup_funcs_wildcard():CODE
LOWdevdocs/test-framework.md675def test_crackme_specific_edge_case():CODE
LOW⚡tests/test_mcp_spec_envelope.py36 def test_successful_call_response_has_valid_envelope(self):CODE
LOW⚡tests/test_mcp_spec_envelope.py43 def test_id_is_echoed_as_integer(self):CODE
LOW⚡tests/test_mcp_spec_envelope.py47 def test_id_is_echoed_as_string(self):CODE
LOW⚡tests/test_mcp_spec_envelope.py51 def test_id_is_echoed_as_null(self):CODE
LOW⚡tests/test_mcp_spec_envelope.py59 def test_unknown_method_returns_method_not_found_error(self):CODE
LOW⚡tests/test_mcp_spec_envelope.py66 def test_error_message_is_non_empty_string(self):CODE
LOW⚡tests/test_mcp_spec_envelope.py71 def test_error_code_is_in_jsonrpc_range(self):CODE
LOW⚡tests/test_mcp_spec_envelope.py77 def test_success_response_has_result_and_no_error(self):CODE
LOW⚡tests/test_mcp_spec_envelope.py83 def test_tools_call_on_known_tool_returns_result(self):CODE
LOW⚡tests/test_mcp_spec_envelope.py90 def test_tools_call_on_unknown_tool_returns_is_error_true(self):CODE
LOWtests/test_mcp_spec_envelope.py109 def test_notifications_initialized_returns_no_body(self):CODE
LOWtests/test_mcp_spec_envelope.py116 def test_notifications_cancelled_returns_no_body(self):CODE
LOWtests/test_mcp_spec_envelope.py161 def test_invalid_json_returns_parse_error_envelope(self):CODE
LOWtests/test_output_schema.py106 def test_nested_anyof_objects(self):CODE
LOWtests/test_output_schema.py115 def test_nested_anyof_with_non_object(self):CODE
LOWtests/test_output_schema.py139 def test_union_of_typed_dicts_not_wrapped(self):CODE
LOWtests/test_output_schema.py153 def test_single_typed_dict_not_wrapped(self):CODE
LOWtests/test_output_schema.py165 def test_primitive_return_is_wrapped(self):CODE
LOWtests/test_output_schema.py177 def test_list_return_is_wrapped(self):CODE
LOWtests/test_output_schema.py188 def test_union_with_non_object_is_wrapped(self):CODE
LOWtests/test_output_schema.py213 def test_union_typed_dict_json_variant(self):CODE
LOWtests/test_output_schema.py232 def test_union_typed_dict_header_variant(self):CODE
LOWtests/test_output_schema.py251 def test_union_typed_dict_prototypes_variant(self):CODE
LOWtests/test_output_schema.py270 def test_primitive_return_wrapped_consistently(self):CODE
LOWtests/test_output_schema.py288 def test_single_typed_dict_not_wrapped(self):CODE
LOW⚡tests/test_idalib_supervisor.py576def test_open_session_forwards_idle_ttl_sec(tmp_path):CODE
LOW⚡tests/test_idalib_supervisor.py585def test_open_session_defaults_idle_ttl_sec_to_baseline(tmp_path):CODE
LOW⚡tests/test_idalib_supervisor.py594def test_open_session_skips_warmup_when_flags_disabled(tmp_path):CODE
LOW⚡tests/test_idalib_supervisor.py621def test_tool_error_result_omits_structured_content():CODE
LOW⚡tests/test_idalib_supervisor.py627def test_open_session_reuses_schema_worker(tmp_path):CODE
LOW⚡tests/test_idalib_supervisor.py637def test_resolve_session_only_accepts_session_id(tmp_path):CODE
LOW⚡tests/test_idalib_supervisor.py864def test_probe_reports_live_but_silent_worker_as_busy(monkeypatch):CODE
LOW⚡tests/test_idalib_supervisor.py873def test_probe_reports_exited_worker_as_dead(monkeypatch):CODE
LOW⚡tests/test_idalib_supervisor.py882def test_resolve_session_keeps_busy_worker(monkeypatch):CODE
LOW⚡tests/test_idalib_supervisor.py1037def test_close_session_unknown_session_raises():CODE
LOW⚡tests/test_idalib_supervisor.py1047def test_close_session_requires_database():CODE
LOW⚡tests/test_idalib_supervisor.py1057def test_close_session_detaches_adopted_worker_without_killing(tmp_path):CODE
LOW⚡tests/test_idalib_supervisor.py1143def test_idb_close_tool_returns_error_for_unknown_session():CODE
LOW⚡tests/test_idalib_supervisor.py1153def test_idb_close_is_a_management_tool_symbol():CODE
LOW⚡tests/test_idalib_supervisor.py1158def test_supervisor_uses_idb_prefixed_management_tools_only():CODE
LOWtests/test_idalib_supervisor.py129def test_supervisor_import_does_not_import_ida_modules():CODE
LOWtests/test_idalib_supervisor.py134def test_worker_rpc_default_has_no_socket_timeout(monkeypatch):CODE
LOWtests/test_idalib_supervisor.py178def test_cleanup_partial_database_removes_only_new_parts(tmp_path):CODE
LOWtests/test_idalib_supervisor.py203def test_open_session_cleans_new_parts_after_worker_failure(tmp_path):CODE
LOWtests/test_idalib_supervisor.py232def test_failed_gui_fallback_cleans_new_parts_after_worker_failure(tmp_path):CODE
LOWtests/test_idalib_supervisor.py259def test_worker_tools_inject_database_and_filter_management_tools():CODE
LOWtests/test_idalib_supervisor.py269def test_inject_database_arg_marks_required():CODE
LOWtests/test_idalib_supervisor.py286def test_inject_database_arg_is_idempotent_in_required_list():CODE
LOWtests/test_idalib_supervisor.py302def test_handle_tools_call_errors_when_database_missing():CODE
LOWtests/test_idalib_supervisor.py323def test_handle_tools_call_errors_when_database_empty():CODE
LOWtests/test_idalib_supervisor.py345def test_open_session_rejects_unknown_mode(tmp_path):CODE
LOWtests/test_idalib_supervisor.py357def test_open_session_prefer_headless_skips_gui_discovery(tmp_path):CODE
LOWtests/test_idalib_supervisor.py384def test_open_session_force_headless_ignores_running_gui(tmp_path):CODE
LOWtests/test_idalib_supervisor.py410def test_open_session_force_gui_launches_when_no_gui_found(tmp_path, monkeypatch):CODE
LOWtests/test_idalib_supervisor.py437def test_idb_list_includes_unadopted_gui_instances(tmp_path, monkeypatch):CODE
630 more matches not shown…
Empty Error Handlers58 hits · 290 pts
SeverityFileLineSnippetContext
HIGHscripts/stress_search_cancellation.py152except ProcessLookupError:CODE
HIGHscripts/stress_search_cancellation.py277except (TypeError, ValueError):CODE
HIGHscripts/stress_search_cancellation.py131except Exception:CODE
HIGHscripts/stress_search_cancellation.py513except Exception:CODE
HIGHsrc/ida_pro_mcp/server.py352except (KeyboardInterrupt, EOFError):CODE
HIGHsrc/ida_pro_mcp/idalib_supervisor.py373except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/sync.py154except queue.Empty:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py515except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py520except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py525except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py530except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py539except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py817except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py844except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py874except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py899except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_types.py685except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/trace.py242except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/trace.py247except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/trace.py285except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/trace.py203except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/compat.py303except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/compat.py311except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/discovery.py216except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/discovery.py80except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/discovery.py169except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/discovery.py180except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/discovery.py190except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/discovery.py162except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_modify.py435except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_modify.py1090except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/utils.py777except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/utils.py621except ImportError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/utils.py715except (json.JSONDecodeError, ValueError):CODE
HIGHsrc/ida_pro_mcp/ida_mcp/utils.py1346except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/utils.py1165except ValueError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_analysis.py592except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_analysis.py893except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_analysis.py1952except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_analysis.py2030except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_core.py195except ValueError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_core.py202except ValueError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_debug.py916except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/api_debug.py343except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/tests/mcp_mode.py77except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/tests/mcp_mode.py81except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/tests/test_framework_helpers.py83except AssertionError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/tests/test_framework_helpers.py89except AssertionError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/tests/test_framework_helpers.py95except AssertionError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/tests/test_framework_helpers.py101except AssertionError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/zeromcp/jsonrpc.py302except json.JSONDecodeError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py182except ValueError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py294except (CODE
HIGHsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py697except Exception:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py809except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py822except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py613except OSError:CODE
HIGHsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py1372except TypeError:CODE
Excessive Try-Catch Wrapping195 hits · 169 pts
SeverityFileLineSnippetContext
MEDIUMtests/binary_info.py38 print(f"Error: Binary not found or not a file: {binary_path}")CODE
MEDIUMtests/binary_info.py45 print(f"Error: Failed to open database: {binary_path}", file=sys.stderr)CODE
LOWtests/binary_info.py141 except Exception:CODE
LOWscripts/stress_search_cancellation.py101 except Exception:CODE
LOWscripts/stress_search_cancellation.py131 except Exception:CODE
LOWscripts/stress_search_cancellation.py164 except Exception:CODE
LOWscripts/stress_search_cancellation.py191 except Exception as e:CODE
LOWscripts/stress_search_cancellation.py506 except Exception as e:CODE
LOWscripts/stress_search_cancellation.py513 except Exception:CODE
LOWsrc/ida_pro_mcp/server.py141 except Exception as e:CODE
LOWsrc/ida_pro_mcp/server.py178 except Exception as e:CODE
LOW⚡src/ida_pro_mcp/idalib_server.py87 except Exception:CODE
LOW⚡src/ida_pro_mcp/idalib_server.py97 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_server.py163 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_server.py175 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_server.py265 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_server.py281 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_server.py342 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_server.py348 except Exception:CODE
MEDIUMsrc/ida_pro_mcp/idalib_server.py183def touching_dispatch(request):CODE
MEDIUMsrc/ida_pro_mcp/idalib_server.py278def _stop():CODE
MEDIUMsrc/ida_pro_mcp/test.py89 print(f"Error: Binary not found or not a file: {args.binary}", file=sys.stderr)STRING
MEDIUMsrc/ida_pro_mcp/test.py101 print("Error: Failed to open database", file=sys.stderr)STRING
LOWsrc/ida_pro_mcp/installer.py265 except Exception:CODE
LOWsrc/ida_pro_mcp/worker_lifecycle.py114 except Exception:CODE
LOWsrc/ida_pro_mcp/ida_mcp.py273 except Exception as e:CODE
LOWsrc/ida_pro_mcp/ida_mcp.py329 except Exception as e:CODE
LOW⚡src/ida_pro_mcp/idalib_supervisor.py1176 except Exception:CODE
LOW⚡src/ida_pro_mcp/idalib_supervisor.py1184 except Exception:CODE
LOW⚡src/ida_pro_mcp/idalib_supervisor.py1190 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py226 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py300 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py316 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py330 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py534 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py548 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py658 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py674 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py913 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1009 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1126 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1327 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1338 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1355 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1392 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1417 except Exception as e:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1451 except Exception:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1519 except Exception as e:CODE
LOWsrc/ida_pro_mcp/ida_mcp/sync.py142 except Exception as x:CODE
LOW⚡src/ida_pro_mcp/ida_mcp/api_types.py515 except Exception:CODE
LOW⚡src/ida_pro_mcp/ida_mcp/api_types.py520 except Exception:CODE
LOW⚡src/ida_pro_mcp/ida_mcp/api_types.py525 except Exception:CODE
LOW⚡src/ida_pro_mcp/ida_mcp/api_types.py530 except Exception:CODE
LOW⚡src/ida_pro_mcp/ida_mcp/api_types.py539 except Exception:CODE
LOW⚡src/ida_pro_mcp/ida_mcp/api_types.py551 except Exception:CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py179 except Exception as e:CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py242 except Exception as exc:CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py314 except Exception as exc:CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py366 except Exception:CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py443 except Exception:CODE
135 more matches not shown…
Unused Imports88 hits · 77 pts
SeverityFileLineSnippetContext
LOWtests/test_output_schema.py8CODE
LOWtests/test_server_transport.py1CODE
LOWtests/_mcp_spec_support.py3CODE
LOWtests/_mcp_spec_support.py9CODE
LOWscripts/stress_search_cancellation.py27CODE
LOWsrc/ida_pro_mcp/server.py47CODE
LOWsrc/ida_pro_mcp/server.py50CODE
LOWsrc/ida_pro_mcp/server.py53CODE
LOWsrc/ida_pro_mcp/ida_mcp.py14CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py8CODE
LOWsrc/ida_pro_mcp/ida_mcp/compat.py14CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py1CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py23CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py24CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py25CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py28CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py29CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py30CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py31CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py32CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py33CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py34CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py35CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py36CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py37CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py38CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py40CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py43CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py43CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py43CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py43CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py44CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py44CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py44CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py44CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py44CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py45CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py46CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_survey.py3CODE
LOWsrc/ida_pro_mcp/ida_mcp/_sigmaker.py59CODE
LOWsrc/ida_pro_mcp/ida_mcp/_sigmaker.py74CODE
LOWsrc/ida_pro_mcp/ida_mcp/rpc.py4CODE
LOWsrc/ida_pro_mcp/ida_mcp/rpc.py4CODE
LOWsrc/ida_pro_mcp/ida_mcp/rpc.py4CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_composite.py3CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_composite.py10CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_composite.py10CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_analysis.py19CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_core.py9CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_core.py15CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/test_api_survey.py3CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/test_api_survey.py3CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/test_api_survey.py3CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/test_api_survey.py3CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/test_api_survey.py3CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/test_api_survey.py3CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/__init__.py8CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/__init__.py9CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/__init__.py10CODE
LOWsrc/ida_pro_mcp/ida_mcp/tests/__init__.py11CODE
28 more matches not shown…
Deep Nesting79 hits · 53 pts
SeverityFileLineSnippetContext
LOWtests/binary_info.py31CODE
LOWsrc/ida_pro_mcp/installer_tui.py4CODE
LOWsrc/ida_pro_mcp/installer_tui.py99CODE
LOWsrc/ida_pro_mcp/installer_tui.py136CODE
LOWsrc/ida_pro_mcp/installer_tui.py115CODE
LOWsrc/ida_pro_mcp/installer_tui.py154CODE
LOWsrc/ida_pro_mcp/installer_tui.py33CODE
LOWsrc/ida_pro_mcp/test.py24CODE
LOWsrc/ida_pro_mcp/installer.py368CODE
LOWsrc/ida_pro_mcp/installer.py491CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py818CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py1110CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py187CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py338CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py474CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py563CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py710CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py809CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py850CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py880CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_types.py905CODE
LOWsrc/ida_pro_mcp/ida_mcp/trace.py251CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_python.py116CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py164CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py244CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py326CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py403CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py991CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py1056CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py1144CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py478CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py545CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py614CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py699CODE
LOWsrc/ida_pro_mcp/ida_mcp/framework.py237CODE
LOWsrc/ida_pro_mcp/ida_mcp/framework.py329CODE
LOWsrc/ida_pro_mcp/ida_mcp/framework.py571CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_survey.py273CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_survey.py355CODE
LOWsrc/ida_pro_mcp/ida_mcp/_sigmaker.py651CODE
LOWsrc/ida_pro_mcp/ida_mcp/_sigmaker.py842CODE
LOWsrc/ida_pro_mcp/ida_mcp/_sigmaker.py1206CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_composite.py300CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_composite.py453CODE
LOWsrc/ida_pro_mcp/ida_mcp/utils.py673CODE
LOWsrc/ida_pro_mcp/ida_mcp/utils.py793CODE
LOWsrc/ida_pro_mcp/ida_mcp/utils.py925CODE
LOWsrc/ida_pro_mcp/ida_mcp/utils.py1141CODE
LOWsrc/ida_pro_mcp/ida_mcp/utils.py1240CODE
LOWsrc/ida_pro_mcp/ida_mcp/utils.py1322CODE
LOWsrc/ida_pro_mcp/ida_mcp/utils.py1351CODE
LOWsrc/ida_pro_mcp/ida_mcp/utils.py1378CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_memory.py221CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_analysis.py455CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_analysis.py841CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_analysis.py908CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_analysis.py1063CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_analysis.py1164CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_analysis.py1355CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_analysis.py1410CODE
19 more matches not shown…
Modern Structural Boilerplate22 hits · 22 pts
SeverityFileLineSnippetContext
LOWtests/_mcp_spec_support.py314__all__ = [CODE
LOWscripts/stress_search_cancellation.py210def set_server_timeout(ctx: Ctx, seconds: float | None) -> None:CODE
LOWsrc/ida_pro_mcp/idalib_server.py59logger = logging.getLogger(__name__)CODE
LOWsrc/ida_pro_mcp/idalib_session_manager.py21logger = logging.getLogger(__name__)CODE
LOWsrc/ida_pro_mcp/installer.py51def set_ida_rpc(host: str, port: int) -> None:CODE
LOWsrc/ida_pro_mcp/worker_lifecycle.py17logger = logging.getLogger(__name__)CODE
LOWsrc/ida_pro_mcp/worker_lifecycle.py46 def set_busy_probe(self, probe: Callable[[], bool]) -> None:CODE
LOWsrc/ida_pro_mcp/worker_lifecycle.py74 def set_idle_ttl(self, user_ttl_sec: float, load_time_sec: float = 0.0) -> None:CODE
LOWsrc/ida_pro_mcp/idalib_supervisor.py30logger = logging.getLogger(__name__)CODE
LOWsrc/ida_pro_mcp/ida_mcp/sync.py41logger = logging.getLogger(__name__)CODE
LOWsrc/ida_pro_mcp/ida_mcp/trace.py328__all__ = [CODE
LOWsrc/ida_pro_mcp/ida_mcp/__init__.py51__all__ = [CODE
LOWsrc/ida_pro_mcp/ida_mcp/mainthread.py15logger = logging.getLogger(__name__)CODE
LOWsrc/ida_pro_mcp/ida_mcp/rpc.py40def set_download_base_url(url: str) -> None:CODE
LOWsrc/ida_pro_mcp/ida_mcp/rpc.py222__all__ = [CODE
LOWsrc/ida_pro_mcp/ida_mcp/http.py21logger = logging.getLogger(__name__)CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_core.py46logger = logging.getLogger(__name__)CODE
LOWsrc/ida_pro_mcp/ida_mcp/api_debug.py249def _set_breakpoint_language(bpt: ida_dbg.bpt_t, language: str) -> None:CODE
LOWsrc/ida_pro_mcp/ida_mcp/zeromcp/__init__.py13__all__ = [CODE
LOWsrc/ida_pro_mcp/ida_mcp/zeromcp/jsonrpc.py69logger = logging.getLogger(__name__)CODE
LOW⚡src/ida_pro_mcp/ida_mcp/zeromcp/mcp.py132def set_current_request_external_base_url(url: str | None) -> None:CODE
LOWsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py27logger = logging.getLogger(__name__)CODE
Redundant / Tautological Comments9 hits · 13 pts
SeverityFileLineSnippetContext
LOWsrc/ida_pro_mcp/ida_mcp/api_modify.py921 # Check if already a functionCOMMENT
LOWsrc/ida_pro_mcp/ida_mcp/utils.py696 # Check if list[str] or list[dict]COMMENT
LOWsrc/ida_pro_mcp/ida_mcp/utils.py1332 # Check if target is a stringCOMMENT
LOWsrc/ida_pro_mcp/ida_mcp/api_analysis.py1770 # Check if there's moreCOMMENT
LOWsrc/ida_pro_mcp/ida_mcp/zeromcp/jsonrpc.py279 # Check if None is allowed in a UnionCOMMENT
LOWsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py756 # Check if notification (returns None)COMMENT
LOWsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py1025 # Check if tool belongs to an extension groupCOMMENT
LOWsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py1041 # Check if tool requires an extension that isn't enabledCOMMENT
LOWsrc/ida_pro_mcp/ida_mcp/zeromcp/mcp.py1255 # Check if required (no default value)COMMENT
AI Slop Vocabulary2 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/_mcp_spec_support.py188# Real HTTP server harnessCOMMENT
MEDIUMsrc/ida_pro_mcp/ida_mcp/api_analysis.py1170 """Run comprehensive analysis over one or more target functions."""STRING
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHsrc/ida_pro_mcp/test.py39 uv run coverage html && open htmlcov/index.htmlCODE
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippetContext
LOW.github/FUNDING.yml1# These are supported funding model platformsCOMMENT
LOWsrc/ida_pro_mcp/ida_mcp/zeromcp/jsonrpc.py281 raise JsonRpcException(-32602, f"Invalid params: {param_name} cannot be null")COMMENT
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/ida_pro_mcp/ida_mcp/rpc.py73 # IMPORTANT: Do not inject sentinel objects like {"_truncated": "..."} into lists.COMMENT