in AngrAnalysis.init()
self.cfg = self.target.analyses.CFG(
resolve_indirect_jumps=True,
cross_references=True,
force_complete_scan=False,
normalize=True,
symbols=True,
)
the edges of functions is already in self.cfg
the way to get edges of function are followings
for func in self.cfg.functions.values():
print(func.addr, len(func.transition_graph.edges))
so I think the code of function get_cyclomatic_complexity(),
cfg = self.target.analyses.CFGFast(
force_complete_scan=False, start_at_entry=hex(func.addr)
)
This code uses CFGFast to recalculate edges for each function.
Leading to low running efficiency and high memory consumption when there are too many function.
Can we optimize this :)