Skip to content
This repository was archived by the owner on May 29, 2018. It is now read-only.

Commit 6538858

Browse files
committedMar 22, 2016
avoid NaNs in coverage output
1 parent eb7d692 commit 6538858

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed
 

‎cli/coverage_cmd.go

+15-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"io/ioutil"
88
"log"
9+
"math"
910
"os"
1011
"path/filepath"
1112

@@ -163,27 +164,35 @@ func coverage(repo *Repo) (*cvg.Coverage, error) {
163164
}
164165
}
165166

166-
var fileTokThresh float32 = 0.7
167+
var fileTokThresh float64 = 0.7
167168
numIndexedFiles := 0
168169
numDefs, numRefs, numRefsValid := 0, 0, 0
169-
loc := 0
170+
loc := 0 // lines of code
170171
var uncoveredFiles []string
171172
for file, datum := range codeFileData {
172173
loc += datum.LoC
173174
numDefs += datum.NumDefs
174175
numRefs += datum.NumRefs
175176
numRefsValid += datum.NumRefsValid
176-
if float32(datum.NumDefs+datum.NumRefsValid)/float32(datum.LoC) > fileTokThresh {
177+
if float64(datum.NumDefs+datum.NumRefsValid)/float64(datum.LoC) > fileTokThresh {
177178
numIndexedFiles++
178179
} else {
179180
uncoveredFiles = append(uncoveredFiles, file)
180181
}
181182
}
182183

183184
return &cvg.Coverage{
184-
FileScore: float32(numIndexedFiles) / float32(len(codeFileData)),
185-
RefScore: float32(numRefsValid) / float32(numRefs),
186-
TokDensity: float32(numDefs+numRefs) / float32(loc),
185+
FileScore: divideSentinel(float64(numIndexedFiles), float64(len(codeFileData)), -1),
186+
RefScore: divideSentinel(float64(numRefsValid), float64(numRefs), -1),
187+
TokDensity: divideSentinel(float64(numDefs+numRefs), float64(loc), -1),
187188
UncoveredFiles: uncoveredFiles,
188189
}, nil
189190
}
191+
192+
func divideSentinel(x, y, sentinel float64) float64 {
193+
q := x / y
194+
if math.IsNaN(q) {
195+
return sentinel
196+
}
197+
return q
198+
}

‎cvg/coverage.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package cvg
22

33
type Coverage struct {
4-
FileScore float32 // % files successfully processed
5-
RefScore float32 // % internal refs that resolve to a def
6-
TokDensity float32 // average number of refs/defs per LoC
4+
FileScore float64 // % files successfully processed
5+
RefScore float64 // % internal refs that resolve to a def
6+
TokDensity float64 // average number of refs/defs per LoC
77
UncoveredFiles []string // files for which srclib data was not successfully generated (best-effort guess)
88
}

0 commit comments

Comments
 (0)
This repository has been archived.