| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | 
							- #!/usr/bin/python
 
- import sys, re, os
 
- none0, some0 = 0,0
 
- branchTaken0, branchNot0 = 0,0
 
- BRANCH = False
 
- FUNC = False
 
- if sys.argv[1] == '-b':
 
-     BRANCH = True
 
-     del sys.argv[1]
 
- if sys.argv[1] == '-f':
 
-     FUNC = True
 
-     del sys.argv[1]
 
- def show(name, none, some):
 
-     if some+none == 0:
 
-         none = 1
 
-     print name, none, some, "%.02f"%(100*(float(some)/(some+none)))
 
- file_args = sys.argv[1:]
 
- files = []
 
- for fn in file_args:
 
-     if os.path.isdir(fn):
 
-         files.extend(os.path.join(fn, f) for f in os.listdir(fn))
 
-     else:
 
-         files.append(fn)
 
- for fn in files:
 
-     none = some = branchTaken = branchNot = 0
 
-     inFunc = ""
 
-     for line in open(fn, 'r'):
 
-         m = re.match(r'^[^:]*:([^:]*):(.*)', line)
 
-         if m:
 
-             body = m.group(2).rstrip()
 
-             lineno = m.group(1).strip()
 
-         else:
 
-             body = ""
 
-             lineno = "?"
 
-         m = re.match(r'^([A-Za-z_][A-Za-z0-9_]*)(?:, *)?\(', body)
 
-         if m:
 
- 	    inFunc = "%s:%s %s" %(fn,lineno,m.group(1))
 
- 	elif body == "}":
 
- 	    if FUNC and inFunc:
 
-      	        show(inFunc, none, some)
 
-                 none = some = 0
 
-                 inFunc = None
 
-         if re.match(r'^ *###', line):
 
-             none += 1
 
-         elif re.match(r'^ *\d', line):
 
-             some += 1
 
-         else:
 
-             m = re.match(r'^branch.*taken (\d+)%', line)
 
-             if m:
 
-                 if int(m.group(1)) == 0:
 
-                     branchNot += 1
 
-                 else:
 
-                     branchTaken += 1
 
-     none0 += none
 
-     some0 += some
 
-     branchTaken0 += branchTaken
 
-     branchNot0 += branchNot
 
-     if FUNC:
 
-        pass
 
-     elif BRANCH:
 
-         if branchTaken or branchNot:
 
-             show(fn, branchNot, branchTaken)
 
-     else:
 
-         if some or none:
 
-             show(fn, none, some)
 
- if BRANCH:
 
-     if branchTaken0 or branchNot0:
 
-         show("TOTAL", branchNot0, branchTaken0)
 
- else:
 
-     if some0 or none0:
 
-         show("TOTAL", none0, some0)
 
 
  |