[Coverage] Change coverage calculation algorithm
BZ: 115218
The coverage was the number of children used divided by the number of
children. This was a mistake as a child could have been used despite
that all it's descendants might not have been.
With this patch the coverage of an element is the coverage children
average.
Change-Id: I52c9990bec0ed006c70a27aa174898b96829baf5
Signed-off-by: Kevin Rocard <kevinx.rocard@intel.com>
Reviewed-on: http://android.intel.com:8080/114693
Reviewed-by: Denneulin, Guillaume <guillaume.denneulin@intel.com>
Reviewed-by: De Chivre, Renaud <renaud.de.chivre@intel.com>
Reviewed-by: cactus <cactus@intel.com>
Tested-by: Dixon, CharlesX <charlesx.dixon@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
diff --git a/tools/coverage.py b/tools/coverage.py
index 0cd2a5d..a6d6fa6 100755
--- a/tools/coverage.py
+++ b/tools/coverage.py
@@ -135,22 +135,26 @@
def _getCoverage(self):
+ """Return the coverage of the element between 0 and 1
- coverageDependance = list(self._getCoverageDependance())
+ If the element has no coverage dependency (usually child) return 0 or 1.
+ otherwise the element coverage is the dependency coverage average"""
+ coverageDependanceElements = list(self._getCoverageDependanceElements())
- nbcoverageDependence = len(coverageDependance)
+ nbcoverageDependence = len(coverageDependanceElements)
if nbcoverageDependence == 0:
- # Coverage makes no sense without any dependence
- return None
+ if self.nbUse == 0:
+ return 0
+ else:
+ return 1
- nbcoverageDependanceUsed = len([element
- for element in coverageDependance
- if element.hasBeenUsed()])
+ coverageDependenceValues = (depElement._getCoverage()
+ for depElement in coverageDependanceElements)
- return nbcoverageDependanceUsed / nbcoverageDependence
+ return sum(coverageDependenceValues) / nbcoverageDependence
- def _getCoverageDependance(self):
+ def _getCoverageDependanceElements(self):
return self.children
def _coverageFormating(self, coverage):
@@ -437,7 +441,7 @@
# A configuration can only have one or no rule
assert(len(self.children) <= 1)
- def _getCoverageDependance(self):
+ def _getCoverageDependanceElements(self):
return self._getDescendants()