| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | #!/usr/bin/pythonimport osimport reimport subprocessimport sysdef handle_file(source_fname, cov_fname):      lines_blm = subprocess.Popen(["git", "blame", source_fname], stdout=subprocess.PIPE).stdout.readlines()   lines_cov = open(cov_fname).readlines()   # XXXX expensive!   while re.match(r'\s*-:\s*0:', lines_cov[0]):      del lines_cov[0]   if len(lines_blm) != len(lines_cov):      print >>sys.stderr, "MISMATCH IN NUMBER OF LINES in",source_fname   for b,c in zip(lines_blm, lines_cov):      m = re.match(r'\s*([^\s:]+):', c)      if not m:         print >>sys.stderr, "CONFUSING LINE %r"% c         cov = 'X'      elif m.group(1) == '-':         cov = '-'      elif m.group(1)[0] == '#':         cov = '#'      elif m.group(1)[0].isdigit():         cov = '1'      else:         print >>sys.stderr, "CONFUSING LINE %r"% c         cov = 'X'      print cov, b,COV_DIR = sys.argv[1]SOURCES = sys.argv[2:]for fn in SOURCES:   _, base = os.path.split(fn)   cfn = os.path.join(COV_DIR, base)   cfn += ".gcov"   if os.path.exists(cfn):      handle_file(fn, cfn)   else:      print >>sys.stderr, "NO FILE EXISTS CALLED ",cfn
 |