import and calls fix

This commit is contained in:
2025-11-14 02:13:34 +00:00
parent 959484c2fa
commit 231d7821c9
+31 -10
View File
@@ -2248,19 +2248,40 @@ def build_indexes():
graph.add_node(node_id, **base_attrs, type=node_type)
graph.add_edge(file_node_id, node_id, "contains")
# Handle imports if present
# ---------- IMPORTS ----------
for imp in m.get("imports", []):
# Create import node if it doesn't exist
if imp not in graph.graph.nodes:
graph.add_node(imp, type="Import", name=imp)
graph.add_edge(file_node_id, imp, "imports")
# Find an existing module node with this name.
candidate_id = None
for node_id, data in created_nodes.items():
if data.get("type") in {"module", "import"} and data.get("name") == imp:
candidate_id = node_id
break
# Handle function calls if present
if not candidate_id:
# If nothing exists, fall back to a generic import node.
candidate_id = f"import::{imp}"
if candidate_id not in graph.graph.nodes:
graph.add_node(candidate_id, type="Import", name=imp)
graph.add_edge(file_node_id, candidate_id, "imports")
# ---------- FUNCTION CALLS ----------
for call in m.get("calls", []):
# Create call target node if it doesn't exist
if call not in graph.graph.nodes:
graph.add_node(call, type="FunctionCall", name=call)
graph.add_edge(node_id, call, "calls")
# Try to find a function/method node with this name.
target_id = None
for node_id, data in created_nodes.items():
if data.get("type") in {"function", "method", "constructor"} and data.get("name") == call:
target_id = node_id
break
if not target_id:
# Fallback to a generic call node.
target_id = f"call::{call}"
if target_id not in graph.graph.nodes:
graph.add_node(target_id, type="FunctionCall", name=call)
graph.add_edge(node_id, target_id, "calls")
# -------------------------------------------------
# Step 2: Second-pass relationship building