golinecov
Golinecov is a tool for analyzing the coverage profiles generated by
go test -coverprofile=go.cover
. It can output source code annotated
with coverage per-line in plain-text format, which is an alternative
to generating HTML with go tool cover -html
and opening it in a web brower.
Installation
go get github.com/fhs/golinecov
Example Usage
Generate the coverage profile and call it go.cover
because golinecov
looks for a profile with that name by default:
$ cd $GOROOT/go/src/strings
$ go test -covermode=atomic -coverprofile=go.cover
Display source of Builder.Grow
annotated with coverage per-line:
$ golinecov -src -func '^Builder\.Grow$'
10883 func (b *Builder) Grow(n int) {
10883 b.copyCheck()
0 if n < 0 {
0 panic("strings.Builder.Grow: negative count")
- }
10778 if cap(b.buf)-len(b.buf) < n {
10778 b.grow(n)
10778 }
- }
Display file strings/builder.go
, annotated with coverage per-line:
$ golinecov -src strings/builder.go
...
97.4% strings/builder.go
Display summary of coverage for all files in the profile:
$ golinecov
97.4% strings/builder.go
100.0% strings/compare.go
95.8% strings/reader.go
96.8% strings/replace.go
100.0% strings/search.go
99.0% strings/strings.go
Display summary of coverage for functions matching a regular expression:
$ golinecov -func '^Builder\.'
strings/builder.go:32: Builder.copyCheck 100.0%
strings/builder.go:46: Builder.String 100.0%
strings/builder.go:51: Builder.Len 100.0%
strings/builder.go:56: Builder.Cap 100.0%
strings/builder.go:59: Builder.Reset 100.0%
strings/builder.go:66: Builder.grow 100.0%
strings/builder.go:75: Builder.Grow 80.0%
strings/builder.go:87: Builder.Write 100.0%
strings/builder.go:95: Builder.WriteByte 100.0%
strings/builder.go:103: Builder.WriteRune 100.0%
strings/builder.go:120: Builder.WriteString 100.0%
total: (statements) 97.2%