Open xzjpgithub opened 10 months ago
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 :)
Best regards XZJ
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 :)