staticcheck.conf: turn off noisy lint errors

Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
This commit is contained in:
David Crawshaw 2021-06-18 09:22:55 -07:00 committed by David Crawshaw
parent 3728634af9
commit 297b3d6fa4
16 changed files with 20 additions and 28 deletions

View File

@ -74,7 +74,6 @@ func runCp(ctx context.Context, args []string) error {
return runCpTargets(ctx, args) return runCpTargets(ctx, args)
} }
if len(args) < 2 { if len(args) < 2 {
//lint:ignore ST1005 no sorry need that colon at the end
return errors.New("usage: tailscale file cp <files...> <target>:") return errors.New("usage: tailscale file cp <files...> <target>:")
} }
files, target := args[:len(args)-1], args[len(args)-1] files, target := args[:len(args)-1], args[len(args)-1]

View File

@ -2711,7 +2711,6 @@ func (b *LocalBackend) CheckIPForwarding() error {
return nil return nil
} }
if isBSD(runtime.GOOS) { if isBSD(runtime.GOOS) {
//lint:ignore ST1005 output to users as is
return fmt.Errorf("Subnet routing and exit nodes only work with additional manual configuration on %v, and is not currently officially supported.", runtime.GOOS) return fmt.Errorf("Subnet routing and exit nodes only work with additional manual configuration on %v, and is not currently officially supported.", runtime.GOOS)
} }
@ -2728,16 +2727,13 @@ func (b *LocalBackend) CheckIPForwarding() error {
for _, key := range keys { for _, key := range keys {
bs, err := exec.Command("sysctl", "-n", key).Output() bs, err := exec.Command("sysctl", "-n", key).Output()
if err != nil { if err != nil {
//lint:ignore ST1005 output to users as is
return fmt.Errorf("couldn't check %s (%v).\nSubnet routes won't work without IP forwarding.", key, err) return fmt.Errorf("couldn't check %s (%v).\nSubnet routes won't work without IP forwarding.", key, err)
} }
on, err := strconv.ParseBool(string(bytes.TrimSpace(bs))) on, err := strconv.ParseBool(string(bytes.TrimSpace(bs)))
if err != nil { if err != nil {
//lint:ignore ST1005 output to users as is
return fmt.Errorf("couldn't parse %s (%v).\nSubnet routes won't work without IP forwarding.", key, err) return fmt.Errorf("couldn't parse %s (%v).\nSubnet routes won't work without IP forwarding.", key, err)
} }
if !on { if !on {
//lint:ignore ST1005 output to users as is
return fmt.Errorf("%s is disabled. Subnet routes won't work.", key) return fmt.Errorf("%s is disabled. Subnet routes won't work.", key)
} }
} }

View File

@ -397,12 +397,10 @@ func (s *server) checkConnIdentityLocked(ci connIdentity) error {
break break
} }
if ci.UserID != active.UserID { if ci.UserID != active.UserID {
//lint:ignore ST1005 we want to capitalize Tailscale here
return inUseOtherUserError{fmt.Errorf("Tailscale already in use by %s, pid %d", active.User.Username, active.Pid)} return inUseOtherUserError{fmt.Errorf("Tailscale already in use by %s, pid %d", active.User.Username, active.Pid)}
} }
} }
if su := s.serverModeUser; su != nil && ci.UserID != su.Uid { if su := s.serverModeUser; su != nil && ci.UserID != su.Uid {
//lint:ignore ST1005 we want to capitalize Tailscale here
return inUseOtherUserError{fmt.Errorf("Tailscale already in use by %s", su.Username)} return inUseOtherUserError{fmt.Errorf("Tailscale already in use by %s", su.Username)}
} }
return nil return nil

View File

