aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/cover/html.go
diff options
context:
space:
mode:
authorKevin Ding <quic_likaid@quicinc.com>2025-02-24 10:23:57 +0800
committerTaras Madan <tarasmadan@google.com>2025-03-11 15:17:43 +0000
commitf2eee6b3351e8cecbbd53e27c4f690a78b9ec2a2 (patch)
treebb0c756ad0af8dfcca909d719bc4fd519b8366d1 /pkg/cover/html.go
parent16256247d9c41cf4980c36db3841ddd674a04b58 (diff)
pkg/cover: allow paths to be excluded from stats
Some sub paths may not be covered due to hardware configuration, or lack of interest. This patch allows them to be excluded from the stats. This can be convenient if the excluded paths are deep in the hierarchy: { "name": "sound", "path": [ "techpack/audio", "-techpack/audio/asoc/aaa/bbb" "-techpack/audio/asoc/aaa/ccc" ] }
Diffstat (limited to 'pkg/cover/html.go')
-rw-r--r--pkg/cover/html.go25
1 files changed, 24 insertions, 1 deletions
diff --git a/pkg/cover/html.go b/pkg/cover/html.go
index ae4aa6c4b..042d28b40 100644
--- a/pkg/cover/html.go
+++ b/pkg/cover/html.go
@@ -537,8 +537,12 @@ func groupCoverByFilePrefixes(datas []fileStats, subsystems []mgrconfig.Subsyste
var percentCoveredFunc float64
for _, path := range subsystem.Paths {
+ if strings.HasPrefix(path, "-") {
+ continue
+ }
+ excludes := buildExcludePaths(path, subsystem.Paths)
for _, data := range datas {
- if !strings.HasPrefix(data.Name, path) {
+ if !strings.HasPrefix(data.Name, path) || isExcluded(data.Name, excludes) {
continue
}
coveredLines += data.CoveredLines
@@ -582,6 +586,25 @@ func groupCoverByFilePrefixes(datas []fileStats, subsystems []mgrconfig.Subsyste
return d
}
+func buildExcludePaths(prefix string, paths []string) []string {
+ var excludes []string
+ for _, path := range paths {
+ if strings.HasPrefix(path, "-") && strings.HasPrefix(path[1:], prefix) {
+ excludes = append(excludes, path[1:])
+ }
+ }
+ return excludes
+}
+
+func isExcluded(path string, excludes []string) bool {
+ for _, exclude := range excludes {
+ if strings.HasPrefix(path, exclude) {
+ return true
+ }
+ }
+ return false
+}
+
func (rg *ReportGenerator) DoSubsystemCover(w io.Writer, params HandlerParams) error {
var progs = fixUpPCs(params.Progs, params.Filter)
data, err := rg.convertToStats(progs)