MCPcopy Create free account
hub / github.com/concensure/Semantic / build_graph_artifacts

Function build_graph_artifacts

parser/src/lib.rs:722–750  ·  view source on GitHub ↗
(
    logic_nodes: &[LogicNodeRecord],
    content: &str,
)

Source from the content-addressed store, hash-verified

720}
721
722fn build_graph_artifacts(
723 logic_nodes: &[LogicNodeRecord],
724 content: &str,
725) -> (
726 Vec<FlowEdgeRecord>,
727 Vec<FlowEdgeRecord>,
728 Vec<LogicClusterRecord>,
729) {
730 let mut per_symbol: HashMap<i64, Vec<LogicNodeRecord>> = HashMap::new();
731 for node in logic_nodes {
732 per_symbol
733 .entry(node.symbol_id)
734 .or_default()
735 .push(node.clone());
736 }
737
738 let mut control_flow_edges = Vec::new();
739 let mut data_flow_edges = Vec::new();
740 let mut logic_clusters = Vec::new();
741
742 for (symbol_id, mut nodes) in per_symbol {
743 nodes.sort_by_key(|n| (n.start_line, n.end_line));
744 control_flow_edges.extend(build_control_flow_edges(symbol_id, &nodes));
745 data_flow_edges.extend(build_data_flow_edges(symbol_id, &nodes, content));
746 logic_clusters.extend(build_logic_clusters(symbol_id, &nodes));
747 }
748
749 (control_flow_edges, data_flow_edges, logic_clusters)
750}
751
752fn build_control_flow_edges(symbol_id: i64, nodes: &[LogicNodeRecord]) -> Vec<FlowEdgeRecord> {
753 let mut edges = Vec::new();

Callers 1

parseMethod · 0.85

Calls 3

build_control_flow_edgesFunction · 0.85
build_data_flow_edgesFunction · 0.85
build_logic_clustersFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…