@ -411,7 +411,7 @@ func (h *Handler) serveSetDNS(w http.ResponseWriter, r *http.Request) {
func getDialPeerTransport(b *ipnlocal.LocalBackend) *http.Transport { func getDialPeerTransport(b *ipnlocal.LocalBackend) *http.Transport {
dialPeerTransportOnce.Do(func() { dialPeerTransportOnce.Do(func() {
t := http.DefaultTransport.(*http.Transport).Clone() t := http.DefaultTransport.(*http.Transport).Clone()
t.Dial = nil //lint:ignore SA1019 yes I know I'm setting it to nil defensively t.Dial = nil
dialer := net.Dialer{ dialer := net.Dialer{
Timeout: 30 * time.Second, Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second, KeepAlive: 30 * time.Second,

View File

@ -15,7 +15,6 @@
"sync" "sync"
) )
//lint:ignore U1000 work around false positive: https://github.com/dominikh/go-tools/issues/983
var stderrFD = 2 // a variable for testing var stderrFD = 2 // a variable for testing
type Options struct { type Options struct {

View File

@ -20,8 +20,6 @@
// the lint exception is necessary and on others it is not, // the lint exception is necessary and on others it is not,
// and plain ignore complains if the exception is unnecessary. // and plain ignore complains if the exception is unnecessary.
//lint:file-ignore U1000 reconfigTimeout is used on some platforms but not others
// reconfigTimeout is the time interval within which Manager.{Up,Down} should complete. // reconfigTimeout is the time interval within which Manager.{Up,Down} should complete.
// //
// This is particularly useful because certain conditions can cause indefinite hangs // This is particularly useful because certain conditions can cause indefinite hangs

View File

@ -4,8 +4,6 @@
// +build linux // +build linux
//lint:file-ignore U1000 refactoring, temporarily unused code.
package dns package dns
import ( import (

View File

@ -4,8 +4,6 @@
// +build linux // +build linux
//lint:file-ignore U1000 refactoring, temporarily unused code.
package dns package dns
import ( import (

View File

@ -577,8 +577,6 @@ func pcpAnnounceRequest(myIP netaddr.IP) []byte {
return pkt return pkt
} }
//lint:ignore U1000 moved this code from netcheck's old PCP probing; will be needed when we add PCP mapping
// pcpMapRequest generates a PCP packet with a MAP opcode. // pcpMapRequest generates a PCP packet with a MAP opcode.
func pcpMapRequest(myIP netaddr.IP, mapToLocalPort int, delete bool) []byte { func pcpMapRequest(myIP netaddr.IP, mapToLocalPort int, delete bool) []byte {
const udpProtoNumber = 17 const udpProtoNumber = 17

View File

@ -23,7 +23,7 @@ func listPorts() (List, error) {
} }
func addProcesses(pl []Port) ([]Port, error) { func addProcesses(pl []Port) ([]Port, error) {
//lint:ignore SA1019 OpenCurrentProcessToken instead of GetCurrentProcessToken, // OpenCurrentProcessToken instead of GetCurrentProcessToken,
// as GetCurrentProcessToken only works on Windows 8+. // as GetCurrentProcessToken only works on Windows 8+.
tok, err := windows.OpenCurrentProcessToken() tok, err := windows.OpenCurrentProcessToken()
if err != nil { if err != nil {

17
staticcheck.conf Normal file
View File

@ -0,0 +1,17 @@
# Full list: https://staticcheck.io/docs/checks
checks = [
"SA*", "-SA1019", "-SA2001", # SA* are mostly legit code errors
# S1?? are "code simplifications" which we consider unnecessary
# ST1??? are stylistic issues, some of which are generally accepted
# In general, if it's listed in
# https://github.com/golang/go/wiki/CodeReviewComments, then it
# may be an acceptable check.
# TODO(crawshaw): enable when we have docs? "ST1000", # missing package docs
"ST1001", # discourage dot imports
"QF1004", # Use `strings.ReplaceAll` instead of `strings.Replace` with `n == 1`
"QF1006", # Lift if+break into loop condition
]

View File

@ -4,8 +4,6 @@
// +build go1.13,!go1.16 // +build go1.13,!go1.16
//lint:file-ignore SA2001 the empty critical sections are part of triggering different internal mutex states
package syncs package syncs
import ( import (

View File

@ -52,7 +52,7 @@ func Watch(ctx context.Context, mu sync.Locker, tick, max time.Duration) chan ti
go func() { go func() {
start := time.Now() start := time.Now()
mu.Lock() mu.Lock()
mu.Unlock() //lint:ignore SA2001 ignore the empty critical section mu.Unlock()
elapsed := time.Since(start) elapsed := time.Since(start)
if elapsed > max { if elapsed > max {
elapsed = max elapsed = max

View File

@ -803,12 +803,10 @@ func TestDeriveBindhost(t *testing.T) {
t.Log(deriveBindhost(t)) t.Log(deriveBindhost(t))
} }
//lint:ignore U1000 Xe: used when debugging the virtual machines
type nopWriteCloser struct { type nopWriteCloser struct {
io.Writer io.Writer
} }
//lint:ignore U1000 Xe: used when debugging the virtual machines
func (nwc nopWriteCloser) Close() error { return nil } func (nwc nopWriteCloser) Close() error { return nil }
const metaDataTemplate = `instance-id: {{.ID}} const metaDataTemplate = `instance-id: {{.ID}}

View File

@ -2,9 +2,6 @@
// Use of this source code is governed by a BSD-style // Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file. // license that can be found in the LICENSE file.
//lint:file-ignore U1000 in development
//lint:file-ignore S1000 in development
// Package natlab lets us simulate different types of networks all // Package natlab lets us simulate different types of networks all
// in-memory without running VMs or requiring root, etc. Despite the // in-memory without running VMs or requiring root, etc. Despite the
// name, it does more than just NATs. But NATs are the most // name, it does more than just NATs. But NATs are the most

View File

@ -85,8 +85,6 @@ func (k Private) Public() Public {
func (k Private) SharedSecret(pub Public) (ss [32]byte) { func (k Private) SharedSecret(pub Public) (ss [32]byte) {
apk := (*[32]byte)(&pub) apk := (*[32]byte)(&pub)
ask := (*[32]byte)(&k) ask := (*[32]byte)(&k)
//lint:ignore SA1019 Code copied from wireguard-go, we aim for
//minimal changes from it.
curve25519.ScalarMult(&ss, ask, apk) curve25519.ScalarMult(&ss, ask, apk)
return ss return ss
} }