mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
73 lines
1.7 KiB
Plaintext
73 lines
1.7 KiB
Plaintext
|
#!/usr/bin/python
|
||
|
import sys, re
|
||
|
|
||
|
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)))
|
||
|
|
||
|
for fn in sys.argv[1:]:
|
||
|
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)
|