Repository Analysis

tirth8205/code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

40.8 Strong AI signal View on GitHub
40.8
Adjusted Score
40.8
Raw Score
100%
Time Factor
2026-05-25
Last Push
17,720
Stars
Python
Language
65,445
Lines of Code
169
Files
1722
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 105MEDIUM 336LOW 1281

Pattern Findings

1722 matches across 15 categories. Click a row to expand file-level details.

Decorative Section Separators316 hits · 1031 pts
SeverityFileLineSnippet
MEDIUMcode_review_graph/communities.py28# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py30# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py40# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py42# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py63# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py65# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py157# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py159# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py231# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py233# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py345# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py347# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py436# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py438# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py580# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/communities.py582# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/exports.py16# -------------------------------------------------------------------
MEDIUMcode_review_graph/exports.py18# -------------------------------------------------------------------
MEDIUMcode_review_graph/exports.py82# -------------------------------------------------------------------
MEDIUMcode_review_graph/exports.py84# -------------------------------------------------------------------
MEDIUMcode_review_graph/exports.py153# -------------------------------------------------------------------
MEDIUMcode_review_graph/exports.py155# -------------------------------------------------------------------
MEDIUMcode_review_graph/exports.py315# -------------------------------------------------------------------
MEDIUMcode_review_graph/exports.py317# -------------------------------------------------------------------
MEDIUMcode_review_graph/changes.py28# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/changes.py30# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/changes.py169# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/changes.py171# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/changes.py214# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/changes.py216# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/changes.py272# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/changes.py274# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/spring_resolver.py50 # -----------------------------------------------------------------------
MEDIUMcode_review_graph/spring_resolver.py53 # -----------------------------------------------------------------------
MEDIUMcode_review_graph/spring_resolver.py74 # -----------------------------------------------------------------------
MEDIUMcode_review_graph/spring_resolver.py81 # -----------------------------------------------------------------------
MEDIUMcode_review_graph/spring_resolver.py100 # -----------------------------------------------------------------------
MEDIUMcode_review_graph/spring_resolver.py103 # -----------------------------------------------------------------------
MEDIUMcode_review_graph/spring_resolver.py113 # -----------------------------------------------------------------------
MEDIUMcode_review_graph/spring_resolver.py115 # -----------------------------------------------------------------------
MEDIUMcode_review_graph/tsconfig_resolver.py31 # ------------------------------------------------------------------
MEDIUMcode_review_graph/tsconfig_resolver.py33 # ------------------------------------------------------------------
MEDIUMcode_review_graph/tsconfig_resolver.py61 # ------------------------------------------------------------------
MEDIUMcode_review_graph/tsconfig_resolver.py63 # ------------------------------------------------------------------
MEDIUMcode_review_graph/tsconfig_resolver.py226# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/tsconfig_resolver.py228# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py47# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py49# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py68# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py70# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py180# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py182# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py582# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py584# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py672# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/refactor.py674# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/graph.py28# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/graph.py30# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/graph.py138# ---------------------------------------------------------------------------
MEDIUMcode_review_graph/graph.py140# ---------------------------------------------------------------------------
256 more matches not shown…
Hyper-Verbose Identifiers956 hits · 822 pts
SeverityFileLineSnippet
LOWcode_review_graph/communities.py635def incremental_detect_communities(
LOWcode_review_graph/communities.py806def get_architecture_overview(store: GraphStore) -> dict[str, Any]:
LOWcode_review_graph/analysis.py213def find_surprising_connections(
LOWcode_review_graph/analysis.py317def generate_suggested_questions(
LOWcode_review_graph/jedi_resolver.py234def _find_untracked_method_calls(root, is_test_file: bool = False):
LOWcode_review_graph/refactor.py229def _collect_type_referenced_names(store: GraphStore) -> set[str]:
LOWcode_review_graph/skills.py595def generate_codex_hooks_config(repo_root: Path) -> dict[str, Any]:
LOWcode_review_graph/skills.py1088def inject_platform_instructions(repo_root: Path, target: str = "all") -> list[str]:
LOWcode_review_graph/skills.py1118def generate_cursor_hooks_config() -> dict[str, Any]:
LOWcode_review_graph/skills.py1065def install_gemini_cli_skills(repo_root: Path) -> Path:
LOWcode_review_graph/context_savings.py201def format_context_savings_panel(
LOWcode_review_graph/graph.py354 def search_edges_by_target_name(self, name: str, kind: str = "CALLS") -> list[GraphEdge]:
LOWcode_review_graph/graph.py475 def resolve_bare_call_targets(self) -> int:
LOWcode_review_graph/graph.py746 def _get_impact_radius_networkx(
LOWcode_review_graph/graph.py954 def get_flow_criticalities_for_node(self, node_id: int) -> list[float]:
LOWcode_review_graph/graph.py974 def get_community_ids_by_qualified_names(
LOWcode_review_graph/graph.py1005 def get_nodes_without_signature(self) -> list[sqlite3.Row]:
LOWcode_review_graph/graph.py1148 def get_nodes_by_community_id(
LOWcode_review_graph/rescript_resolver.py36def resolve_rescript_cross_module(store: GraphStore) -> dict:
LOWcode_review_graph/parser.py3661 def _extract_js_var_functions(
LOWcode_review_graph/parser.py6645 def _handle_r_binary_operator(
LOWcode_review_graph/parser.py663def _rescript_brace_depth_array(cleaned: str) -> list[int]:
LOWcode_review_graph/parser.py826 def _detect_language_from_shebang(path: Path) -> Optional[str]:
LOWcode_review_graph/parser.py1453 def _parse_databricks_py_notebook(
LOWcode_review_graph/parser.py2396 def _elixir_function_name_and_params(
LOWcode_review_graph/parser.py2425 def _extract_elixir_constructs(
LOWcode_review_graph/parser.py2611 def _extract_nix_flake_input_urls(
LOWcode_review_graph/parser.py2661 def _extract_nix_import_targets(self, rhs_node) -> list[tuple[str, int]]:
LOWcode_review_graph/parser.py2879 def _extract_bash_source_command(
LOWcode_review_graph/parser.py2915 def _extract_dart_calls_from_children(
LOWcode_review_graph/parser.py3072 def _julia_call_first_identifier(self, call_expr) -> Optional[str]:
LOWcode_review_graph/parser.py3081 def _extract_julia_constructs(
LOWcode_review_graph/parser.py3438 def _handle_lua_variable_declaration(
LOWcode_review_graph/parser.py3547 def _handle_lua_table_function(
LOWcode_review_graph/parser.py3748 def _extract_js_field_function(
LOWcode_review_graph/parser.py3866 def _emit_spring_field_injection(
LOWcode_review_graph/parser.py3938 def _emit_spring_constructor_injection(
LOWcode_review_graph/parser.py3976 def _emit_temporal_stub_fields(
LOWcode_review_graph/parser.py4034 def _get_kafka_annotation_topics(annotation_node) -> list[str]:
LOWcode_review_graph/parser.py4064 def _emit_kafka_edges_from_class(
LOWcode_review_graph/parser.py4146 def _emit_kafka_edges_from_method(
LOWcode_review_graph/parser.py4671 def _get_java_method_and_receiver(node) -> tuple[Optional[str], Optional[str]]:
LOWcode_review_graph/parser.py4712 def _extract_jsx_component_call(
LOWcode_review_graph/parser.py4752 def _resolve_jsx_component_target(
LOWcode_review_graph/parser.py4803 def _extract_value_references(
LOWcode_review_graph/parser.py5013 def _extract_solidity_constructs(
LOWcode_review_graph/parser.py5254 def _collect_js_exported_local_names(
LOWcode_review_graph/parser.py6503 def _get_jsx_component_reference(self, node) -> Optional[tuple[Optional[str], str]]:
LOWcode_review_graph/parser.py6538 def _get_member_expression_root_name(self, node) -> Optional[str]:
LOWcode_review_graph/parser.py6548 def _looks_like_component_name(name: str) -> bool:
LOWcode_review_graph/cli.py133def _instruction_files_to_modify(
LOWcode_review_graph/search.py80def extract_query_identifiers(query: str) -> list[str]:
LOWcode_review_graph/main.py96async def build_or_update_graph_tool(
LOWcode_review_graph/main.py279def semantic_search_nodes_tool(
LOWcode_review_graph/main.py395def find_large_functions_tool(
LOWcode_review_graph/main.py551def get_architecture_overview_tool(
LOWcode_review_graph/main.py795def get_surprising_connections_tool(
LOWcode_review_graph/main.py815def get_suggested_questions_tool(
LOWcode_review_graph/incremental.py234def _write_data_dir_gitignore(data_dir: Path) -> None:
LOWcode_review_graph/incremental.py327def ensure_repo_gitignore_excludes_crg(repo_root: Path) -> str:
896 more matches not shown…
Cross-Language Confusion102 hits · 454 pts
SeverityFileLineSnippet
HIGHcode_review_graph/skills.py966cat > /dev/null || true
HIGHcode_review_graph/skills.py968msg="$(code-review-graph status --repo "__CRG_REPO__" 2>&1 | head -n 1 || true)"
HIGHcode_review_graph/skills.py974' 2>/dev/null || echo '{"suppressOutput": true}'
HIGHcode_review_graph/skills.py563 "cat >/dev/null || true; "
HIGHcode_review_graph/skills.py581 "cat >/dev/null || true; "
HIGHcode_review_graph/skills.py606 "cat >/dev/null || true; "
HIGHcode_review_graph/skills.py624 "cat >/dev/null || true; "
HIGHcode_review_graph/skills.py651 code-review-graph update || true
HIGHcode_review_graph/skills.py652 code-review-graph detect-changes --brief || true
HIGHcode_review_graph/skills.py985cat > /dev/null || true
HIGHcode_review_graph/skills.py987code-review-graph update --skip-flows --repo "__CRG_REPO__" >/dev/null 2>&1 || true
HIGHcode_review_graph/skills.py1185" 2>/dev/null || echo '{"passed":true}'
HIGHcode_review_graph/skills.py1207" <<< "$output" 2>/dev/null || echo '{"passed":true}'
HIGHcode_review_graph/skills.py1229" <<< "$output" 2>/dev/null || echo '{"passed":true}'
HIGHcode_review_graph/visualization.py832 var bg = communityColoringOn && d.community_id != null ? communityColorScale(d.community_id) : (KIND_COLOR[d.kind] ||
HIGHcode_review_graph/visualization.py837 if (d.line_start != null) h += '<div class="tt-row"><span class="tt-label">Lines: </span>' + d.line_start + ' \u2013 '
HIGHcode_review_graph/visualization.py837 if (d.line_start != null) h += '<div class="tt-row"><span class="tt-label">Lines: </span>' + d.line_start + ' \u2013 '
HIGHcode_review_graph/visualization.py840 if (d.community_id != null) {
HIGHcode_review_graph/visualization.py890 CONTAINS: { dash:null, width:1, opacity:0.14, marker:"" },
HIGHcode_review_graph/visualization.py891 CALLS: { dash:null, width:2, opacity:0.7, marker:"url(#arrow-calls)" },
HIGHcode_review_graph/visualization.py898function eStyle(d) { return EDGE_CFG[d.kind] || {dash:null,width:1,opacity:0.3,marker:""}; }
HIGHcode_review_graph/visualization.py901 if (communityColoringOn && d.community_id != null) return communityColorScale(d.community_id);
HIGHcode_review_graph/visualization.py901 if (communityColoringOn && d.community_id != null) return communityColorScale(d.community_id);
HIGHcode_review_graph/visualization.py972 var best = null, bestDist = Infinity;
HIGHcode_review_graph/visualization.py978 if (ev.key === "ArrowRight" && dx > 0 && Math.abs(dy) < Math.abs(dx)) ok = true;
HIGHcode_review_graph/visualization.py979 if (ev.key === "ArrowLeft" && dx < 0 && Math.abs(dy) < Math.abs(dx)) ok = true;
HIGHcode_review_graph/visualization.py980 if (ev.key === "ArrowDown" && dy > 0 && Math.abs(dx) < Math.abs(dy)) ok = true;
HIGHcode_review_graph/visualization.py981 if (ev.key === "ArrowUp" && dy < 0 && Math.abs(dx) < Math.abs(dy)) ok = true;
HIGHcode_review_graph/visualization.py982 if (ok && dist < bestDist) { best = n; bestDist = dist; }
HIGHcode_review_graph/visualization.py1170 return d._hidden ? "none" : null;
HIGHcode_review_graph/visualization.py1179 if (cid == null) {
HIGHcode_review_graph/visualization.py1182 if (cid != null && hiddenCommunities.has(cid)) {
HIGHcode_review_graph/visualization.py1185 return null;
HIGHcode_review_graph/visualization.py1190 if (cid == null) {
HIGHcode_review_graph/visualization.py1193 if (cid != null && hiddenCommunities.has(cid)) {
HIGHcode_review_graph/visualization.py1196 return null;
HIGHcode_review_graph/visualization.py1200var activeFlowQns = null;
HIGHcode_review_graph/visualization.py1203 if (idx === "") { activeFlowQns = null; clearFlowHighlight(); return; }
HIGHcode_review_graph/visualization.py1212 if (!activeFlowQns || activeFlowQns.size === 0) { clearFlowHighlight(); return; }
HIGHcode_review_graph/visualization.py1249 if (t === d.qualified_name && e.kind === "CALLS") { var sN = nodeById.get(s); if (sN) callers.push(sN); }
HIGHcode_review_graph/visualization.py1249 if (t === d.qualified_name && e.kind === "CALLS") { var sN = nodeById.get(s); if (sN) callers.push(sN); }
HIGHcode_review_graph/visualization.py1250 if (s === d.qualified_name && e.kind === "CALLS") { var tN = nodeById.get(t); if (tN) callees.push(tN); }
HIGHcode_review_graph/visualization.py1250 if (s === d.qualified_name && e.kind === "CALLS") { var tN = nodeById.get(t); if (tN) callees.push(tN); }
HIGHcode_review_graph/visualization.py1253 var bg = communityColoringOn && d.community_id != null ? communityColorScale(d.community_id) : (KIND_COLOR[d.kind] ||
HIGHcode_review_graph/visualization.py1259 if (d.community_id != null) {
HIGHcode_review_graph/visualization.py1628 CROSS_COMMUNITY: { dash: null, width: 2, opacity: 0.6, marker: "" },
HIGHcode_review_graph/visualization.py1630 CONTAINS: { dash: null, width: 1, opacity: 0.08, marker: "" },
HIGHcode_review_graph/visualization.py1631 CALLS: { dash: null, width: 1.5, opacity: 0.7, marker: "url(#arrow-calls)" },
HIGHcode_review_graph/visualization.py1635function eStyle(d) { return EDGE_CFG[d.kind] || { dash: null, width: 1, opacity: 0.3, marker: "" }; }
HIGHcode_review_graph/visualization.py1740 if (d.line_start != null) addRow("Lines", d.line_start + " \u2013 " + (d.line_end || d.line_start));
HIGHcode_review_graph/visualization.py1740 if (d.line_start != null) addRow("Lines", d.line_start + " \u2013 " + (d.line_end || d.line_start));
HIGHcode_review_graph/visualization.py1743 if (d.weight != null) addRow("Weight", d.weight);
HIGHcode_review_graph/visualization.py1780var linkSel = null, labelSel = null;
HIGHcode_review_graph/visualization.py1782var simulation = null;
HIGHcode_review_graph/visualization.py1788 if (d.kind === "Community") return Math.max(12, Math.min(40, 8 + Math.sqrt(d.member_count || 1) * 3));
HIGHcode_review_graph/visualization.py1790 if (d.symbol_count != null) return Math.max(8, Math.min(30, 6 + Math.sqrt(d.symbol_count || 1) * 2));
HIGHcode_review_graph/visualization.py1790 if (d.symbol_count != null) return Math.max(8, Math.min(30, 6 + Math.sqrt(d.symbol_count || 1) * 2));
HIGHcode_review_graph/visualization.py1796 if (d.kind === "Community" && d.community_id != null) return communityColorScale(d.community_id);
HIGHcode_review_graph/visualization.py1838 if (d.kind === "CROSS_COMMUNITY" || d.kind === "DEPENDS_ON") return Math.max(100, 200 - (d.weight || 1) * 5);
HIGHcode_review_graph/visualization.py1843 if (d.kind === "CROSS_COMMUNITY" || d.kind === "DEPENDS_ON") return 0.1 + Math.min(0.5, (d.weight || 1) * 0.02);
42 more matches not shown…
Unused Imports122 hits · 108 pts
SeverityFileLineSnippet
LOWcode_review_graph/communities.py7
LOWcode_review_graph/exports.py3
LOWcode_review_graph/changes.py7
LOWcode_review_graph/spring_resolver.py18
LOWcode_review_graph/tsconfig_resolver.py8
LOWcode_review_graph/analysis.py4
LOWcode_review_graph/jedi_resolver.py12
LOWcode_review_graph/refactor.py9
LOWcode_review_graph/skills.py9
LOWcode_review_graph/memory.py3
LOWcode_review_graph/enrich.py8
LOWcode_review_graph/registry.py7
LOWcode_review_graph/context_savings.py7
LOWcode_review_graph/graph.py8
LOWcode_review_graph/graph_diff.py3
LOWcode_review_graph/constants.py3
LOWcode_review_graph/__init__.py3
LOWcode_review_graph/__init__.py3
LOWcode_review_graph/__init__.py3
LOWcode_review_graph/__init__.py3
LOWcode_review_graph/__init__.py3
LOWcode_review_graph/rescript_resolver.py23
LOWcode_review_graph/visualization.py14
LOWcode_review_graph/prompts.py13
LOWcode_review_graph/parser.py7
LOWcode_review_graph/embeddings.py11
LOWcode_review_graph/embeddings.py719
LOWcode_review_graph/cli.py27
LOWcode_review_graph/migrations.py7
LOWcode_review_graph/search.py8
LOWcode_review_graph/flows.py9
LOWcode_review_graph/postprocessing.py15
LOWcode_review_graph/hints.py9
LOWcode_review_graph/main.py9
LOWcode_review_graph/wiki.py7
LOWcode_review_graph/daemon_cli.py13
LOWcode_review_graph/daemon.py11
LOWcode_review_graph/token_benchmark.py3
LOWcode_review_graph/incremental.py7
LOWcode_review_graph/incremental.py1221
LOWcode_review_graph/temporal_resolver.py19
LOWcode_review_graph/tools/analysis_tools.py3
LOWcode_review_graph/tools/build.py3
LOWcode_review_graph/tools/query.py3
LOWcode_review_graph/tools/refactor_tools.py3
LOWcode_review_graph/tools/community_tools.py3
LOWcode_review_graph/tools/_common.py3
LOWcode_review_graph/tools/__init__.py34
LOWcode_review_graph/tools/__init__.py37
LOWcode_review_graph/tools/__init__.py38
LOWcode_review_graph/tools/__init__.py39
LOWcode_review_graph/tools/__init__.py40
LOWcode_review_graph/tools/__init__.py43
LOWcode_review_graph/tools/__init__.py48
LOWcode_review_graph/tools/__init__.py48
LOWcode_review_graph/tools/__init__.py48
LOWcode_review_graph/tools/__init__.py55
LOWcode_review_graph/tools/__init__.py55
LOWcode_review_graph/tools/__init__.py55
LOWcode_review_graph/tools/__init__.py55
62 more matches not shown…
Deep Nesting104 hits · 76 pts
SeverityFileLineSnippet
LOWcode_review_graph/communities.py128
LOWcode_review_graph/exports.py140
LOWcode_review_graph/exports.py157
LOWcode_review_graph/changes.py174
LOWcode_review_graph/tsconfig_resolver.py65
LOWcode_review_graph/tsconfig_resolver.py146
LOWcode_review_graph/refactor.py240
LOWcode_review_graph/refactor.py587
LOWcode_review_graph/refactor.py677
LOWcode_review_graph/refactor.py306
LOWcode_review_graph/skills.py678
LOWcode_review_graph/skills.py729
LOWcode_review_graph/memory.py77
LOWcode_review_graph/enrich.py30
LOWcode_review_graph/registry.py57
LOWcode_review_graph/graph.py369
LOWcode_review_graph/graph.py746
LOWcode_review_graph/visualization.py28
LOWcode_review_graph/parser.py596
LOWcode_review_graph/parser.py681
LOWcode_review_graph/parser.py997
LOWcode_review_graph/parser.py1108
LOWcode_review_graph/parser.py1238
LOWcode_review_graph/parser.py1322
LOWcode_review_graph/parser.py1453
LOWcode_review_graph/parser.py1557
LOWcode_review_graph/parser.py2049
LOWcode_review_graph/parser.py2155
LOWcode_review_graph/parser.py2396
LOWcode_review_graph/parser.py2425
LOWcode_review_graph/parser.py2611
LOWcode_review_graph/parser.py2661
LOWcode_review_graph/parser.py2739
LOWcode_review_graph/parser.py2879
LOWcode_review_graph/parser.py2915
LOWcode_review_graph/parser.py3038
LOWcode_review_graph/parser.py3058
LOWcode_review_graph/parser.py3081
LOWcode_review_graph/parser.py3438
LOWcode_review_graph/parser.py3625
LOWcode_review_graph/parser.py3661
LOWcode_review_graph/parser.py3813
LOWcode_review_graph/parser.py3827
LOWcode_review_graph/parser.py3866
LOWcode_review_graph/parser.py3938
LOWcode_review_graph/parser.py3976
LOWcode_review_graph/parser.py4034
LOWcode_review_graph/parser.py4064
LOWcode_review_graph/parser.py4146
LOWcode_review_graph/parser.py4193
LOWcode_review_graph/parser.py4302
LOWcode_review_graph/parser.py5013
LOWcode_review_graph/parser.py5181
LOWcode_review_graph/parser.py5254
LOWcode_review_graph/parser.py5269
LOWcode_review_graph/parser.py5309
LOWcode_review_graph/parser.py5353
LOWcode_review_graph/parser.py5553
LOWcode_review_graph/parser.py5664
LOWcode_review_graph/parser.py5943
44 more matches not shown…
Excessive Try-Catch Wrapping57 hits · 67 pts
SeverityFileLineSnippet
LOWcode_review_graph/communities.py568 except Exception:
LOWcode_review_graph/jedi_resolver.py128 except Exception as e:
LOWcode_review_graph/jedi_resolver.py147 except Exception: # nosec B112 - Jedi may fail on malformed code
LOWcode_review_graph/graph.py585 except Exception: # nosec B110 - FTS5 table may not exist on older schemas
LOWcode_review_graph/embeddings.py109 except Exception as exc: # pragma: no cover — best-effort startup hook
LOWcode_review_graph/embeddings.py200 except Exception as e:
LOWcode_review_graph/embeddings.py286 except Exception as e:
LOWcode_review_graph/embeddings.py449 except Exception:
LOWcode_review_graph/embeddings.py460 except Exception: # nosec B110
LOWcode_review_graph/embeddings.py524 except Exception as e:
LOWcode_review_graph/embeddings.py597 except Exception:
LOWcode_review_graph/cli.py313 except Exception as exc:
LOWcode_review_graph/cli.py320 except Exception as exc:
LOWcode_review_graph/cli.py328 except Exception as exc:
LOWcode_review_graph/cli.py346 except Exception as exc:
MEDIUMcode_review_graph/cli.py1114 print(f"Error: {exc}", file=sys.stderr)
LOWcode_review_graph/search.py245 except Exception as e:
LOWcode_review_graph/search.py349 except Exception as e:
MEDIUMcode_review_graph/daemon_cli.py36 print("Error: Daemon is already running.")
MEDIUMcode_review_graph/daemon_cli.py59 print("Error: Could not read daemon PID.")
MEDIUMcode_review_graph/daemon_cli.py70 print(f"Error: Permission denied sending signal to PID {pid}.")
MEDIUMcode_review_graph/daemon_cli.py184 print(f"Error reading log file: {exc}")
MEDIUMcode_review_graph/daemon_cli.py200 print(f"Error: {exc}")
LOWcode_review_graph/daemon.py471 except Exception:
LOWcode_review_graph/daemon.py692 except Exception:
LOWcode_review_graph/daemon.py901 except Exception:
LOWcode_review_graph/incremental.py68 except Exception as exc: # noqa: BLE001 - best-effort post-pass
LOWcode_review_graph/incremental.py80 except Exception as exc: # noqa: BLE001 - best-effort post-pass
LOWcode_review_graph/incremental.py92 except Exception as exc: # noqa: BLE001 - best-effort post-pass
LOWcode_review_graph/incremental.py284 except Exception as exc:
LOWcode_review_graph/incremental.py816 except Exception as e:
LOWcode_review_graph/incremental.py867 except Exception as e:
LOWcode_review_graph/incremental.py1004 except Exception as e:
LOWcode_review_graph/incremental.py1137 except Exception as e:
LOWcode_review_graph/incremental.py1164 except Exception as e:
LOWcode_review_graph/incremental.py1190 except Exception as e:
LOWcode_review_graph/tools/refactor_tools.py122 except Exception as exc:
LOWcode_review_graph/tools/community_tools.py62 except Exception as exc:
LOWcode_review_graph/tools/community_tools.py138 except Exception as exc:
LOWcode_review_graph/tools/community_tools.py243 except Exception as exc:
LOWcode_review_graph/tools/docs.py219 except Exception as exc:
LOWcode_review_graph/tools/flows_tools.py79 except Exception as exc:
LOWcode_review_graph/tools/flows_tools.py173 except Exception as exc:
LOWcode_review_graph/tools/review.py345 except Exception as exc:
LOWcode_review_graph/tools/review.py474 except Exception as exc:
LOWcode_review_graph/tools/registry_tools.py40 except Exception as exc:
LOWcode_review_graph/tools/registry_tools.py105 except Exception as exc:
LOWcode_review_graph/tools/registry_tools.py124 except Exception as exc:
LOWcode_review_graph/eval/runner.py203 except Exception as e:
LOWcode_review_graph/eval/token_benchmark.py179 except Exception as e:
LOWcode_review_graph/eval/benchmarks/build_performance.py23 except Exception as exc:
LOWcode_review_graph/eval/benchmarks/build_performance.py34 except Exception as exc:
LOW…de_review_graph/eval/benchmarks/multi_hop_retrieval.py65 except Exception as exc: # noqa: BLE001 — benchmark must not abort the runner
LOW…de_review_graph/eval/benchmarks/multi_hop_retrieval.py101 except Exception as exc: # noqa: BLE001
LOWcode_review_graph/eval/benchmarks/impact_accuracy.py57 except Exception as exc:
LOWcode_review_graph/eval/benchmarks/token_efficiency.py86 except Exception as exc:
LOWtests/test_search.py167 except Exception:
Self-Referential Comments10 hits · 32 pts
SeverityFileLineSnippet
MEDIUMtests/test_registry.py111 # Create a new registry from the same file
MEDIUMtests/test_flows.py265 # Create a chain of 20 functions.
MEDIUMtests/test_multilang.py219 # Create a mini Java project with two packages
MEDIUMtests/test_daemon.py518 # Create a new repo directory for alpha with a different path (no graph.db)
MEDIUMtests/test_incremental.py564 # Create a simple Python file
MEDIUMtests/test_integration_git.py164 # Create the parent repo and add lib as a submodule
MEDIUMtests/test_integration_git.py248 # Create a legitimate page
MEDIUMtests/test_tools.py1177 # Create the two communities and stamp community_id on nodes.
MEDIUMtests/test_tools.py1388 # Create a small graph
MEDIUMtests/test_graph.py188 # Create a chain: file_a -> func_a -> (calls) -> func_b in file_b
Verbosity Indicators14 hits · 17 pts
SeverityFileLineSnippet
LOWcode_review_graph/eval/token_benchmark.py28 # Step 1: get_minimal_context
LOWcode_review_graph/eval/token_benchmark.py34 # Step 2: detect_changes (minimal)
LOWdiagrams/generate_diagrams.py342 # Step 1: Trigger
LOWdiagrams/generate_diagrams.py350 # Step 2: Detect
LOWdiagrams/generate_diagrams.py524 # Step 1: User asks
LOWdiagrams/generate_diagrams.py532 # Step 2: Claude Code
LOWdiagrams/generate_diagrams.py363 # Step 3: Cascade
LOWdiagrams/generate_diagrams.py376 # Step 4: Re-parse
LOWdiagrams/generate_diagrams.py545 # Step 3: MCP call
LOWdiagrams/generate_diagrams.py558 # Step 4: Graph query
LOWdiagrams/generate_diagrams.py570 # Step 5: Claude responds
LOWtests/test_refactor.py623 # Step 1: dry_run — no writes, returns diff
LOWtests/test_refactor.py638 # Step 2: refactor_id should still be valid — dry_run doesn't consume it
LOWtests/test_refactor.py642 # Step 3: real apply — uses same refactor_id
Docstring Block Structure3 hits · 15 pts
SeverityFileLineSnippet
HIGHcode_review_graph/registry.py60Register a repository path. Validates that the path contains a ``.git`` or ``.code-review-graph`` direc
HIGHcode_review_graph/daemon.py85Load daemon configuration from a TOML file. Args: path: Explicit config path. Falls back to :data:`CONFIG_
HIGHcode_review_graph/daemon.py212Add a repository to the daemon config and persist the change. Args: repo_path: Path to the repository (wi
Over-Commented Block16 hits · 14 pts
SeverityFileLineSnippet
LOWcode_review_graph/parser.py261 # via extra["solidity_kind"].
LOWcode_review_graph/parser.py321 "dart": ["import_or_export"],
LOWcode_review_graph/parser.py2221 # Every top-level construct in Elixir is a ``call`` node:
LOWcode_review_graph/parser.py5721 for qsub in reversed(sub.children):
LOW.serena/project.yml1# the name by which the project can be referenced within Serena
LOW.serena/project.yml21# - For JavaScript, use typescript
LOW.serena/project.yml41# The language backend to use for this project.
LOW.serena/project.yml61
LOW.serena/project.yml81# * `execute_shell_command`: Executes a shell command.
LOW.serena/project.yml101# * `rename_symbol`: Renames a symbol throughout the codebase using language server refactoring capabilities.
LOW.serena/project.yml121# If the setting is undefined, the base_modes from the global configuration (serena_config.yml) apply.
LOW.serena/project.yml141# If null or missing, use the setting from the global configuration.
LOW.beads/config.yaml1# Beads Configuration File
LOW.beads/config.yaml21# title-length: 255
LOW.beads/config.yaml41# backup:
LOWdocs/COMMANDS.md321
Redundant / Tautological Comments7 hits · 10 pts
SeverityFileLineSnippet
LOWcode_review_graph/communities.py659 # Check if any communities are affected (batch to stay under SQLite limit)
LOWcode_review_graph/refactor.py533 # Check if this is a method override where the base class method
LOWcode_review_graph/skills.py363 # Check if already present
LOWcode_review_graph/parser.py1487 # Check if all non-empty lines are MAGIC lines
LOWcode_review_graph/wiki.py105 # Check if this flow passes through any community member
LOW.serena/project.yml123# Set this to [] to disable base modes for this project.
LOW.serena/project.yml124# Set this to a list of mode names to always include the respective modes for this project.
Fake / Example Data6 hits · 7 pts
SeverityFileLineSnippet
LOWtests/test_integration_git.py158 _git(lib_repo, "config", "user.email", "test@test.com")
LOWtests/test_integration_git.py168 _git(parent, "config", "user.email", "test@test.com")
LOWtests/test_integration_git.py53 _git(repo, "config", "user.email", "test@test.com")
LOWtests/test_eval.py261 ["git", "config", "user.email", "test@test.com"],
LOWtests/test_eval.py404 ["git", "config", "user.email", "test@test.com"],
LOWtests/test_eval.py478 ["git", "config", "user.email", "test@test.com"],
AI Slop Vocabulary3 hits · 6 pts
SeverityFileLineSnippet
MEDIUMtests/test_parser.py1307 # the highest-leverage language for the fix after Python.
MEDIUMtests/test_embeddings.py437 """Ensure localhost detection is robust against subdomain tricks."""
MEDIUMcode-review-graph-vscode/package-lock.json3466 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
Slop Phrases2 hits · 4 pts
SeverityFileLineSnippet
MEDIUM.serena/project.yml58# Same syntax as gitignore, so you can use * and **.
LOW.serena/project.yml71# To make sure you have the latest list of tools, and to view their descriptions,
Overly Generic Function Names4 hits · 4 pts
SeverityFileLineSnippet
LOWtests/test_parser.py294 "def helper():\n"
LOWtests/test_parser.py1112 b"def helper(): pass\n",
LOWtests/test_integration_git.py160 (lib_repo / "util.py").write_text("def helper():\n pass\n")
LOWtests/test_tools.py692 + "def handle_request():\n"