Add 'Total coverage' row to index page of coverage report 38/153538/1
authorDmitriy Nikiforov <d.nikiforov@samsung.com>
Thu, 28 Sep 2017 17:46:04 +0000 (20:46 +0300)
committerDmitriy Nikiforov <d.nikiforov@samsung.com>
Thu, 28 Sep 2017 18:06:47 +0000 (21:06 +0300)
Change-Id: I91bf226b4544a5c25b37f1afa80153b0684225d8

scripts/coverage-report-dump.py

index 1134fb70499cb42436793eb0ed9808b299ced876..9c16f4f9ba38db604b190cd3fea9e121ea050a1d 100755 (executable)
@@ -66,6 +66,8 @@ $content
 
 
 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']
@@ -101,15 +103,23 @@ class SymcovData:
     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)))
@@ -191,6 +201,11 @@ class DumpCov():
             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: