Esempio n. 1
0
 def _analysis(self):
     parser=LogParser()
     parser.setRedundantLevel(self.args.level)
     l=parser.parse(self.args.trace)
     if self.args.c_project_dir is not None:
         macro_inspector=MacroInspector(self.args.c_project_dir)
         tracker=Tracker(l,macro_inspector)
     else:
         tracker=Tracker(l)
     for line in l:
         print str(l.index(line))+"#"+str(line)
     traceIndex=(len(l)+self.args.index)%len(l)
     vs=self.build_tiantvars_list()
     tracker.setStartJobs(traceIndex, vs)
     
     TG=tracker.track()
     output=file(self.args.output_path+"/"+self.args.name+".dot", 'w')
     print TG.serialize2dot()
     output.write(TG.serialize2dot())
     output.close()
     subprocess.call("dot -Tsvg "+self.args.output_path+"/"+self.args.name+".dot -o "+self.args.output_path+"/"+self.args.name+".svg", shell = True)
Esempio n. 2
0
 def parse_list(self):
     parser=LogParser()
     #parser.setRedundantLevel(RedundancyFixer.REMOVE_INLINE_REDUNDANT)
     parser.setRedundantLevel(RedundancyFixer.REMOVE_INTERPROCEDURAL_REDUNDANT)
     l=parser.parse(self.logfile_path)
     return l
Esempio n. 3
0
                    if self.l[i+1].get_func_name().split("::")[-1].strip() in self.l[i].codestr:
                        return Syntax.RETURN_VALUE_ASSIGN
                    elif self.isMacroCall(i):
                        return Syntax.RETURN_VALUE_ASSIGN
            return Syntax.NORMAL_ASSIGN
        op_assignment=Syntax.op_assignment_pattern(access)
        if re.search(op_assignment,codestr):
            return Syntax.OP_ASSIGN
        raw_definition=r"^\s*\{\s*[A-Za-z_][A-Za-z0-9_]+\s+(\*\s*)*([A-Za-z_][A-Za-z0-9_]+\s*,\s*)*"+var.v+"\s*;"
        if re.search(raw_definition, codestr):
            print "We got the raw definition!",codestr
            return Syntax.RAW_DEF
        if Syntax.isLibArgDef(var,codestr):
            return Syntax.SYS_LIB_DEF
        return  Syntax.NODEF
            
if __name__=="__main__":
    parser=LogParser()
    l=parser.parse("test/gdb_logs/swfmill-0.3.3/gdb-swfmill-0.3.3.txt")
    tracker=Tracker(l)
    traceIndex=len(l)-1
    tracker.setStartJobs(traceIndex, [TaintVar("length",[])])
    TG=tracker.track()
    output=file("output.dot", 'w')
    print TG.serialize2dot()
    output.write(TG.serialize2dot())
    output.close()
    subprocess.call("dot -Tpng output.dot -o output.png", shell = True)
    #print str(TG)