aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-12-02 12:03:36 +0100
committerDmitry Vyukov <dvyukov@google.com>2020-12-02 12:39:40 +0100
commit8c9190ef9ef69993519136740a4e67c74f45fdb3 (patch)
tree51855774870e37887eb9d3f2d4949da6249d98c6
parenteff43e99da12c6de1965548a619c3013b8ee791e (diff)
pkg/cover: fix file coverage percent calculation
If coverage contains some PCs that's don't map to coverage callbacks, we can get file coverage >100% because total PCs are filtered against all coverage callbacks, while actual coverage is not. Filter actual coverage as well.
-rw-r--r--pkg/cover/report.go4
1 files changed, 2 insertions, 2 deletions
diff --git a/pkg/cover/report.go b/pkg/cover/report.go
index 5cf753738..53184955b 100644
--- a/pkg/cover/report.go
+++ b/pkg/cover/report.go
@@ -263,13 +263,14 @@ func (rg *ReportGenerator) prepareFileMap(progs []Prog) (map[string]*file, error
}
}
for _, s := range rg.symbols {
+ f := files[s.unit.name]
covered := 0
for _, pc := range s.pcs {
if coveredPCs[pc] {
covered++
+ f.covered++
}
}
- f := files[s.unit.name]
f.functions = append(f.functions, &function{
name: s.name,
pcs: len(s.pcs),
@@ -298,7 +299,6 @@ func (rg *ReportGenerator) lazySymbolize(files map[string]*file, progs []Prog) e
if s == nil {
continue
}
- files[s.unit.name].covered++
if !s.symbolized && !symbolizeSymbols[s] {
symbolizeSymbols[s] = true
symbolizePCs = append(symbolizePCs, s.pcs...)