class SymcovData:
+ TOTAL_COV_KEY = '__TOTAL__'
+
def __init__(self, symcov_json):
self.covered_points = frozenset(symcov_json['covered-points'])
self.point_symbol_info = symcov_json['point-symbol-info']
def compute_filecoverage(self):
"""Build a filename->pct coverage."""
result = dict()
+ all_points = set()
for filename, fns in self.point_symbol_info.items():
file_points = []
for fn, points in fns.items():
file_points.extend(points.keys())
covered_points = self.covered_points & set(file_points)
+ all_points |= set(file_points)
result[filename] = int(math.ceil(
len(covered_points) * 100 / len(file_points)))
+
+ result[SymcovData.TOTAL_COV_KEY] = int(math.ceil(
+ len(self.covered_points) * 100 / len(all_points)))
return result
+ def total_coverage(self):
+ return self.file_coverage[SymcovData.TOTAL_COV_KEY]
+
def format_pct(pct):
pct_str = str(max(0, min(100, pct)))
print("{:<76} {}%".format(filename, file_coverage))
self.__dump_src_file(filename)
+ filelist.append(
+ "<tr><td><b>Total coverage</b></td>"
+ "<td>{coverage}%</td></tr>".format(
+ coverage=format_pct(self.__symcov_data.total_coverage())))
+
response = string.Template(INDEX_PAGE_TMPL).safe_substitute(
filenames='\n'.join(filelist))
with open(self.__dump_root + '/index.html', 'wb') as f: