MCPcopy Create free account
hub / github.com/LFYSec/MScan / init

Method init

src/main/java/pascal/taie/util/graph/MergedSCCGraph.java:46–65  ·  view source on GitHub ↗
(Graph<N> graph)

Source from the content-addressed store, hash-verified

44 }
45
46 private void init(Graph<N> graph) {
47 nodes = Sets.newSet();
48 // Map from original node to the corresponding merged node.
49 Map<N, MergedNode<N>> nodeMap = Maps.newMap(graph.getNumberOfNodes());
50 SCC<N> scc = new SCC<>(graph);
51 scc.getComponents().forEach(component -> {
52 MergedNode<N> node = new MergedNode<>(component);
53 component.forEach(n -> nodeMap.put(n, node));
54 nodes.add(node);
55 });
56 nodes.forEach(node -> node.getNodes()
57 .stream()
58 .flatMap(n -> graph.getSuccsOf(n).stream())
59 .map(nodeMap::get)
60 .filter(succ -> succ != node) // exclude self-loop
61 .forEach(succ -> {
62 node.addSucc(succ);
63 succ.addPred(node);
64 }));
65 }
66
67 @Override
68 public Set<MergedNode<N>> getPredsOf(MergedNode<N> node) {

Callers 1

MergedSCCGraphMethod · 0.95

Calls 14

newSetMethod · 0.95
newMapMethod · 0.95
getComponentsMethod · 0.95
getNodesMethod · 0.95
addSuccMethod · 0.95
getNumberOfNodesMethod · 0.80
filterMethod · 0.80
streamMethod · 0.80
addPredMethod · 0.80
forEachMethod · 0.65
putMethod · 0.65
addMethod · 0.65

Tested by

no test coverage detected