Support path exclusion for native coverage.
Specify list of paths to exclude from coverage instrumentation.
Test: make NATIVE_COVERAGE=true COVERAGE_PATHS=hardware/interfaces
COVERAGE_EXCLUDE_PATHS=hardware/interfaces/graphics
Bug: 35769817
Change-Id: I3bf10e5e5697d140d6cff73d000768b00aa28ca4
diff --git a/android/config.go b/android/config.go
index b4b0be8..1d8cdba 100644
--- a/android/config.go
+++ b/android/config.go
@@ -477,12 +477,22 @@
}
func (c *deviceConfig) CoverageEnabledForPath(path string) bool {
+ coverage := false
if c.config.ProductVariables.CoveragePaths != nil {
for _, prefix := range *c.config.ProductVariables.CoveragePaths {
if strings.HasPrefix(path, prefix) {
- return true
+ coverage = true
+ break
}
}
}
- return false
+ if coverage && c.config.ProductVariables.CoverageExcludePaths != nil {
+ for _, prefix := range *c.config.ProductVariables.CoverageExcludePaths {
+ if strings.HasPrefix(path, prefix) {
+ coverage = false
+ break
+ }
+ }
+ }
+ return coverage
}
diff --git a/android/variable.go b/android/variable.go
index 68fa7cd..c5b957b 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -121,8 +121,9 @@
ClangTidy *bool `json:",omitempty"`
TidyChecks *string `json:",omitempty"`
- NativeCoverage *bool `json:",omitempty"`
- CoveragePaths *[]string `json:",omitempty"`
+ NativeCoverage *bool `json:",omitempty"`
+ CoveragePaths *[]string `json:",omitempty"`
+ CoverageExcludePaths *[]string `json:",omitempty"`
DevicePrefer32BitExecutables *bool `json:",omitempty"`
HostPrefer32BitExecutables *bool `json:",omitempty"`