calmh · GitHub

jb@kvin:..v/calmh/nmea-collect % staticcheck -version
staticcheck 2020.2.3 (v0.1.3)
jb@kvin:..v/calmh/nmea-collect % staticcheck -debug.version
staticcheck 2020.2.3 (v0.1.3)
Compiled with Go version: go1.16.3
Main module:
	honnef.co/go/tools@v0.1.3 (sum: h1:qTakTkI6ni6LFD5sBwwsdSO+AQqbSIxOauHTTQKZ/7o=)
Dependencies:
	github.com/BurntSushi/toml@v0.3.1 (sum: h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=)
	golang.org/x/mod@v0.3.0 (sum: h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=)
	golang.org/x/sys@v0.0.0-20210119212857-b64e53b001e4 (sum: h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=)
	golang.org/x/tools@v0.1.0 (sum: h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=)
	golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1 (sum: h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=)
jb@kvin:..v/calmh/nmea-collect % go version
go version go1.16.3 darwin/amd64
jb@kvin:..v/calmh/nmea-collect % go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/jb/Library/Caches/go-build"
GOENV="/Users/jb/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/jb/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/jb/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.16.3/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.16.3/libexec/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.16.3"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/jb/dev/calmh/nmea-collect/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/0r/vt88n3bd6cz3b7pz29x09pd40000gp/T/go-build2479615612=/tmp/go-build -gno-record-gcc-switches -fno-common"
jb@kvin:..v/calmh/nmea-collect % staticcheck
forward_udp.go:78:10: New is a pure function but its return value is ignored (SA4017)
jb@kvin:..v/calmh/nmea-collect %
func (f *udpForwarder) Serve(ctx context.Context) error {
	dsts := make([]net.Conn, 0, len(f.addrs))
	for _, addr := range f.addrs {
		dst, err := net.Dial("udp", addr)
		if err != nil {
			log.Printf("Can't forward to %s: %v", addr, err)
			continue
		}
		defer dst.Close()
		dsts = append(dsts, dst)
		dstAddr := dst.RemoteAddr().String()
		aisSentPackets.WithLabelValues(dstAddr)
		aisSentBytes.WithLabelValues(dstAddr)
		aisSendErrors.WithLabelValues(dstAddr)
	}
	if len(dsts) == 0 {
		return errors.New("no UDP forward destination")
		// ^^ "New is a pure function but its return value is ignored (SA4017)"
	}
        ...

Making the log+print in the setup loop an error return makes the complaint go away, but I'm not sure why it has that effect.

https://github.com/calmh/nmea-collect/blob/71f3489ea47e79fe0f9e07e8261b409e0508901a/forward_udp.go#L78

Read the original on github.com ↗