check

package module
v0.0.0-...-86da7ad Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 21, 2018 License: GPL-3.0 Imports: 0 Imported by: 0

README

check License Build Status

A set of utilities for checking Go sources.

Installation

$ go get github.com/opennota/check/cmd/aligncheck
$ go get github.com/opennota/check/cmd/structcheck
$ go get github.com/opennota/check/cmd/varcheck

Usage

Find inefficiently packed structs.

$ aligncheck net/http
net/http: /usr/lib/go/src/net/http/server.go:123:6: struct conn could have size 160 (currently 168)
net/http: /usr/lib/go/src/net/http/server.go:315:6: struct response could have size 152 (currently 176)
net/http: /usr/lib/go/src/net/http/transfer.go:37:6: struct transferWriter could have size 96 (currently 112)
net/http: /usr/lib/go/src/net/http/transport.go:49:6: struct Transport could have size 136 (currently 144)
net/http: /usr/lib/go/src/net/http/transport.go:811:6: struct persistConn could have size 160 (currently 176)

For the visualisation of struct packing see http://golang-sizeof.tips/

Find unused struct fields.

$ structcheck --help
Usage of structcheck:
  -a    Count assignments only
  -e    Report exported fields
  -t    Load test files too

$ structcheck fmt
fmt: /usr/lib/go/src/fmt/format.go:47:2: fmt.fmtFlags.zero
fmt: /usr/lib/go/src/fmt/format.go:41:2: fmt.fmtFlags.minus
fmt: /usr/lib/go/src/fmt/format.go:42:2: fmt.fmtFlags.plus
fmt: /usr/lib/go/src/fmt/format.go:43:2: fmt.fmtFlags.sharp
fmt: /usr/lib/go/src/fmt/format.go:44:2: fmt.fmtFlags.space
fmt: /usr/lib/go/src/fmt/format.go:52:2: fmt.fmtFlags.plusV
fmt: /usr/lib/go/src/fmt/format.go:53:2: fmt.fmtFlags.sharpV
fmt: /usr/lib/go/src/fmt/format.go:39:2: fmt.fmtFlags.widPresent
fmt: /usr/lib/go/src/fmt/format.go:40:2: fmt.fmtFlags.precPresent
fmt: /usr/lib/go/src/fmt/format.go:45:2: fmt.fmtFlags.unicode
fmt: /usr/lib/go/src/fmt/format.go:46:2: fmt.fmtFlags.uniQuote
fmt: /usr/lib/go/src/fmt/print.go:110:2: fmt.pp.n
fmt: /usr/lib/go/src/fmt/scan.go:179:2: fmt.ssave.nlIsEnd
fmt: /usr/lib/go/src/fmt/scan.go:180:2: fmt.ssave.nlIsSpace
fmt: /usr/lib/go/src/fmt/scan.go:181:2: fmt.ssave.argLimit
fmt: /usr/lib/go/src/fmt/scan.go:182:2: fmt.ssave.limit
fmt: /usr/lib/go/src/fmt/scan.go:183:2: fmt.ssave.maxWid

Find unused global variables and constants.

$ varcheck --help
Usage of varcheck:
  -e=false: Report exported variables and constants

$ varcheck image/jpeg
image/jpeg: /usr/lib/go/src/image/jpeg/reader.go:74:2: adobeTransformYCbCr
image/jpeg: /usr/lib/go/src/image/jpeg/reader.go:75:2: adobeTransformYCbCrK
image/jpeg: /usr/lib/go/src/image/jpeg/writer.go:54:2: quantIndexLuminance
image/jpeg: /usr/lib/go/src/image/jpeg/writer.go:55:2: quantIndexChrominance
image/jpeg: /usr/lib/go/src/image/jpeg/writer.go:91:2: huffIndexLuminanceDC
image/jpeg: /usr/lib/go/src/image/jpeg/writer.go:92:2: huffIndexLuminanceAC
image/jpeg: /usr/lib/go/src/image/jpeg/writer.go:93:2: huffIndexChrominanceDC
image/jpeg: /usr/lib/go/src/image/jpeg/writer.go:94:2: huffIndexChrominanceAC

Known limitations

structcheck doesn't handle embedded structs yet.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
aligncheck command
structcheck command
varcheck command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL