mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
82 lines
1.9 KiB
Python
Executable File
82 lines
1.9 KiB
Python
Executable File
#!/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)
|