Strider report
Strider corpus: tailscale
Showing 1000 of 31152 detailed findings. The summary includes all 31152 findings.
appc/appconnector_test.go1
56:13add-constant
appc/appconnector_test.go:56:13
addr := netip.MustParseAddr("192.0.0.8") a.domains["example.com"] = append(a.domains["example.com"], addr) a.UpdateDomains([]string{"example.com"})client/tailscale/tailscale.go1
83:17append-to-sized-slice
client/tailscale/tailscale.go:83:17
} else { elem = append(elem, url.PathEscape(fmt.Sprint(pathElement))) }client/systray/startup-creator.go1
12:2blank-imports
client/systray/startup-creator.go:12:2
"bytes" _ "embed" "fmt"client/web/auth.go1
264:6boolean-literal-comparison
client/web/auth.go:264:6
for _, v := range p { if v == true { return falsecontrol/controlbase/conn_test.go1
241:2call-to-gc
control/controlbase/conn_test.go:241:2
runtime.GC() var ms0 runtime.MemStatsappc/appconnector.go2
303:24cognitive-complexity
appc/appconnector.go:303:24
func (e *AppConnector) updateDomains(domains []string) { e.mu.Lock()303:24confusing-naming
appc/appconnector.go:303:24
func (e *AppConnector) updateDomains(domains []string) { e.mu.Lock()cmd/containerboot/egressservices.go1
271:134confusing-results
cmd/containerboot/egressservices.go:271:134
// updatesForCfg calculates any rules that need to be added or deleted for an individucal egress service config.func updatesForCfg(svcName string, cfg egressservices.Config, status *egressservices.Status, tailnetTargetIPs []netip.Addr) ([]rule, []rule, error) { rulesToAdd := make([]rule, 0)cmd/derper/cert.go1
75:6constructor-interface-return
cmd/derper/cert.go:75:6
// NewManualCertManager returns a cert provider which read certificate by given hostname on create.func NewManualCertManager(certdir, hostname string) (certProvider, error) { keyname := unsafeHostnameCharacters.ReplaceAllString(hostname, "")cmd/sniproxy/sniproxy_test.go1
91:34context-as-argument
cmd/sniproxy/sniproxy_test.go:91:34
func startNode(t *testing.T, ctx context.Context, controlURL, hostname string) (*tsnet.Server, key.NodePublic, netip.Addr) { t.Helper()derp/derp_test.go1
125:3context-cancel-in-loop
derp/derp_test.go:125:3
ctx, cancel := context.WithCancel(context.Background()) defer cancel()client/local/local.go1
1346:2context-stored-in-struct
client/local/local.go:1346:2
type IPNBusWatcher struct { ctx context.Context // from original WatchIPNBus call httpRes *http.Responsetsweb/varz/varz_test.go1
113:10copy-lock-value
tsweb/varz/varz_test.go:113:10
&metrics.Set{ Map: *(func() *expvar.Map { m := new(expvar.Map)appc/appconnector.go1
303:24cyclomatic-complexity
appc/appconnector.go:303:24
func (e *AppConnector) updateDomains(domains []string) { e.mu.Lock()client/systray/systray.go1
492:5deep-exit
client/systray/systray.go:492:5
// reconnect to IPN bus, so exit the process. log.Fatalf("watchIPNBus: %v", err) }derp/derphttp/derphttp_test.go1
623:2defer-close-before-error-check
derp/derphttp/derphttp_test.go:623:2
c, err := derphttp.NewClient(key.NewNode(), "https://"+hostname+"/", t.Logf, netMon) defer c.Close()client/tailscale/cert.go1
19:9deprecated-api-usage
client/tailscale/cert.go:19:9
func GetCertificate(hi *tls.ClientHelloInfo) (*tls.Certificate, error) { return local.GetCertificate(hi)}appc/appconnector.go1
288:2discarded-error-result
appc/appconnector.go:288:2
func (e *AppConnector) Wait(ctx context.Context) { e.queue.Wait(ctx)}appc/appctest/appctest.go1
12:1doc-comment-period
appc/appctest/appctest.go:12:1
// RouteCollector is a test helper that collects the list of routes advertisedtype RouteCollector struct {tailcfg/tailcfg_test.go1
16:2dot-imports
tailcfg/tailcfg_test.go:16:2
. "tailscale.com/tailcfg" "tailscale.com/tstest/deptest"cmd/k8s-operator/operator_test.go1
28:2duplicated-imports
cmd/k8s-operator/operator_test.go:28:2
"tailscale.com/k8s-operator/apis/v1alpha1" tsapi "tailscale.com/k8s-operator/apis/v1alpha1" "tailscale.com/kube/kubetypes"wgengine/watchdog_test.go1
37:33duration-multiplied-by-duration
wgengine/watchdog_test.go:37:33
e = NewWatchdog(e) e.(*watchdogEngine).maxWait = maxWaitMultiple * 150 * time.Millisecond e.(*watchdogEngine).logf = t.Logfcmd/containerboot/settings.go1
195:9early-return
cmd/containerboot/settings.go:195:9
acceptDNSFromExtraArgsS = keyval[1] } else if len(keyval) == 1 && keyval[0] == "--accept-dns" { // If the arg is just --accept-dns, we assume it means true.derp/derpserver/derpserver.go1
677:16empty-conditional-block
derp/derpserver/derpserver.go:677:16
was := cs.activeClient.Load() if was == nil { // Common case.cmd/ssh-auth-none-demo/ssh-auth-none-demo.go1
172:2enforce-switch-style
cmd/ssh-auth-none-demo/ssh-auth-none-demo.go:172:2
switch typ { default: return nil, fmt.Errorf("unsupported key type %q", typ)net/sockopts/sockopts_default.go1
19:93error-last-result
net/sockopts/sockopts_default.go:19:93
// If pconn is not a [*net.UDPConn], then SetBufferSize is no-op.func SetBufferSize(pconn nettype.PacketConn, direction BufferDirection, size int) (errForce error, errPortable error) { return nil, portableSetBufferSize(pconn, direction, size)cmd/testwrapper/testwrapper_test.go1
21:2error-naming
cmd/testwrapper/testwrapper_test.go:21:2
buildPath string buildErr error buildOnce sync.Onceappc/appconnector_test.go1
97:13error-strings
appc/appconnector_test.go:97:13
if err := a.ObserveDNSResponse(dnsResponse("a.example.com.", "192.0.2.1")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }client/tailscale/tailscale.go1
186:6error-type-naming
client/tailscale/tailscale.go:186:6
// ErrResponse is the HTTP error returned by the Tailscale server.type ErrResponse struct { Status intcmd/k8s-operator/operator_test.go1
2012:2excessive-blank-identifiers
cmd/k8s-operator/operator_test.go:2012:2
// NOTE: creating proxygroup stuff just to be sure that it's all ignored _, _, fc, _, _ := setupServiceTest(t)appc/appconnector.go2
74:6exported-declaration-comment
appc/appconnector.go:74:6
// newly discovered routes that need to be served through the AppConnector.type RouteAdvertiser interface { // AdvertiseRoute adds one or more route advertisements skipping any that1:1file-length-limit
appc/appconnector.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clauseclient/tailscale/acl.go1
187:67flag-parameter
client/tailscale/acl.go:187:67
func (c *Client) aclPOSTRequest(ctx context.Context, body []byte, avoidCollisions bool, etag, acceptHeader string) ([]byte, string, error) { path := c.BuildTailnetURL("acl")appc/appconnector.go1
1:1format
appc/appconnector.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt appc/appconnector.go`
appc/appconnector_test.go1
229:6function-length
appc/appconnector_test.go:229:6
func TestObserveDNSResponse(t *testing.T) { ctx := t.Context()client/web/auth.go1
108:18function-result-limit
client/web/auth.go:108:18
// unless getTailscaleBrowserSession reports errNotUsingTailscale.func (s *Server) getSession(r *http.Request) (*browserSession, *apitype.WhoIsResponse, *ipnstate.Status, error) { whoIs, whoIsErr := s.lc.WhoIs(r.Context(), r.RemoteAddr)wgengine/filter/filter_test.go1
186:11identical-branches
wgengine/filter/filter_test.go:186:11
got = filt.CheckTCP(test.p.Src.Addr(), test.p.Dst.Addr(), test.p.Dst.Port()) } else { got = filt.CheckTCP(test.p.Src.Addr(), test.p.Dst.Addr(), test.p.Dst.Port())derp/derpserver/derpserver.go1
1469:28identical-if-chain-branches
derp/derpserver/derpserver.go:1469:28
cs.activeClient.Store(c) } else if dup.last == nil { // If we didn't have a primary, let the currentclient/web/auth.go1
54:2identical-switch-branches
client/web/auth.go:54:2
return false case !s.Authenticated: return false // awaiting authipn/store/awsstore/store_aws.go1
21:2import-alias-naming
ipn/store/awsstore/store_aws.go:21:2
"github.com/aws/aws-sdk-go-v2/service/ssm" ssmTypes "github.com/aws/aws-sdk-go-v2/service/ssm/types" "tailscale.com/ipn"client/local/local.go1
335:53import-shadowing
client/local/local.go:335:53
// If not found, the error is ErrPeerNotFound.func (lc *Client) WhoIsNodeKey(ctx context.Context, key key.NodePublic) (*apitype.WhoIsResponse, error) { body, err := lc.get200(ctx, "/localapi/v0/whois?addr="+url.QueryEscape(key.String()))cmd/k8s-operator/nodeport-services-ports_test.go1
273:34impossible-integer-comparison
cmd/k8s-operator/nodeport-services-ports_test.go:273:34
port := getRandomPort() if port < tailscaledPortMin || port > tailscaledPortMax { t.Errorf("generated port %d which is out of range [%d, %d]", port, tailscaledPortMin, tailscaledPortMax)ssh/tailssh/incubator.go1
92:5impossible-platform-comparison
ssh/tailssh/incubator.go:92:5
// immediately return. if runtime.GOOS == windows { windir := os.Getenv("windir")control/controlbase/noiseexplorer_test.go1
420:2increment-decrement
control/controlbase/noiseexplorer_test.go:420:2
} session.mc = session.mc + 1 return session, messageBuffercmd/k8s-operator/proxygroup.go1
534:4inefficient-map-lookup
cmd/k8s-operator/proxygroup.go:534:4
if _, ok := svcToNodePorts[pgNodePortServiceName(pg.Name, i)]; !ok { svcToNodePorts[pgNodePortServiceName(pg.Name, i)] = 0 } else {cmd/derper/derper.go1
393:48inefficient-sprintf
cmd/derper/derper.go:393:48
port80srv := &http.Server{ Addr: net.JoinHostPort(listenHost, fmt.Sprintf("%d", *httpPort)), Handler: port80mux,client/local/debugportmapper.go1
69:53insecure-url-scheme
client/local/debugportmapper.go:69:53
req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/debug-portmap?"+vals.Encode(), nil) if err != nil {cmd/k8s-operator/sts.go1
1133:23interface-method-limit
cmd/k8s-operator/sts.go:1133:23
// client.Object.type ptrObject[T any] interface { client.Objectfeature/taildrop/resume.go1
43:7marshal-receiver
feature/taildrop/resume.go:43:7
}func (cs *checksum) UnmarshalText(b []byte) error { if len(b) != 2*len(cs.cs) {client/systray/systray.go1
654:7max-control-nesting
client/systray/systray.go:654:7
for _, city := range country.cities { for _, ps := range city.peers { if status.ExitNodeStatus.ID == ps.ID {net/portmapper/legacy_upnp.go1
36:40max-parameters
net/portmapper/legacy_upnp.go:36:40
// AddPortMapping implements upnpClientfunc (client *legacyWANPPPConnection1) AddPortMapping( ctx context.Context,client/local/local.go1
1345:6max-public-structs
client/local/local.go:1345:6
// It must be closed when done.type IPNBusWatcher struct { ctx context.Context // from original WatchIPNBus callappc/appconnector.go1
460:3modifies-parameter
appc/appconnector.go:460:3
} domain = next }feature/taildrop/taildrop.go1
119:3modifies-value-receiver
feature/taildrop/taildrop.go:119:3
if opts.Logf == nil { opts.Logf = logger.Discard }chirp/chirp_test.go2
119:12nested-structs
chirp/chirp_test.go:119:12
t *testing.T done chan struct{} wg sync.WaitGroup47:5nil-error-return
chirp/chirp_test.go:47:5
if errors.Is(err, net.ErrClosed) { return nil }client/tailscale/acl.go1
512:3nil-value-with-nil-error
client/tailscale/acl.go:512:3
if len(b) == 0 { return nil, nil }cmd/k8s-operator/testutils_test.go1
805:3no-defer-in-loop
cmd/k8s-operator/testutils_test.go:805:3
timer := time.NewTimer(time.Second * 5) defer timer.Stop() select {chirp/chirp.go1
71:4no-else-after-return
chirp/chirp.go:71:4
return nil } else if strings.Contains(out, fmt.Sprintf("%s: disabled", protocol)) { return nilassert_ts_toolchain_match.go1
14:6no-init
assert_ts_toolchain_match.go:14:6
func init() { tsRev, ok := tailscaleToolchainRev()client/local/local.go1
1103:3no-naked-return
client/local/local.go:1103:3
if err != nil { return }appc/appconnector.go1
84:2no-package-var
appc/appconnector.go:84:2
var ( metricStoreRoutesRateBuckets = []int64{1, 2, 3, 4, 5, 10, 100, 1000} metricStoreRoutesNBuckets = []int64{1, 2, 3, 4, 5, 10, 100, 1000, 10000}cmd/tailscaled/install_darwin.go1
58:2overwritten-before-use
cmd/tailscaled/install_darwin.go:58:2
plist, err := exec.Command("launchctl", "list", "com.tailscale.tailscaled").Output() _ = plist // parse it? https://github.com/DHowett/go-plist if we need something.appc/observe.go1
6:9package-comments
appc/observe.go:6:9
package appcassert_ts_toolchain_match.go1
6:9package-directory-mismatch
assert_ts_toolchain_match.go:6:9
package tailscaleroottypes/prefs/prefs_example/prefs_test.go1
4:9package-naming
types/prefs/prefs_example/prefs_test.go:4:9
package prefs_exampleclient/web/web.go1
1094:33range-value-address
client/web/web.go:1094:33
} exitNodes = append(exitNodes, &exitNode{ ID: ps.ID,cmd/containerboot/settings.go1
290:7receiver-naming
cmd/containerboot/settings.go:290:7
// Kubernetes.func (cfg *settings) setupKube(ctx context.Context, kc *kubeClient) error { if cfg.KubeSecret == "" {client/web/auth.go1
332:4redefines-builtin-id
client/web/auth.go:332:4
for _, f := range c.CanEdit { cap := capFeature(strings.ToLower(f)) if slices.Contains(validCaps, cap) {client/systray/systray.go1
557:75redundant-conversion
client/systray/systray.go:557:75
obj := conn.Object("org.freedesktop.Notifications", "/org/freedesktop/Notifications") call := obj.Call("org.freedesktop.Notifications.Notify", 0, "Tailscale", uint32(0), menu.notificationIcon.Name(), title, content, []string{}, map[string]dbus.Variant{}, int32(timeout.Milliseconds()))cmd/tailscale/cli/syspolicy.go1
114:2redundant-final-return
cmd/tailscale/cli/syspolicy.go:114:2
fmt.Println() return}cmd/sync-containers/main.go1
30:2redundant-import-alias
cmd/sync-containers/main.go:30:2
"github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/remote"ipn/ipnlocal/network-lock.go1
220:8separate-byte-string-map-key
ipn/ipnlocal/network-lock.go:220:8
} wp := string(d.InitialSig.WrappingPubkey) r.byWrappingKey[wp] = append(r.byWrappingKey[wp], rd)util/osdiag/osdiag_windows_test.go1
18:9simplify-range
util/osdiag/osdiag_windows_test.go:18:9
buf := make([]byte, maxBinaryValueLen*2) for i, _ := range buf { buf[i] = byte(i % 0xFF)cmd/tailscaled/tailscaled.go1
84:3single-case-switch
cmd/tailscaled/tailscaled.go:84:3
case "linux": switch distro.Get() { case distro.Synology:client/web/web.go1
1089:6slice-preallocation
client/web/web.go:1089:6
} var exitNodes []*exitNode for _, ps := range st.Peer {client/local/debugportmapper.go1
69:46standard-http-method-constant
client/local/debugportmapper.go:69:46
req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/debug-portmap?"+vals.Encode(), nil) if err != nil {appc/appconnector.go1
247:2task-comment
appc/appconnector.go:247:2
// TODO(creachdair): Remove this once it's delivered over the event bus. return e.storeRoutesFunc(&appctype.RouteInfo{tstime/jitter.go1
13:28time-naming
tstime/jitter.go:13:28
// If panics if max < min.func RandomDurationBetween(min, max time.Duration) time.Duration { diff := max - mincmd/natc/ippool/consensusippool_test.go1
184:5time-value-equality
cmd/natc/ippool/consensusippool_test.go:184:5
} if ww.LastUsed != time1 { t.Fatalf("expected %s, got %s", time1, ww.LastUsed)appc/appconnector.go1
74:1top-level-declaration-order
appc/appconnector.go:74:1
// newly discovered routes that need to be served through the AppConnector.type RouteAdvertiser interface { // AdvertiseRoute adds one or more route advertisements skipping any thatclient/web/auth.go1
138:14unchecked-type-assertion
client/web/auth.go:138:14
} session := v.(*browserSession) if session.SrcNode != srcNode || session.SrcUser != srcUser {clientupdate/distsign/distsign.go1
341:2unclosed-http-response-body
clientupdate/distsign/distsign.go:341:2
res, err := hc.Do(headReq) if err != nil {atomicfile/atomicfile_windows_test.go1
14:5unexported-naming
atomicfile/atomicfile_windows_test.go:14:5
var _SECURITY_RESOURCE_MANAGER_AUTHORITY = windows.SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 9}}cmd/derper/cert.go1
75:54unexported-return
cmd/derper/cert.go:75:54
// NewManualCertManager returns a cert provider which read certificate by given hostname on create.func NewManualCertManager(certdir, hostname string) (certProvider, error) { keyname := unsafeHostnameCharacters.ReplaceAllString(hostname, "")cmd/omitsize/omitsize.go1
82:3unnecessary-format
cmd/omitsize/omitsize.go:82:3
fmt.Printf("Starting with everything and removing a feature...\n\n")clientupdate/clientupdate_windows.go1
166:2unreachable-code
clientupdate/clientupdate_windows.go:166:2
os.Exit(0) panic("unreachable")}cmd/k8s-operator/e2e/ingress_test.go1
115:54unsafe-formatted-url-host-port
cmd/k8s-operator/e2e/ingress_test.go:115:54
// a -N suffix. req, err := http.NewRequest(httpm.GET, fmt.Sprintf("http://%s-%s:80", svc.Namespace, svc.Name), nil) if err != nil {net/portmapper/upnp.go1
498:18unused-append-result
net/portmapper/upnp.go:498:18
if err != nil { errs = append(errs, err) continueappc/observe_disabled.go2
8:43unused-parameter
appc/observe_disabled.go:8:43
func (e *AppConnector) ObserveDNSResponse(res []byte) error { return nil }8:7unused-receiver
appc/observe_disabled.go:8:7
func (e *AppConnector) ObserveDNSResponse(res []byte) error { return nil }ipn/ipnlocal/cert_disabled.go1
32:16use-any
ipn/ipnlocal/cert_disabled.go:32:16
type certStore interface{}client/local/cert.go1
78:20use-errors-new
client/local/cert.go:78:20
if i == -1 { return nil, nil, fmt.Errorf("unexpected output: no delimiter") }cmd/tailscale/cli/file.go1
230:2use-fmt-print
cmd/tailscale/cli/file.go:230:2
defer tc.Stop() print() for {cmd/k8s-operator/nodeport-service-ports.go1
164:2use-slices-sort
cmd/k8s-operator/nodeport-service-ports.go:164:2
sort.Slice(portRanges, func(i, j int) bool { return portRanges[i].Port < portRanges[j].Portcmd/tailscale/cli/serve_legacy_test.go1
745:30var-declaration
cmd/tailscale/cli/serve_legacy_test.go:745:30
} var got *ipn.ServeConfig = nil if lc.setCount > lastCount {atomicfile/atomicfile_windows_test.go1
14:5var-naming
atomicfile/atomicfile_windows_test.go:14:5
var _SECURITY_RESOURCE_MANAGER_AUTHORITY = windows.SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 9}}tempfork/gliderlabs/ssh/agent.go1
69:4waitgroup-add-inside-goroutine
tempfork/gliderlabs/ssh/agent.go:69:4
var wg sync.WaitGroup wg.Add(2) go func() {packages/deb/deb.go1
55:18weak-cryptography
packages/deb/deb.go:55:18
m5, s1, s256 := md5.New(), sha1.New(), sha256.New() summers := io.MultiWriter(m5, s1, s256)appc/appconnector_test.go1
68:13add-constant
appc/appconnector_test.go:68:13
if got, want := slicesx.MapKeys(a.domains), []string{"up.example.com"}; !slices.Equal(got, want) { t.Errorf("got %v; want %v", got, want) }client/tailscale/tailscale.go1
104:22append-to-sized-slice
client/tailscale/tailscale.go:104:22
allElements[1] = c.tailnet allElements = append(allElements, pathElements...) return c.BuildURL(allElements...)cmd/tailscale/cli/debug.go1
35:2blank-imports
cmd/tailscale/cli/debug.go:35:2
"tailscale.com/feature" _ "tailscale.com/feature/condregister/useproxy" "tailscale.com/health"cmd/k8s-operator/sts.go1
622:31boolean-literal-comparison
cmd/k8s-operator/sts.go:622:31
ss := new(appsv1.StatefulSet) if sts.ServeConfig != nil && sts.ForwardClusterTrafficViaL7IngressProxy != true { // If forwarding cluster traffic via is required we need non-userspace + NET_ADMIN + forwarding if err := yaml.Unmarshal(userspaceProxyYaml, &ss); err != nil {control/controlbase/conn_test.go1
267:3call-to-gc
control/controlbase/conn_test.go:267:3
for time.Now().Before(deadline) { runtime.GC() ngo = runtime.NumGoroutine()appc/appconnector.go1
361:24cognitive-complexity
appc/appconnector.go:361:24
// covered by new ranges.func (e *AppConnector) updateRoutes(routes []netip.Prefix) { e.mu.Lock()client/local/local.go1
654:19confusing-naming
client/local/local.go:654:19
func (lc *Client) status(ctx context.Context, queryString string) (*ipnstate.Status, error) { body, err := lc.get200(ctx, "/localapi/v0/status"+queryString)cmd/k8s-operator/dnsrecords.go1
396:134confusing-results
cmd/k8s-operator/dnsrecords.go:396:134
// for the given proxy Service.func (dnsRR *dnsRecordsReconciler) getTargetIPs(ctx context.Context, proxySvc *corev1.Service, logger *zap.SugaredLogger) ([]string, []string, error) { if dnsRR.isProxyGroupEgressService(proxySvc) {ipn/auditlog/auditlog.go1
424:6constructor-interface-return
ipn/auditlog/auditlog.go:424:6
// NewLogStore creates a new LogStateStore with the given [ipn.StateStore].func NewLogStore(store ipn.StateStore) LogStore { return &logStateStore{cmd/tailscaled/debug.go1
123:50context-as-argument
cmd/tailscaled/debug.go:123:50
func changeDeltaWatcher(ec *eventbus.Client, ctx context.Context, dump func(st *netmon.State)) func(*eventbus.Client) { changeSub := eventbus.Subscribe[netmon.ChangeDelta](ec)feature/taildrop/ext.go1
296:3context-cancel-in-loop
feature/taildrop/ext.go:296:3
gotFile, gotFileCancel := context.WithCancel(context.Background()) defer gotFileCancel()client/systray/systray.go1
89:2context-stored-in-struct
client/systray/systray.go:89:2
bgCtx context.Context // ctx for background tasks not involving menu item clicks bgCancel context.CancelFunctsweb/varz/varz_test.go1
127:10copy-lock-value
tsweb/varz/varz_test.go:127:10
&metrics.Set{ Map: *(func() *expvar.Map { m := new(expvar.Map)appc/appconnector_test.go1
229:6cyclomatic-complexity
appc/appconnector_test.go:229:6
func TestObserveDNSResponse(t *testing.T) { ctx := t.Context()client/web/assets.go1
87:3deep-exit
client/web/assets.go:87:3
if err != nil { log.Fatalf("error running tailscale web's yarn install: %v, %s", err, out) }client/tailscale/cert.go1
26:9deprecated-api-usage
client/tailscale/cert.go:26:9
func CertPair(ctx context.Context, domain string) (certPEM, keyPEM []byte, err error) { return local.CertPair(ctx, domain)}appc/appconnector_test.go1
116:3discarded-error-result
appc/appconnector_test.go:116:3
slices.SortFunc(rc.Routes(), prefixCompare) rc.SetRoutes(slices.Compact(rc.Routes())) slices.SortFunc(routes, prefixCompare)client/local/local.go1
435:1doc-comment-period
client/local/local.go:435:1
// EventBusGraph returns a graph of active publishers and subscribers in the eventbus// as a [eventbus.DebugTopics]func (lc *Client) EventBusGraph(ctx context.Context) ([]byte, error) {util/deephash/tailscale_types_test.go1
25:2dot-imports
util/deephash/tailscale_types_test.go:25:2
. "tailscale.com/util/deephash")cmd/k8s-operator/proxygroup_test.go1
32:2duplicated-imports
cmd/k8s-operator/proxygroup_test.go:32:2
kube "tailscale.com/k8s-operator" tsoperator "tailscale.com/k8s-operator" tsapi "tailscale.com/k8s-operator/apis/v1alpha1"cmd/derper/derper.go1
120:3early-return
cmd/derper/derper.go:120:3
if *configPath == "" { if os.Getuid() == 0 { *configPath = "/var/lib/derper/derper.key"ipn/ipnauth/ipnauth_unix_creds.go1
24:46empty-conditional-block
ipn/ipnauth/ipnauth_unix_creds.go:24:46
ci.pid, _ = ci.creds.PID() } else if err == peercred.ErrNotImplemented { // peercred.Get is not implemented on this OS (such as OpenBSD)cmd/tailscale/cli/debug.go1
929:2enforce-switch-style
cmd/tailscale/cli/debug.go:929:2
switch len(args) { default: return errors.New("expect either <site-id> <v4-cidr> or <v6-route>")net/sockopts/sockopts_linux.go1
22:93error-last-result
net/sockopts/sockopts_linux.go:22:93
// If pconn is not a [*net.UDPConn], then SetBufferSize is no-op.func SetBufferSize(pconn nettype.PacketConn, direction BufferDirection, size int) (errForce error, errPortable error) { opt := syscall.SO_RCVBUFFORCEenvknob/envknob.go1
521:5error-naming
envknob/envknob.go:521:5
var applyDiskConfigErr errorappc/appconnector_test.go1
107:13error-strings
appc/appconnector_test.go:107:13
if err := a.ObserveDNSResponse(dnsResponse("b.example.com.", "192.0.0.1")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }cmd/k8s-operator/proxygroup.go1
516:6error-type-naming
cmd/k8s-operator/proxygroup.go:516:6
type allocatePortsErr struct { msg stringcmd/tailscale/cli/serve_legacy_test.go1
73:3excessive-blank-identifiers
cmd/tailscale/cli/serve_legacy_test.go:73:3
add := func(s step) { _, _, s.line, _ = runtime.Caller(1) steps = append(steps, s)appc/appconnector.go1
128:6exported-declaration-comment
appc/appconnector.go:128:6
// updated to advertise the new route.type AppConnector struct { // These fields are immutable after initialization.appc/appconnector_test.go1
1:1file-length-limit
appc/appconnector_test.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clauseclient/web/assets.go1
24:20flag-parameter
client/web/assets.go:24:20
func assetsHandler(devMode bool) (_ http.Handler, cleanup func()) { if devMode {appc/appconnector_test.go2
1:1format
appc/appconnector_test.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt appc/appconnector_test.go`
571:6function-length
appc/appconnector_test.go:571:6
func TestUpdateDomainRouteRemoval(t *testing.T) { ctx := t.Context()cmd/k8s-operator/svc-for-pg_test.go1
115:6function-result-limit
cmd/k8s-operator/svc-for-pg_test.go:115:6
func setupServiceTest(t *testing.T) (*HAServiceReconciler, *corev1.Secret, client.Client, *fakeTSClient, *tstest.Clock) { // Pre-create the ProxyGroupclient/web/auth.go1
56:2identical-switch-branches
client/web/auth.go:56:2
return false // awaiting auth case s.isExpired(now): return false // expiredipn/store/awsstore/store_aws_test.go1
15:2import-alias-naming
ipn/store/awsstore/store_aws_test.go:15:2
"github.com/aws/aws-sdk-go-v2/service/ssm" ssmTypes "github.com/aws/aws-sdk-go-v2/service/ssm/types" "tailscale.com/ipn"client/local/local.go1
598:60import-shadowing
client/local/local.go:598:60
// The schema (including when keys are re-read) is not a stable interface.func (lc *Client) SetDevStoreKeyValue(ctx context.Context, key, value string) error { body, err := lc.send(ctx, "POST", "/localapi/v0/dev-set-state-store?"+(url.Values{ssh/tailssh/tailssh.go1
1526:5impossible-platform-comparison
ssh/tailssh/tailssh.go:1526:5
//lint:ignore SA4032 in case this func moves elsewhere, permit the GOOS check if runtime.GOOS == "windows" { return strings.EqualFold(a, b)control/controlbase/noiseexplorer_test.go1
441:2increment-decrement
control/controlbase/noiseexplorer_test.go:441:2
} session.mc = session.mc + 1 return session, plaintext, validcmd/tsidp/tsidp.go1
734:6inefficient-map-lookup
cmd/tsidp/tsidp.go:734:6
if _, seen := isSlice[claim]; !seen { isSlice[claim] = false }cmd/k8s-operator/egress-services-readiness.go1
122:37inefficient-sprintf
cmd/k8s-operator/egress-services-readiness.go:122:37
for i := range replicas { podLabels[appsv1.PodIndexLabel] = fmt.Sprintf("%d", i) pod, err := getSingleObject[corev1.Pod](ctx, esrr.Client, esrr.tsNamespace, podLabels)client/local/local.go1
263:54insecure-url-scheme
client/local/local.go:263:54
} req, err := http.NewRequestWithContext(ctx, method, "http://"+apitype.LocalAPIHost+path, body) if err != nil {tempfork/gliderlabs/ssh/context.go1
65:14interface-method-limit
tempfork/gliderlabs/ssh/context.go:65:14
// embedded in the context to make it easier to limit operations per-connection.type Context interface { context.Contextipn/ipnauth/actor.go1
108:7marshal-receiver
ipn/ipnauth/actor.go:108:7
// It is primarily used for testing.func (id *ClientID) UnmarshalJSON(b []byte) error { return json.Unmarshal(b, &id.v)client/systray/systray.go1
655:8max-control-nesting
client/systray/systray.go:655:8
for _, ps := range city.peers { if status.ExitNodeStatus.ID == ps.ID { mullvadMenu.Check()net/portmapper/legacy_upnp.go1
175:39max-parameters
net/portmapper/legacy_upnp.go:175:39
// AddPortMapping implements upnpClientfunc (client *legacyWANIPConnection1) AddPortMapping( ctx context.Context,client/tailscale/acl.go1
70:6max-public-structs
client/tailscale/acl.go:70:6
// ACLHuJSON contains the HuJSON string of the ACL and metadata.type ACLHuJSON struct { ACL stringclient/local/debugportmapper.go1
56:3modifies-parameter
client/local/debugportmapper.go:56:3
if opts == nil { opts = &DebugPortmapOpts{} }feature/taildrop/taildrop.go1
122:3modifies-value-receiver
feature/taildrop/taildrop.go:122:3
if opts.SendFileNotify == nil { opts.SendFileNotify = func() {} }chirp/chirp_test.go2
133:23nested-structs
chirp/chirp_test.go:133:23
t: t, done: make(chan struct{}), sock: sock,149:5nil-error-return
chirp/chirp_test.go:149:5
if errors.Is(err, net.ErrClosed) { return nil }cmd/k8s-operator/ingress-for-pg.go1
921:3nil-value-with-nil-error
cmd/k8s-operator/ingress-for-pg.go:921:3
if tsSvc.Annotations == nil || tsSvc.Annotations[ownerAnnotation] == "" { return nil, nil }cmd/tailscale/cli/file.go1
156:4no-defer-in-loop
cmd/tailscale/cli/file.go:156:4
} defer f.Close() fi, err := f.Stat()chirp/chirp.go1
85:4no-else-after-return
chirp/chirp.go:85:4
return nil } else if strings.Contains(out, fmt.Sprintf("%s: enabled", protocol)) { return nilclient/systray/systray.go1
128:6no-init
client/systray/systray.go:128:6
func init() { if runtime.GOOS != "linux" {client/local/local.go1
1107:3no-naked-return
client/local/local.go:1107:3
if err != nil { return }appc/appconnector.go1
85:2no-package-var
appc/appconnector.go:85:2
metricStoreRoutesRateBuckets = []int64{1, 2, 3, 4, 5, 10, 100, 1000} metricStoreRoutesNBuckets = []int64{1, 2, 3, 4, 5, 10, 100, 1000, 10000} metricStoreRoutesRate []*clientmetric.Metriccontrol/controlbase/noiseexplorer_test.go1
172:2overwritten-before-use
control/controlbase/noiseexplorer_test.go:172:2
var plaintext []byte enc, err := chacha20poly1305.New(k[:]) binary.LittleEndian.PutUint32(nonce[4:], n)appc/observe_disabled.go1
6:9package-comments
appc/observe_disabled.go:6:9
package appcgomod_test.go1
4:9package-directory-mismatch
gomod_test.go:4:9
package tailscaleroottypes/prefs/prefs_example/prefs_types.go1
11:9package-naming
types/prefs/prefs_example/prefs_types.go:11:9
// generating code for test packages.package prefs_exampleclient/web/web_test.go1
419:9range-value-address
client/web/web_test.go:419:9
selfNode = tt.selfNode r := &http.Request{RemoteAddr: tt.remoteAddr, Header: http.Header{}} if tt.cookie != "" {cmd/containerboot/settings.go1
382:7receiver-naming
cmd/containerboot/settings.go:382:7
func (cfg *settings) localMetricsEnabled() bool { return cfg.LocalAddrPort != "" && cfg.MetricsEnabledclientupdate/clientupdate_windows.go1
86:3redefines-builtin-id
clientupdate/clientupdate_windows.go:86:3
// output to debug with in case update fails. close, err := up.switchOutputToFile() if err != nil {client/tailscale/keys.go1
96:10redundant-conversion
client/tailscale/keys.go:96:10
ExpirySeconds int64 `json:"expirySeconds,omitempty"` }{caps, int64(expirySeconds)} bs, err := json.Marshal(keyRequest)derp/derpserver/derpserver_default.go1
12:2redundant-final-return
derp/derpserver/derpserver_default.go:12:2
// Nothing to do return}util/goroutines/goroutines.go1
46:12separate-byte-string-map-key
util/goroutines/goroutines.go:46:12
} inStr := string(in) u64, err := strconv.ParseUint(string(in[2:]), 16, 64)derp/derp_test.go1
786:3single-case-switch
derp/derp_test.go:786:3
} switch m := m.(type) { case derp.PongMessage:client/web/web.go1
1134:6slice-preallocation
client/web/web.go:1134:6
} var currNonExitRoutes []string var currAdvertisingExitNode boolclient/local/local.go1
420:46standard-http-method-constant
client/local/local.go:420:46
func (lc *Client) TailDaemonLogs(ctx context.Context) (io.Reader, error) { req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/logtap", nil) if err != nil {appc/appconnector.go1
299:21task-comment
appc/appconnector.go:299:21
defer e.mu.Unlock() e.queue.Shutdown() // TODO(creachadair): Should we wait for it too? e.pubClient.Close()cmd/natc/ippool/consensusippool_test.go1
201:5time-value-equality
cmd/natc/ippool/consensusippool_test.go:201:5
} if ww.LastUsed != time2 { t.Fatalf("expected %s, got %s", time2, ww.LastUsed)appc/appconnector_test.go1
903:1top-level-declaration-order
appc/appconnector_test.go:903:1
type textUpdate struct { Advertise []stringclient/web/web_test.go1
821:18unchecked-type-assertion
client/web/web_test.go:821:18
if s, ok := s.browserSessions.Load(sessionID); ok { gotSesson = s.(*browserSession) }cmd/checkmetrics/checkmetrics.go1
107:2unclosed-http-response-body
cmd/checkmetrics/checkmetrics.go:107:2
resp, err := http.DefaultClient.Do(req) if err != nil {cmd/natc/natc_test.go1
93:53unexported-naming
cmd/natc/natc_test.go:93:53
func (r *resolver) LookupNetIP(ctx context.Context, _net, host string) ([]netip.Addr, error) { if addrs, ok := r.resolves[host]; ok {cmd/k8s-operator/sts.go1
513:125unexported-return
cmd/k8s-operator/sts.go:513:125
// returned capver is -1. Either of device ID, hostname and IPs can be empty string if not found in the Secret.func (a *tailscaleSTSReconciler) DeviceInfo(ctx context.Context, childLabels map[string]string, logger *zap.SugaredLogger) ([]*device, error) { var secrets corev1.SecretListcmd/omitsize/omitsize.go1
102:2unnecessary-format
cmd/omitsize/omitsize.go:102:2
fmt.Printf("\nStarting at a minimal binary and adding one feature back...\n\n") fmt.Printf("%9s %9s %9s\n", "tailscaled", "tailscale", "combined (linux/amd64)")cmd/tailscale/cli/debug.go1
734:2unreachable-code
cmd/tailscale/cli/debug.go:734:2
os.Exit(1) panic("unreachable")}cmd/k8s-operator/egress-services.go1
797:21unsafe-formatted-url-host-port
cmd/k8s-operator/egress-services.go:797:21
} return fmt.Sprintf("http://%s.%s.svc.%s:%d/healthz", svc.Name, svc.Namespace, clusterDomain, svc.Spec.Ports[i].Port)}net/portmapper/upnp.go1
522:17unused-append-result
net/portmapper/upnp.go:522:17
if err != nil { errs = append(errs, err) continueclient/local/local.go1
110:54unused-parameter
client/local/local.go:110:54
func (lc *Client) defaultDialer(ctx context.Context, network, addr string) (net.Conn, error) { if addr != "local-tailscaled.sock:80" {client/web/web.go1
1065:7unused-receiver
client/web/web.go:1065:7
// This does not currently check whether a specific device can connect, just any device.func (s *Server) aclsAllowAccess(rules []tailcfg.FilterRule) bool { for _, rule := range rules {tempfork/acme/acme_test.go1
55:39use-any
tempfork/acme/acme_test.go:55:39
// interface.func decodeJWSRequest(t *testing.T, v interface{}, r io.Reader) { // Decode requestclient/local/cert.go1
83:20use-errors-new
client/local/cert.go:83:20
if mem.Contains(mem.B(certPEM), mem.S(" PRIVATE KEY-----")) { return nil, nil, fmt.Errorf("unexpected output: key in cert") }cmd/tailscale/cli/file.go1
234:4use-fmt-print
cmd/tailscale/cli/file.go:234:4
case <-ctx.Done(): print() fmt.Fprintln(os.Stderr)cmd/k8s-operator/proxygroup.go1
1122:2use-slices-sort
cmd/k8s-operator/proxygroup.go:1122:2
// Sort for predictable ordering and status. sort.Slice(metadata, func(i, j int) bool { return metadata[i].ordinal < metadata[j].ordinalcmd/tailscale/cli/serve_v2_test.go1
859:32var-declaration
cmd/tailscale/cli/serve_v2_test.go:859:32
} var got *ipn.ServeConfig = nil if lc.setCount > lastCount {client/tailscale/tailscale.go1
26:5var-naming
client/tailscale/tailscale.go:26:5
// for now. This package is being replaced by [tailscale.com/client/tailscale/v2].var I_Acknowledge_This_API_Is_Unstable = falsetempfork/sshtest/ssh/session_test.go1
49:3waitgroup-add-inside-goroutine
tempfork/sshtest/ssh/session_test.go:49:3
} wg.Add(1) go func() {packages/deb/deb.go1
55:29weak-cryptography
packages/deb/deb.go:55:29
m5, s1, s256 := md5.New(), sha1.New(), sha256.New() summers := io.MultiWriter(m5, s1, s256)appc/appconnector_test.go1
125:55add-constant
appc/appconnector_test.go:125:55
// Ensure that the contained /32 is removed, replaced by the /24. wantRemoved := []netip.Prefix{netip.MustParsePrefix("192.0.2.1/32")} if !slices.EqualFunc(rc.RemovedRoutes(), wantRemoved, prefixEqual) {net/socks5/socks5.go1
683:15append-to-sized-slice
net/socks5/socks5.go:683:15
return append(pkt, addrPkt...), nil}cmd/tailscale/cli/maybe_syspolicy.go1
8:8blank-imports
cmd/tailscale/cli/maybe_syspolicy.go:8:8
import _ "tailscale.com/feature/syspolicy"cmd/tailscale/cli/serve_v2.go1
729:6boolean-literal-comparison
cmd/tailscale/cli/serve_v2.go:729:6
} else { if sc.AllowFunnel[hp] == true { output.WriteString(msgFunnelAvailable)control/controlbase/conn_test.go1
277:2call-to-gc
control/controlbase/conn_test.go:277:2
} runtime.GC() var ms runtime.MemStatsappc/appconnector.go1
439:24cognitive-complexity
appc/appconnector.go:439:24
// e.mu must be held.func (e *AppConnector) findRoutedDomainLocked(domain string, cnameChain map[string]string) (string, bool) { var isRouted boolclientupdate/distsign/distsign.go1
331:18confusing-naming
clientupdate/distsign/distsign.go:331:18
// limit bytes. On success, the returned value is a BLAKE2s hash of the file.func (c *Client) download(ctx context.Context, url, dst string, limit int64) ([]byte, int64, error) { tr := http.DefaultTransport.(*http.Transport).Clone()cmd/k8s-operator/dnsrecords.go1
405:123confusing-results
cmd/k8s-operator/dnsrecords.go:405:123
// It separates IPv4 and IPv6 addresses for dual-stack services.func (dnsRR *dnsRecordsReconciler) getClusterIPServiceIPs(proxySvc *corev1.Service, logger *zap.SugaredLogger) ([]string, []string, error) { // Handle services with no ClusterIPkube/kubeclient/client.go1
97:6constructor-interface-return
kube/kubeclient/client.go:97:6
// New returns a new clientfunc New(name string) (Client, error) { ns, err := readFile("namespace")derp/derp_test.go1
549:38context-as-argument
derp/derp_test.go:549:38
func newTestServer(t *testing.T, ctx context.Context) *testServer { t.Helper()kube/certs/certs.go1
71:25context-cancel-in-loop
kube/certs/certs.go:71:25
if _, exists := cm.certLoops[domain]; !exists { cancelCtx, cancel := context.WithCancel(ctx) mak.Set(&cm.certLoops, domain, cancel)control/controlclient/auto.go1
143:2context-stored-in-struct
control/controlclient/auto.go:143:2
authCtx context.Context // context used for auth requests mapCtx context.Context // context used for netmap and update requeststsweb/varz/varz_test.go1
172:10copy-lock-value
tsweb/varz/varz_test.go:172:10
Label: "label", Map: *(func() *expvar.Map { m := new(expvar.Map)appc/observe.go1
20:24cyclomatic-complexity
appc/observe.go:20:24
// advised to advertise the discovered route.func (e *AppConnector) ObserveDNSResponse(res []byte) error { var p dnsmessage.Parserclient/web/assets.go1
95:3deep-exit
client/web/assets.go:95:3
if err := cmd.Start(); err != nil { log.Fatalf("Starting JS dev server: %v", err) }client/tailscale/cert.go1
33:9deprecated-api-usage
client/tailscale/cert.go:33:9
func ExpandSNIName(ctx context.Context, name string) (fqdn string, ok bool) { return local.ExpandSNIName(ctx, name)}appc/appconnector_test.go1
167:3discarded-error-result
appc/appconnector_test.go:167:3
mak.Set(&a.domains, "example.com", []netip.Addr{netip.MustParseAddr("192.0.2.1")}) rc.SetRoutes([]netip.Prefix{netip.MustParsePrefix("192.0.2.1/32")}) routes := []netip.Prefix{netip.MustParsePrefix("192.0.2.0/24")}client/local/local.go1
816:1doc-comment-period
client/local/local.go:816:1
// nodes or subnet routers.// See https://tailscale.com/kb/1320/performance-best-practices#linux-optimizations-for-subnet-routers-and-exit-nodesfunc (lc *Client) SetUDPGROForwarding(ctx context.Context) error {k8s-operator/api-proxy/proxy.go1
27:2duplicated-imports
k8s-operator/api-proxy/proxy.go:27:2
"tailscale.com/k8s-operator/sessionrecording" ksr "tailscale.com/k8s-operator/sessionrecording" "tailscale.com/kube/kubetypes"cmd/gitops-pusher/gitops-pusher.go1
193:3early-return
cmd/gitops-pusher/gitops-pusher.go:193:3
if err != nil { if os.IsNotExist(err) { cache = &Cache{}ipn/ipnlocal/expiry.go1
203:26empty-conditional-block
ipn/ipnlocal/expiry.go:203:26
if selfExpiry.IsZero() { // No expiry for self nodecmd/tailscale/cli/file.go1
489:2enforce-switch-style
cmd/tailscale/cli/file.go:489:2
switch action { default: // This should not happen.tempfork/sshtest/ssh/client_auth_test.go1
49:114error-last-result
tempfork/sshtest/ssh/client_auth_test.go:49:114
// tryAuthBothSides runs the handshake and returns the resulting errors from both sides of the connection.func tryAuthBothSides(t *testing.T, config *ClientConfig, gssAPIWithMICConfig *GSSAPIWithMICConfig) (clientError error, serverAuthErrors []error) { c1, c2, err := netPipe()ipn/ipnext/ipnext.go1
75:5error-naming
ipn/ipnext/ipnext.go:75:5
// that may change throughout the LocalBackend's lifetime.var SkipExtension = errors.New("skipping extension")appc/appconnector_test.go1
208:13error-strings
appc/appconnector_test.go:208:13
if err := a.ObserveDNSResponse(dnsResponse("example.com.", "192.0.0.8")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }cmd/k8s-operator/proxygroup.go1
910:6error-type-naming
cmd/k8s-operator/proxygroup.go:910:6
type FindStaticEndpointErr struct { msg stringdrive/driveimpl/dirfs/dirfs_test.go1
183:2excessive-blank-identifiers
drive/driveimpl/dirfs/dirfs_test.go:183:2
func TestMkdir(t *testing.T) { fs, _, _, _ := createFileSystem(t)appc/appconnector.go1
221:24exported-declaration-comment
appc/appconnector.go:221:24
// and is storing its discovered routes persistently.func (e *AppConnector) ShouldStoreRoutes() bool { return e.storeRoutesFunc != nilclient/local/local.go1
1:1file-length-limit
client/local/local.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/containerboot/forwarding.go1
69:25flag-parameter
cmd/containerboot/forwarding.go:69:25
func enableIPForwarding(v4Forwarding, v6Forwarding bool, root string) error { var paths []stringappc/observe.go1
1:1format
appc/observe.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt appc/observe.go`
appc/appconnector_test.go1
652:6function-length
appc/appconnector_test.go:652:6
func TestUpdateWildcardRouteRemoval(t *testing.T) { ctx := t.Context()cmd/natc/ippool/consensusippool.go1
196:34function-result-limit
cmd/natc/ippool/consensusippool.go:196:34
// would be 24 hours ago.func (ps *consensusPerPeerState) unusedIPV4(ipset *netipx.IPSet, reuseDeadline time.Time) (netip.Addr, bool, string, error) { // If we want to have a random IP choice behavior we could make that work with the state machine by doing something likeclient/web/web.go1
482:3identical-switch-branches
client/web/web.go:482:3
return true case r.URL.Path == "/api/device-details-click" && r.Method == httpm.POST: // Special case metric endpoint that is allowed without a browser session.tempfork/sshtest/ssh/session_test.go1
11:2import-alias-naming
tempfork/sshtest/ssh/session_test.go:11:2
"bytes" crypto_rand "crypto/rand" "errors"client/local/local.go1
890:81import-shadowing
client/local/local.go:890:81
// (often just one, but can be more if we raced multiple resolvers).func (lc *Client) QueryDNS(ctx context.Context, name string, queryType string) (bytes []byte, resolvers []*dnstype.Resolver, err error) { if !buildfeatures.HasDNS {tsweb/debug_test.go1
186:3increment-decrement
tsweb/debug_test.go:186:3
dbg.KVFunc("Debug pageviews", func() any { views = views + 1 return viewscontrol/controlclient/map.go1
511:4inefficient-map-lookup
control/controlclient/map.go:511:4
} ms.peers[nodeID] = mut.View() stats.changed++cmd/k8s-operator/egress-services-readiness_test.go1
157:28inefficient-sprintf
cmd/k8s-operator/egress-services-readiness_test.go:157:28
l := pgLabels(pg.Name, nil) l[appsv1.PodIndexLabel] = fmt.Sprintf("%d", ordinal) ip := fmt.Sprintf("10.0.0.%d", ordinal)client/local/local.go1
420:53insecure-url-scheme
client/local/local.go:420:53
func (lc *Client) TailDaemonLogs(ctx context.Context) (io.Reader, error) { req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/logtap", nil) if err != nil {tempfork/gliderlabs/ssh/session.go1
23:14interface-method-limit
tempfork/gliderlabs/ssh/session.go:23:14
// TODO: Signalstype Session interface { gossh.Channelipn/prefs.go1
330:7marshal-receiver
ipn/prefs.go:330:7
func (marshalAsTrueInJSON) MarshalJSON() ([]byte, error) { return trueJSON, nil }func (*marshalAsTrueInJSON) UnmarshalJSON([]byte) error { return nil }client/systray/systray.go1
676:7max-control-nesting
client/systray/systray.go:676:7
for _, ps := range city.peers { if status.ExitNodeStatus.ID == ps.ID { mullvadMenu.Check()prober/derp.go1
379:6max-parameters
prober/derp.go:379:6
// can be the same server.func derpProbeQueuingDelay(ctx context.Context, dm *tailcfg.DERPMap, from, to *tailcfg.DERPNode, packetsPerSecond int, packetTimeout time.Duration, packetsDropped *expvar.Float, qdh *histogram, meshKey key.DERPMesh) (err error) { // This probe uses clients with isProber=false to avoid spamming the derperclient/tailscale/acl.go1
166:6max-public-structs
client/tailscale/acl.go:166:6
// JavaScript client to be rendered in the HTML.type ACLTestFailureSummary struct { // User is the source ("src") value of the ACL test that failed.client/local/local.go1
948:2modifies-parameter
client/local/local.go:948:2
} ctx = httptrace.WithClientTrace(ctx, &trace) req, err := http.NewRequestWithContext(ctx, "POST", "http://"+apitype.LocalAPIHost+"/localapi/v0/dial", nil)health/state.go1
72:2modifies-value-receiver
health/state.go:72:2
func (u UnhealthyState) withETag() UnhealthyState { u.ETag = "" u.ETag = hex.EncodeToString(u.hash())client/local/local.go1
504:16nested-structs
client/local/local.go:504:16
// generates another log marker. Record <-chan struct{}}client/tailscale/acl.go1
489:3nil-error-return
client/tailscale/acl.go:489:3
if err != nil { return nil, err }cmd/k8s-operator/sts.go1
210:4nil-value-with-nil-error
cmd/k8s-operator/sts.go:210:4
logger.Infof("ProxyClass %s specified for the proxy, but it is not (yet) in a ready state, waiting..") return nil, nil }cmd/tailscale/cli/file.go1
181:3no-defer-in-loop
cmd/tailscale/cli/file.go:181:3
ctxProgress, cancelProgress := context.WithCancel(ctx) defer cancelProgress() if isatty.IsTerminal(os.Stderr.Fd()) {client/local/debugportmapper.go1
65:4no-else-after-return
client/local/debugportmapper.go:65:4
return nil, fmt.Errorf("both GatewayAddr and SelfAddr must be provided if one is") } else if opts.GatewayAddr.IsValid() { vals.Set("gateway_and_self", fmt.Sprintf("%s/%s", opts.GatewayAddr, opts.SelfAddr))client/tailscale/required_version.go1
8:6no-init
client/tailscale/required_version.go:8:6
func init() { you_need_Go_1_23_to_compile_Tailscale()client/local/local.go1
1111:3no-naked-return
client/local/local.go:1111:3
if err != nil { return }appc/appconnector.go1
86:2no-package-var
appc/appconnector.go:86:2
metricStoreRoutesNBuckets = []int64{1, 2, 3, 4, 5, 10, 100, 1000, 10000} metricStoreRoutesRate []*clientmetric.Metric metricStoreRoutesN []*clientmetric.Metriccontrol/controlbase/noiseexplorer_test.go1
233:2overwritten-before-use
control/controlbase/noiseexplorer_test.go:233:2
func decryptWithAd(cs *cipherstate, ad []byte, ciphertext []byte) (*cipherstate, []byte, bool) { valid, ad, plaintext := decrypt(cs.k, cs.n, ad, ciphertext) cs = setNonce(cs, incrementNonce(cs.n))assert_ts_toolchain_match.go1
6:9package-comments
assert_ts_toolchain_match.go:6:9
package tailscalerootk8s-operator/conditions.go1
6:9package-directory-mismatch
k8s-operator/conditions.go:6:9
package kubeclient/web/web_test.go1
421:17range-value-address
client/web/web_test.go:421:17
if tt.cookie != "" { r.AddCookie(&http.Cookie{Name: sessionCookieName, Value: tt.cookie}) }cmd/containerboot/settings.go1
386:7receiver-naming
cmd/containerboot/settings.go:386:7
func (cfg *settings) localHealthEnabled() bool { return cfg.LocalAddrPort != "" && cfg.HealthCheckEnabledclientupdate/distsign/distsign.go1
146:51redefines-builtin-id
clientupdate/distsign/distsign.go:146:51
// to compute the inputs.func (s *SigningKey) SignPackageHash(hash []byte, len int64) ([]byte, error) { if len <= 0 {client/web/web_test.go1
97:41redundant-conversion
client/web/web_test.go:97:41
remoteUser := &tailcfg.UserProfile{ID: tailcfg.UserID(1)} remoteIPWithAllCapabilities := "100.100.100.101"ipn/ipnlocal/local.go1
4660:2redundant-final-return
ipn/ipnlocal/local.go:4660:2
c.Close() return}derp/derphttp/derphttp_client.go1
1098:3single-case-switch
derp/derphttp/derphttp_client.go:1098:3
m, err = client.Recv() switch m := m.(type) { case derp.PongMessage:clientupdate/distsign/distsign_test.go1
507:6slice-preallocation
clientupdate/distsign/distsign_test.go:507:6
func (s *testServer) resignSigningKeys() { var pubs [][]byte for _, k := range s.sign {client/local/local.go1
446:47standard-http-method-constant
client/local/local.go:446:47
return func(yield func(eventbus.DebugEvent, error) bool) { req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/debug-bus-events", nil)appc/appconnector_test.go1
833:1task-comment
appc/appconnector_test.go:833:1
//// TODO(creachadair, 2025-09-18): Remove this along with the advertiser// interface once the LocalBackend is switched to use the event bus and thenet/dns/resolver/tsdns.go1
597:51time-value-equality
net/dns/resolver/tsdns.go:597:51
} if c, ok := resolvConfCacheValue.LoadOk(); ok && c.mod == cur.mod && c.size == cur.size { return c.ip, nilchirp/chirp.go1
52:1top-level-declaration-order
chirp/chirp.go:52:1
// BIRDClient handles communication with the BIRD Internet Routing Daemon.type BIRDClient struct { socket stringclientupdate/distsign/distsign.go1
332:29unchecked-type-assertion
clientupdate/distsign/distsign.go:332:29
func (c *Client) download(ctx context.Context, url, dst string, limit int64) ([]byte, int64, error) { tr := http.DefaultTransport.(*http.Transport).Clone() tr.Proxy = feature.HookProxyFromEnvironment.GetOrNil()cmd/k8s-operator/e2e/ingress_test.go1
121:3unclosed-http-response-body
cmd/k8s-operator/e2e/ingress_test.go:121:3
defer cancel() resp, err = tailnetClient.HTTPClient().Do(req.WithContext(ctx)) return erripn/desktop/sessions_windows.go1
586:6unexported-naming
ipn/desktop/sessions_windows.go:586:6
type _WNDCLASSEX struct { CbSize uint32cmd/k8s-proxy/internal/config/config.go1
45:115unexported-return
cmd/k8s-proxy/internal/config/config.go:45:115
func NewConfigLoader(logger *zap.SugaredLogger, client clientcorev1.CoreV1Interface, cfgChan chan<- *conf.Config) *configLoader { return &configLoader{cmd/tailscale/cli/debug.go1
594:2unnecessary-format
cmd/tailscale/cli/debug.go:594:2
fmt.Printf("curl.exe http://%v/localapi/v0/status\n", lc.Addr()) fmt.Printf("Ctrl+C to stop") http.Serve(lc, rp)cmd/tailscale/cli/serve_legacy.go1
834:3unreachable-code
cmd/tailscale/cli/serve_legacy.go:834:3
log.Fatalf("lost connection to tailscaled: %v", err) e.lc.IncrementCounter(ctx, fmt.Sprintf("%s_enablement_lost_connection", feature), 1) return errcmd/tailscale/cli/serve_v2.go1
756:34unsafe-formatted-url-host-port
cmd/tailscale/cli/serve_v2.go:756:34
output.WriteString(fmt.Sprintf("|-- tcp://%s:%d (%s)\n", host, srvPort, tlsStatus)) for _, a := range ips {client/tailscale/tailnet.go1
17:60unused-parameter
client/tailscale/tailnet.go:17:60
// TailnetDeleteRequest handles sending a DELETE request for a tailnet to control.func (c *Client) TailnetDeleteRequest(ctx context.Context, tailnetID string) (err error) { defer func() {clientupdate/clientupdate.go1
548:7unused-receiver
clientupdate/clientupdate.go:548:7
func (up *Updater) archPackageInstalled() bool { err := exec.Command("pacman", "--query", "tailscale").Run()tempfork/acme/http.go1
175:80use-any
tempfork/acme/http.go:175:80
// It uses postNoRetry to make individual requests.func (c *Client) post(ctx context.Context, key crypto.Signer, url string, body interface{}, ok resOkay) (*http.Response, error) { retry := c.retryTimer()client/local/debugportmapper.go1
64:15use-errors-new
client/local/debugportmapper.go:64:15
if opts.GatewayAddr.IsValid() != opts.SelfAddr.IsValid() { return nil, fmt.Errorf("both GatewayAddr and SelfAddr must be provided if one is") } else if opts.GatewayAddr.IsValid() {cmd/tailscale/cli/file.go1
238:4use-fmt-print
cmd/tailscale/cli/file.go:238:4
case <-tc.C: print() }cmd/nardump/nardump.go1
87:2use-slices-sort
cmd/nardump/nardump.go:87:2
} sort.Slice(ents, func(i, j int) bool { return ents[i].Name() < ents[j].Name()cmd/containerboot/egressservices_test.go1
25:2var-naming
cmd/containerboot/egressservices_test.go:25:2
tailnetIPv4, tailnetIPv6 := netip.MustParseAddr("100.99.99.99"), netip.MustParseAddr("fd7a:115c:a1e0::701:b62a") tailnetIPv4_1, tailnetIPv6_1 := netip.MustParseAddr("100.88.88.88"), netip.MustParseAddr("fd7a:115c:a1e0::4101:512f") ports := map[egressservices.PortMap]struct{}{{Protocol: "tcp", MatchPort: 4003, TargetPort: 80}: {}}tempfork/sshtest/ssh/session_test.go1
66:4waitgroup-add-inside-goroutine
tempfork/sshtest/ssh/session_test.go:66:4
} wg.Add(1) go func() {tempfork/sshtest/ssh/cipher.go1
55:9weak-cryptography
tempfork/sshtest/ssh/cipher.go:55:9
func newRC4(key, iv []byte) (cipher.Stream, error) { return rc4.NewCipher(key)}appc/appconnector_test.go1
136:27add-constant
appc/appconnector_test.go:136:27
eqUpdate(appctype.RouteUpdate{ Advertise: prefixes("192.0.0.1/32", "192.0.2.0/24"), Unadvertise: prefixes("192.0.2.1/32"),net/socks5/socks5.go1
729:15append-to-sized-slice
net/socks5/socks5.go:729:15
return append(pkt, addrPkt...), nil}cmd/tailscale/cli/up.go1
28:2blank-imports
cmd/tailscale/cli/up.go:28:2
"tailscale.com/feature/buildfeatures" _ "tailscale.com/feature/condregister/oauthkey" "tailscale.com/health/healthmsg"cmd/tailscale/cli/serve_v2_test.go1
1150:7boolean-literal-comparison
cmd/tailscale/cli/serve_v2_test.go:1150:7
if tt.wantErr == true && err == nil { t.Errorf("Expected an error but got none")ipn/ipnlocal/c2n_pprof.go1
20:4call-to-gc
ipn/ipnlocal/c2n_pprof.go:20:4
if gc, _ := strconv.Atoi(r.FormValue("gc")); gc > 0 { runtime.GC() }appc/appconnector_test.go1
31:6cognitive-complexity
appc/appconnector_test.go:31:6
func TestUpdateDomains(t *testing.T) { ctx := t.Context()cmd/pgproxy/pgproxy.go1
197:17confusing-naming
cmd/pgproxy/pgproxy.go:197:17
// enforcing strict TLS to the upstream.func (p *proxy) serve(sessionID int64, c net.Conn) error { defer c.Close()cmd/k8s-operator/dnsrecords.go1
441:131confusing-results
cmd/k8s-operator/dnsrecords.go:441:131
// getPodIPs returns Pod IPv4 and IPv6 addresses from EndpointSlices for non-ProxyGroup Services.func (dnsRR *dnsRecordsReconciler) getPodIPs(ctx context.Context, proxySvc *corev1.Service, logger *zap.SugaredLogger) ([]string, []string, error) { // Get the Pod IP addresses for the proxy from the EndpointSlices forkube/localclient/local-client.go1
35:6constructor-interface-return
kube/localclient/local-client.go:35:6
// New returns a LocalClient that wraps the provided local.Client.func New(lc *local.Client) LocalClient { return &localClient{lc: lc}feature/taildrop/localapi.go1
273:6context-as-argument
feature/taildrop/localapi.go:273:6
h *localapi.Handler, ctx context.Context, progressUpdates chan (ipn.OutgoingFile),net/dnsfallback/dnsfallback.go1
112:3context-cancel-in-loop
net/dnsfallback/dnsfallback.go:112:3
ctx, cancel := context.WithTimeout(ctx, 3*time.Second) defer cancel() dm, err := bootstrapDNSMap(ctx, cand.dnsName, cand.ip, host, logf, ht, netMon)control/controlclient/auto.go1
144:2context-stored-in-struct
control/controlclient/auto.go:144:2
authCtx context.Context // context used for auth requests mapCtx context.Context // context used for netmap and update requests authCancel func() // cancel authCtxclient/systray/systray.go1
203:19cyclomatic-complexity
client/systray/systray.go:203:19
// So for now we rebuild the whole thing, and can optimize this later if needed.func (menu *Menu) rebuild() { menu.mu.Lock()client/web/assets.go1
128:3deep-exit
client/web/assets.go:128:3
if err != nil { log.Fatalf("failed to find git top level (not in corp git?): %v", err) }client/tailscale/localclient_aliases.go1
64:9deprecated-api-usage
client/tailscale/localclient_aliases.go:64:9
func WhoIs(ctx context.Context, remoteAddr string) (*apitype.WhoIsResponse, error) { return local.WhoIs(ctx, remoteAddr)}appc/appconnector_test.go1
403:2discarded-error-result
appc/appconnector_test.go:403:2
b.EnableCompression() b.StartAnswers() switch addr.BitLen() {client/tailscale/acl.go1
121:1doc-comment-period
client/tailscale/acl.go:121:1
// https://tailscale.com/s/acl-format// https://github.com/tailscale/hujsonfunc (c *Client) ACLHuJSON(ctx context.Context) (acl *ACLHuJSON, err error) {ssh/tailssh/tailssh_integration_test.go1
35:2duplicated-imports
ssh/tailssh/tailssh_integration_test.go:35:2
"golang.org/x/crypto/ssh" gossh "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/agent"cmd/hello/hello.go1
183:3early-return
cmd/hello/hello.go:183:3
if err != nil { if devMode() { log.Printf("warning: using fake data in dev mode due to whois lookup error: %v", err)ipn/ipnlocal/expiry.go1
205:43empty-conditional-block
ipn/ipnlocal/expiry.go:205:43
// No expiry for self node } else if selfExpiry.Before(controlNow) { // Self node already expired; we don't want to return acmd/tailscale/cli/status.go1
261:2enforce-switch-style
cmd/tailscale/cli/status.go:261:2
switch st.BackendState { default: return fmt.Sprintf("unexpected state: %s", st.BackendState), falsetempfork/sshtest/ssh/server.go1
377:61error-last-result
tempfork/sshtest/ssh/server.go:377:61
func gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, token []byte, s *connection, sessionID []byte, userAuthReq userAuthRequestMsg) (authErr error, perms *Permissions, err error) { gssAPIServer := gssapiConfig.Servertstest/integration/integration.go1
162:2error-naming
tstest/integration/integration.go:162:2
buildOnce sync.Once buildErr error binariesCache *Binariesappc/appconnector_test.go1
251:13error-strings
appc/appconnector_test.go:251:13
if err := a.ObserveDNSResponse(dnsResponse("example.com.", "192.0.0.8")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }cmd/stunstamp/stunstamp.go1
836:6error-type-naming
cmd/stunstamp/stunstamp.go:836:6
type recoverableErr struct { errordrive/driveimpl/dirfs/dirfs_test.go1
226:2excessive-blank-identifiers
drive/driveimpl/dirfs/dirfs_test.go:226:2
func TestRemoveAll(t *testing.T) { fs, _, _, _ := createFileSystem(t)appc/appconnector.go1
267:24exported-declaration-comment
appc/appconnector.go:267:24
// given the new domains and routes.func (e *AppConnector) UpdateDomainsAndRoutes(domains []string, routes []netip.Prefix) { e.queue.Add(func() {client/systray/systray.go1
1:1file-length-limit
client/systray/systray.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/containerboot/forwarding.go1
69:39flag-parameter
cmd/containerboot/forwarding.go:69:39
func enableIPForwarding(v4Forwarding, v6Forwarding bool, root string) error { var paths []stringappc/observe_disabled.go1
1:1format
appc/observe_disabled.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt appc/observe_disabled.go`
appc/observe.go1
20:24function-length
appc/observe.go:20:24
// advised to advertise the discovered route.func (e *AppConnector) ObserveDNSResponse(res []byte) error { var p dnsmessage.Parsercmd/testwrapper/args.go1
51:6function-result-limit
cmd/testwrapper/args.go:51:6
// passed to go test and the arguments passed to the tests.func splitArgs(args []string) (pre, pkgs, post []string, _ error) { if len(args) == 0 {client/web/web.go1
492:3identical-switch-branches
client/web/web.go:492:3
return true default: // No additional auth on non-api (assets, index.html, etc).client/local/local.go1
1167:53import-shadowing
client/local/local.go:1167:53
// 2023-08-09: Valid feature values are "serve" and "funnel".func (lc *Client) QueryFeature(ctx context.Context, feature string) (*tailcfg.QueryFeatureResponse, error) { v := url.Values{"feature": {feature}}control/controlclient/map.go1
520:4inefficient-map-lookup
control/controlclient/map.go:520:4
mut.Online = ptr.To(online) ms.peers[nodeID] = mut.View() stats.changed++cmd/stunstamp/stunstamp.go1
710:10inefficient-sprintf
cmd/stunstamp/stunstamp.go:710:10
Name: "region_id", Value: fmt.Sprintf("%d", meta.regionID), })client/local/local.go1
447:4insecure-url-scheme
client/local/local.go:447:4
req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/debug-bus-events", nil) if err != nil {types/prefs/prefs_test.go1
547:18interface-method-limit
types/prefs/prefs_test.go:547:18
// access to the preference's value and state.type pref[T any] interface { prefView[T]kube/egressservices/egressservices.go1
84:7marshal-receiver
kube/egressservices/egressservices.go:84:7
func (p PortMaps) MarshalJSON() ([]byte, error) { l := make([]PortMap, 0, len(p))cmd/cloner/cloner.go1
138:7max-control-nesting
cmd/cloner/cloner.go:138:7
if codegen.ContainsPointers(ptr.Elem()) { if _, isIface := ptr.Elem().Underlying().(*types.Interface); isIface { it.Import("", "tailscale.com/types/ptr")prober/derp.go1
409:6max-parameters
prober/derp.go:409:6
func runDerpProbeQueuingDelayContinously(ctx context.Context, from, to *tailcfg.DERPNode, fromc, toc *derphttp.Client, packetsPerSecond int, packetTimeout time.Duration, packetsDropped *expvar.Float, qdh *histogram) error { // Make sure all goroutines have finished.client/tailscale/acl.go1
178:6max-public-structs
client/tailscale/acl.go:178:6
// ACLTestError is ErrResponse but with an extra field to account for ACLTestFailureSummary.type ACLTestError struct { ErrResponseclient/systray/systray.go1
54:3modifies-parameter
client/systray/systray.go:54:3
if client == nil { client = &local.Client{} }health/state.go1
73:2modifies-value-receiver
health/state.go:73:2
u.ETag = "" u.ETag = hex.EncodeToString(u.hash()) return uclient/local/local.go1
622:10nested-structs
client/local/local.go:622:10
} var res struct { Error stringclient/tailscale/acl.go1
495:3nil-error-return
client/tailscale/acl.go:495:3
if err != nil { return nil, err }cmd/k8s-operator/sts.go1
1219:3nil-value-with-nil-error
cmd/k8s-operator/sts.go:1219:3
if len(lst.Items) == 0 { return nil, nil }control/controlhttp/client.go1
150:3no-defer-in-loop
control/controlhttp/client.go:150:3
}) defer timer.Stop() }client/local/local.go1
467:6no-else-after-return
client/local/local.go:467:6
return } else if err != nil { yield(eventbus.DebugEvent{}, err)clientupdate/clientupdate.go1
256:6no-init
clientupdate/clientupdate.go:256:6
func init() { feature.HookCanAutoUpdate.Set(canAutoUpdate)client/local/local.go1
1121:3no-naked-return
client/local/local.go:1121:3
if err != nil { return }appc/appconnector.go1
87:2no-package-var
appc/appconnector.go:87:2
metricStoreRoutesRate []*clientmetric.Metric metricStoreRoutesN []*clientmetric.Metric)control/controlbase/noiseexplorer_test.go1
314:2overwritten-before-use
control/controlbase/noiseexplorer_test.go:314:2
func writeMessageA(hs *handshakestate, payload []byte) (*handshakestate, messagebuffer) { ne, ns, ciphertext := emptyKey, []byte{}, []byte{} hs.e = generateKeypair()atomicfile/atomicfile_notwindows.go1
6:9package-comments
atomicfile/atomicfile_notwindows.go:6:9
package atomicfilek8s-operator/conditions_test.go1
6:9package-directory-mismatch
k8s-operator/conditions_test.go:6:9
package kubeclient/web/web_test.go1
772:22range-value-address
client/web/web_test.go:772:22
if tt.controlURL != "" { testControlURL = &tt.controlURL } else {cmd/containerboot/settings.go1
390:7receiver-naming
cmd/containerboot/settings.go:390:7
func (cfg *settings) egressSvcsTerminateEPEnabled() bool { return cfg.LocalAddrPort != "" && cfg.EgressProxiesCfgPath != ""clientupdate/distsign/distsign.go1
158:2redefines-builtin-id
clientupdate/distsign/distsign.go:158:2
hash.Hash len int64}client/web/web_test.go1
261:36redundant-conversion
client/web/web_test.go:261:36
func TestGetTailscaleBrowserSession(t *testing.T) { userA := &tailcfg.UserProfile{ID: tailcfg.UserID(1)} userB := &tailcfg.UserProfile{ID: tailcfg.UserID(2)}ipn/localapi/localapi.go1
892:2redundant-final-return
ipn/localapi/localapi.go:892:2
w.WriteHeader(http.StatusNoContent) return}feature/featuretags/featuretags.go1
21:2single-case-switch
feature/featuretags/featuretags.go:21:2
func (ft FeatureTag) IsOmittable() bool { switch ft { case CLI:clientupdate/distsign/roots.go1
32:6slice-preallocation
clientupdate/distsign/roots.go:32:6
} var keys []ed25519.PublicKey for _, f := range files {client/local/local.go2
699:46standard-http-method-constant
client/local/local.go:699:46
func (lc *Client) GetWaitingFile(ctx context.Context, baseName string) (rc io.ReadCloser, size int64, err error) { req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/files/"+url.PathEscape(baseName), nil) if err != nil {1054:3task-comment
client/local/local.go:1054:3
if runtime.GOOS != "linux" { // TODO(bradfitz): flesh this out return "not running?"wgengine/magicsock/magicsock_test.go1
3138:8time-value-equality
wgengine/magicsock/magicsock_test.go:3138:8
newTime := conn.lastErrRebind.Load() if newTime == lastRebindTime { t.Errorf("expected a rebind to occur")chirp/chirp_test.go1
116:1top-level-declaration-order
chirp/chirp_test.go:116:1
type hangingListener struct { net.Listenercmd/containerboot/ingressservices_test.go1
173:15unchecked-type-assertion
cmd/containerboot/ingressservices_test.go:173:15
fake := nfr.(*linuxfw.FakeNetfilterRunner) gotServices := fake.GetServiceState()cmd/stunstamp/stunstamp.go1
866:2unclosed-http-response-body
cmd/stunstamp/stunstamp.go:866:2
req.Header.Set("X-Prometheus-Remote-Write-Version", "0.1.0") resp, err := r.c.Do(req) if err != nil {ipn/desktop/sessions_windows.go1
601:6unexported-naming
ipn/desktop/sessions_windows.go:601:6
type _CREATESTRUCT struct { CreateParams uintptrcontrol/controlbase/handshake.go1
369:81unexported-return
control/controlbase/handshake.go:369:81
// calculation.func (s *symmetricState) MixDH(priv key.MachinePrivate, pub key.MachinePublic) (*singleUseCHP, error) { s.checkFinished()cmd/tailscale/cli/dns-status.go1
116:3unnecessary-format
cmd/tailscale/cli/dns-status.go:116:3
} else { fmt.Printf("MagicDNS: disabled tailnet-wide.\n") }cmd/tailscale/cli/serve_legacy.go1
845:4unreachable-code
cmd/tailscale/cli/serve_legacy.go:845:4
log.Fatalf("lost connection to tailscaled: %v", err) e.lc.IncrementCounter(ctx, fmt.Sprintf("%s_enablement_lost_connection", feature), 1) return errcmd/tsidp/tsidp.go1
204:31unsafe-formatted-url-host-port
cmd/tsidp/tsidp.go:204:31
if *flagPort != 443 { srv.serverURL = fmt.Sprintf("https://%s:%d", strings.TrimSuffix(st.Self.DNSName, "."), *flagPort) } else {client/web/assets.go1
66:51unused-parameter
client/web/assets.go:66:51
func openPrecompressedFile(w http.ResponseWriter, r *http.Request, path string, fs fs.FS) (fs.File, error) { if f, err := fs.Open(path + ".gz"); err == nil {clientupdate/clientupdate.go1
553:7unused-receiver
clientupdate/clientupdate.go:553:7
func (up *Updater) updateArchLike() error { // Arch maintainer asked us not to implement "tailscale update" ortempfork/acme/http.go1
217:87use-any
tempfork/acme/http.go:217:87
// See jwsEncodeJSON for other details.func (c *Client) postNoRetry(ctx context.Context, key crypto.Signer, url string, body interface{}) (*http.Response, *http.Request, error) { kid := noKeyIDclient/local/local.go1
709:18use-errors-new
client/local/local.go:709:18
res.Body.Close() return nil, 0, fmt.Errorf("unexpected chunking") }cmd/tl-longchain/tl-longchain.go1
56:2use-fmt-print
cmd/tl-longchain/tl-longchain.go:56:2
} print("Self", *st.NodeKey, *st.NodeKeySignature) if len(st.VisiblePeers) > 0 {cmd/sniproxy/sniproxy.go1
208:2use-slices-sort
cmd/sniproxy/sniproxy.go:208:2
} sort.SliceStable(routes, func(i, j int) bool { return routes[i].Addr().Less(routes[j].Addr()) // determinism r uscmd/containerboot/egressservices_test.go1
25:17var-naming
cmd/containerboot/egressservices_test.go:25:17
tailnetIPv4, tailnetIPv6 := netip.MustParseAddr("100.99.99.99"), netip.MustParseAddr("fd7a:115c:a1e0::701:b62a") tailnetIPv4_1, tailnetIPv6_1 := netip.MustParseAddr("100.88.88.88"), netip.MustParseAddr("fd7a:115c:a1e0::4101:512f") ports := map[egressservices.PortMap]struct{}{{Protocol: "tcp", MatchPort: 4003, TargetPort: 80}: {}}tempfork/sshtest/ssh/session_test.go1
678:3waitgroup-add-inside-goroutine
tempfork/sshtest/ssh/session_test.go:678:3
serverID <- conn.SessionID() wg.Add(1) go func() {tempfork/sshtest/ssh/cipher.go1
461:12weak-cryptography
tempfork/sshtest/ssh/cipher.go:461:12
func newTripleDESCBCCipher(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) { c, err := des.NewTripleDESCipher(key) if err != nil {appc/appconnector_test.go1
168:50add-constant
appc/appconnector_test.go:168:50
rc.SetRoutes([]netip.Prefix{netip.MustParsePrefix("192.0.2.1/32")}) routes := []netip.Prefix{netip.MustParsePrefix("192.0.2.0/24")} a.updateRoutes(routes)net/udprelay/server.go1
157:17append-to-sized-slice
net/udprelay/server.go:157:17
} reply = append(reply, disco.Magic...) reply = serverDisco.AppendTo(reply)cmd/tailscale/cli/web.go1
12:2blank-imports
cmd/tailscale/cli/web.go:12:2
"crypto/tls" _ "embed" "flag"cmd/tailscale/cli/serve_v2_test.go1
1155:7boolean-literal-comparison
cmd/tailscale/cli/serve_v2_test.go:1155:7
if tt.wantErr == false && err != nil { t.Errorf("Got an error, but didn't expect one: %v", err)ipn/ipnlocal/c2n_pprof.go1
34:4call-to-gc
ipn/ipnlocal/c2n_pprof.go:34:4
if profile == "heap" && gc > 0 { runtime.GC() }appc/appconnector_test.go1
73:6cognitive-complexity
appc/appconnector_test.go:73:6
func TestUpdateRoutes(t *testing.T) { ctx := t.Context()control/controlhttp/client.go1
98:18confusing-naming
control/controlhttp/client.go:98:18
func (a *Dialer) dial(ctx context.Context) (*ClientConn, error) {cmd/k8s-operator/proxygroup_test.go1
1657:57confusing-results
cmd/k8s-operator/proxygroup_test.go:1657:57
func proxyClassesForLEStagingTest() (*tsapi.ProxyClass, *tsapi.ProxyClass, *tsapi.ProxyClass) { pcLEStaging := &tsapi.ProxyClass{logtail/buffer.go1
29:6constructor-interface-return
logtail/buffer.go:29:6
func NewMemoryBuffer(numEntries int) Buffer { return &memBuffer{ipn/ipnlocal/captiveportal.go1
81:50context-as-argument
ipn/ipnlocal/captiveportal.go:81:50
func checkCaptivePortalLoop(b *LocalBackend, ctx context.Context) { var tmr *time.Timernet/netcheck/netcheck.go1
924:24context-cancel-in-loop
net/netcheck/netcheck.go:924:24
for _, probeSet := range plan { setCtx, cancelSet := context.WithCancel(ctx) go func(probeSet []probe) {control/controlclient/direct.go1
88:2context-stored-in-struct
control/controlclient/direct.go:88:2
panicOnUse bool // if true, panic if client is used (for testing) closedCtx context.Context // alive until Direct.Close is called closeCtx context.CancelFunc // cancels closedCtxclient/systray/systray.go1
406:19cyclomatic-complexity
client/systray/systray.go:406:19
// This method does not return until ctx.Done is closed.func (menu *Menu) eventLoop(ctx context.Context) { for {client/web/web.go1
308:3deep-exit
client/web/web.go:308:3
default: // invalid mode log.Fatalf("invalid mode: %v", mode) }cmd/gitops-pusher/gitops-pusher.go1
27:2deprecated-api-usage
cmd/gitops-pusher/gitops-pusher.go:27:2
"golang.org/x/oauth2/clientcredentials" "tailscale.com/client/tailscale" "tailscale.com/util/httpm"appc/appconnector_test.go1
406:3discarded-error-result
appc/appconnector_test.go:406:3
case 32: b.AResource( dnsmessage.ResourceHeader{client/tailscale/acl.go1
305:1doc-comment-period
client/tailscale/acl.go:305:1
// ACLPreviewResponse is the response type of previewACLPostRequesttype ACLPreviewResponse struct {cmd/k8s-operator/dnsrecords.go1
107:3early-return
cmd/k8s-operator/dnsrecords.go:107:3
if err := dnsRR.maybeProvision(ctx, proxySvc, logger); err != nil { if strings.Contains(err.Error(), optimisticLockErrorMsg) { logger.Infof("optimistic lock error, retrying: %s", err)ipn/ipnlocal/profiles.go1
923:84empty-conditional-block
ipn/ipnlocal/profiles.go:923:84
pm.dlogf("no known profiles; trying to migrate from legacy prefs") if initialProfile, err = pm.migrateFromLegacyPrefs(pm.currentUserID); err != nil {cmd/tailscale/cli/up.go1
1045:3enforce-switch-style
cmd/tailscale/cli/up.go:1045:3
switch f.Name { default: panic(fmt.Sprintf("unhandled flag %q", f.Name))types/lazy/lazy.go1
118:44error-last-result
types/lazy/lazy.go:118:44
// and returns both the T and err returned by GetErr's fill function.func (z *SyncValue[T]) PeekErr() (v T, err error, ok bool) { if e := z.err.Load(); e != nil {util/multierr/multierr_test.go1
110:5error-naming
util/multierr/multierr_test.go:110:5
var sink errorappc/appconnector_test.go1
261:13error-strings
appc/appconnector_test.go:261:13
if err := a.ObserveDNSResponse(dnsResponse("example.com.", "192.0.0.8")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }control/controlbase/conn.go1
347:6error-type-naming
control/controlbase/conn.go:347:6
// on a cipher.type errCipherExhausted struct{}drive/driveimpl/dirfs/dirfs_test.go1
252:2excessive-blank-identifiers
drive/driveimpl/dirfs/dirfs_test.go:252:2
func TestRename(t *testing.T) { fs, _, _, _ := createFileSystem(t)appc/appconnector.go1
279:24exported-declaration-comment
appc/appconnector.go:279:24
// matches all subdomains of a domain.func (e *AppConnector) UpdateDomains(domains []string) { e.queue.Add(func() {client/tailscale/acl.go1
1:1file-length-limit
client/tailscale/acl.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/containerboot/settings.go1
173:39flag-parameter
cmd/containerboot/settings.go:173:39
// be omitted (default to true).func parseAcceptDNS(extraArgs string, acceptDNS bool) (string, bool) { if !strings.Contains(extraArgs, "--accept-dns") {assert_ts_toolchain_match.go1
1:1format
assert_ts_toolchain_match.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt assert_ts_toolchain_match.go`
client/systray/systray.go1
203:19function-length
client/systray/systray.go:203:19
// So for now we rebuild the whole thing, and can optimize this later if needed.func (menu *Menu) rebuild() { menu.mu.Lock()control/controlbase/noiseexplorer_test.go1
329:6function-result-limit
control/controlbase/noiseexplorer_test.go:329:6
func writeMessageB(hs *handshakestate, payload []byte) ([32]byte, messagebuffer, cipherstate, cipherstate) { ne, ns, ciphertext := emptyKey, []byte{}, []byte{}client/web/web.go1
687:2identical-switch-branches
client/web/web.go:687:2
return case path == "/local/v0/update/check" && r.Method == httpm.POST: peerAllowed := func(_ noBodyData, peer peerCapabilities) bool {client/local/tailnetlock.go1
149:73import-shadowing
client/local/tailnetlock.go:149:73
// in url and returns information extracted from it.func (lc *Client) NetworkLockVerifySigningDeeplink(ctx context.Context, url string) (*tka.DeeplinkValidationResult, error) { vr := struct {derp/derpserver/derpserver.go1
708:3inefficient-map-lookup
derp/derpserver/derpserver.go:708:3
if _, ok := s.clientsMesh[c.key]; !ok { s.clientsMesh[c.key] = nil // just for varz of total users in cluster }cmd/tailscale/cli/dns-query.go1
181:9inefficient-sprintf
cmd/tailscale/cli/dns-query.go:181:9
} return fmt.Sprintf("%s", r.Addr)}client/local/local.go1
699:53insecure-url-scheme
client/local/local.go:699:53
func (lc *Client) GetWaitingFile(ctx context.Context, baseName string) (rc io.ReadCloser, size int64, err error) { req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/files/"+url.PathEscape(baseName), nil) if err != nil {util/testenv/testenv.go1
25:9interface-method-limit
util/testenv/testenv.go:25:9
// TB is testing.TB, to avoid importing "testing" in non-test code.type TB interface { Cleanup(func())net/flowtrack/flowtrack.go1
72:7marshal-receiver
net/flowtrack/flowtrack.go:72:7
func (t *Tuple) UnmarshalJSON(b []byte) error { var ot tupleOldcmd/cloner/cloner.go1
151:12max-control-nesting
cmd/cloner/cloner.go:151:12
writef("\tdst.%s[i] = append(src.%s[i][:0:0], src.%s[i]...)", fname, fname, fname) } else if _, isIface := ft.Elem().Underlying().(*types.Interface); isIface { writef("\tdst.%s[i] = src.%s[i].Clone()", fname, fname)prober/derp.go1
705:6max-parameters
prober/derp.go:705:6
// to exercise TCP-in-TCP in similar fashion to TCP over Tailscale via DERP.func derpProbeBandwidth(ctx context.Context, dm *tailcfg.DERPMap, from, to *tailcfg.DERPNode, size int64, transferTimeSeconds, totalBytesTransferred *expvar.Float, tunIPv4Prefix *netip.Prefix, meshKey key.DERPMesh) (err error) { // This probe uses clients with isProber=false to avoid spamming the derper logs with every packetclient/tailscale/acl.go1
288:6max-public-structs
client/tailscale/acl.go:288:6
// While JSON requests will have LineNumber, the value is not useful.type UserRuleMatch struct { Users []string `json:"users"`client/web/auth.go1
218:3modifies-parameter
client/web/auth.go:218:3
if a.Complete { session.Authenticated = a.Complete s.browserSessions.Store(session.ID, session)logpolicy/logpolicy.go1
551:3modifies-value-receiver
logpolicy/logpolicy.go:551:3
if opts.Dir == "" { opts.Dir = LogsDir(earlyLogf) }client/local/local.go1
762:11nested-structs
client/local/local.go:762:11
} var jres struct { Warning stringclient/tailscale/acl.go1
503:3nil-error-return
client/tailscale/acl.go:503:3
if err != nil { return nil, err }cmd/k8s-operator/tsrecorder.go1
406:4nil-value-with-nil-error
cmd/k8s-operator/tsrecorder.go:406:4
if apierrors.IsNotFound(err) { return nil, nil }derp/derp_test.go1
115:3no-defer-in-loop
derp/derp_test.go:115:3
} defer cout.Close() connsOut = append(connsOut, cout)client/web/auth.go1
131:4no-else-after-return
client/web/auth.go:131:4
return nil, whoIs, status, errNoSession } else if err != nil { return nil, whoIs, status, errcmd/derper/bootstrap_dns.go1
49:6no-init
cmd/derper/bootstrap_dns.go:49:6
func init() { expvar.Publish("counter_bootstrap_dns_queried_domains", expvar.Func(func() any {client/local/local.go1
1125:3no-naked-return
client/local/local.go:1125:3
if err != nil { return }atomicfile/atomicfile_windows_test.go1
14:5no-package-var
atomicfile/atomicfile_windows_test.go:14:5
var _SECURITY_RESOURCE_MANAGER_AUTHORITY = windows.SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 9}}control/controlbase/noiseexplorer_test.go1
314:2overwritten-before-use
control/controlbase/noiseexplorer_test.go:314:2
func writeMessageA(hs *handshakestate, payload []byte) (*handshakestate, messagebuffer) { ne, ns, ciphertext := emptyKey, []byte{}, []byte{} hs.e = generateKeypair()atomicfile/atomicfile_windows.go1
4:9package-comments
atomicfile/atomicfile_windows.go:4:9
package atomicfilek8s-operator/utils.go1
7:9package-directory-mismatch
k8s-operator/utils.go:7:9
// Package kube contains types and utilities for the Tailscale Kubernetes Operator.package kubeclient/web/web_test.go1
779:16range-value-address
client/web/web_test.go:779:16
r.RemoteAddr = remoteIP r.AddCookie(&http.Cookie{Name: sessionCookieName, Value: tt.cookie}) w := httptest.NewRecorder()cmd/k8s-operator/ingress-for-pg.go1
761:7receiver-naming
cmd/k8s-operator/ingress-for-pg.go:761:7
func (a *HAIngressReconciler) maybeUpdateAdvertiseServicesConfig(ctx context.Context, pgName string, serviceName tailcfg.ServiceName, mode serviceAdvertisementMode, logger *zap.SugaredLogger) (err error) { // Get all config Secrets for this ProxyGroup.clientupdate/distsign/distsign.go1
225:8redefines-builtin-id
clientupdate/distsign/distsign.go:225:8
dstPathUnverified := dstPath + ".unverified" hash, len, err := c.download(ctx, srcURL, dstPathUnverified, downloadSizeLimit) if err != nil {client/web/web_test.go1
262:36redundant-conversion
client/web/web_test.go:262:36
userA := &tailcfg.UserProfile{ID: tailcfg.UserID(1)} userB := &tailcfg.UserProfile{ID: tailcfg.UserID(2)}ipn/store/mem/store_mem.go1
66:2redundant-final-return
ipn/store/mem/store_mem.go:66:2
} return}feature/tap/tap_linux.go1
145:3single-case-switch
feature/tap/tap_linux.go:145:3
} switch arpPacket.Op() { case header.ARPRequest:cmd/k8s-nameserver/main.go1
273:7slice-preallocation
cmd/k8s-nameserver/main.go:273:7
} var validIPs []net.IP for _, ipS := range ips {client/local/local.go1
732:46standard-http-method-constant
client/local/local.go:732:46
func (lc *Client) PushFile(ctx context.Context, target tailcfg.StableNodeID, size int64, name string, r io.Reader) error { req, err := http.NewRequestWithContext(ctx, "PUT", "http://"+apitype.LocalAPIHost+"/localapi/v0/file-put/"+string(target)+"/"+url.PathEscape(name), r) if err != nil {client/local/tailnetlock.go1
32:1task-comment
client/local/tailnetlock.go:32:1
//// TODO(tom): Plumb through disablement secrets.func (lc *Client) NetworkLockInit(ctx context.Context, keys []tka.Key, disablementValues [][]byte, supportDisablement []byte) (*ipnstate.NetworkLockStatus, error) {client/local/local.go1
179:1top-level-declaration-order
client/local/local.go:179:1
type errorJSON struct { Error stringcmd/containerboot/main_test.go1
1421:32unchecked-type-assertion
cmd/containerboot/main_test.go:1421:32
k.srv = httptest.NewTLSServer(k) k.Host = k.srv.Listener.Addr().(*net.TCPAddr).IP.String() k.Port = strconv.Itoa(k.srv.Listener.Addr().(*net.TCPAddr).Port)control/ts2021/client_test.go1
270:2unclosed-http-response-body
control/ts2021/client_test.go:270:2
// Verify we can do HTTP/2 against that conn. res, err := nc.Do(req) if err != nil {ipn/desktop/sessions_windows.go1
616:6unexported-naming
ipn/desktop/sessions_windows.go:616:6
type _POINT struct { X, Y int32control/controlbase/noiseexplorer_test.go1
391:75unexported-return
control/controlbase/noiseexplorer_test.go:391:75
func InitSession(initiator bool, prologue []byte, s keypair, rs [32]byte) noisesession { var session noisesessioncmd/tailscale/cli/network-lock.go1
382:4unnecessary-format
cmd/tailscale/cli/network-lock.go:382:4
if isatty.IsTerminal(os.Stdout.Fd()) { fmt.Printf(`WarningRemoval of a signing key(s) without resigning nodes (--re-sign=false)cmd/tailscaled/debug.go1
240:3unreachable-code
cmd/tailscaled/debug.go:240:3
log.Fatalf("unknown region %q", derpRegion) panic("unreachable") }ipn/serve.go1
667:22unsafe-formatted-url-host-port
ipn/serve.go:667:22
if port, err := strconv.ParseUint(target, 10, 16); err == nil { return fmt.Sprintf("%s://%s:%d", defaultScheme, host, port), nil }client/web/web_test.go1
1477:40unused-parameter
client/web/web_test.go:1477:40
func mockNewAuthURL(_ context.Context, src tailcfg.NodeID) (*tailcfg.WebClientAuthResponse, error) { // Create new dummy auth URL.clientupdate/clientupdate.go1
561:7unused-receiver
clientupdate/clientupdate.go:561:7
func (up *Updater) updateNixos() error { // NixOS package updates are managed on a system level and not individually.tempfork/acme/jws.go1
62:29use-any
tempfork/acme/jws.go:62:29
// See https://tools.ietf.org/html/rfc7515#section-7.func jwsEncodeJSON(claimset interface{}, key crypto.Signer, kid KeyID, nonce, url string) ([]byte, error) { if key == nil {client/local/local.go1
980:15use-errors-new
client/local/local.go:980:15
res.Body.Close() return nil, fmt.Errorf("httptrace didn't provide a connection") }cmd/tl-longchain/tl-longchain.go1
60:4use-fmt-print
cmd/tl-longchain/tl-longchain.go:60:4
for _, peer := range st.VisiblePeers { print(peerInfo(peer), peer.NodeKey, peer.NodeKeySignature) }cmd/tailscale/cli/netcheck.go1
192:3use-slices-sort
cmd/tailscale/cli/netcheck.go:192:3
} sort.Slice(rids, func(i, j int) bool { l1, ok1 := report.RegionLatency[rids[i]]cmd/natc/natc_test.go1
93:53var-naming
cmd/natc/natc_test.go:93:53
func (r *resolver) LookupNetIP(ctx context.Context, _net, host string) ([]netip.Addr, error) { if addrs, ok := r.resolves[host]; ok {tempfork/sshtest/ssh/session_test.go1
698:3waitgroup-add-inside-goroutine
tempfork/sshtest/ssh/session_test.go:698:3
clientID <- conn.SessionID() wg.Add(1) go func() {tempfork/sshtest/ssh/keys.go1
1609:12weak-cryptography
tempfork/sshtest/ssh/keys.go:1609:12
func FingerprintLegacyMD5(pubKey PublicKey) string { md5sum := md5.Sum(pubKey.Marshal()) hexarray := make([]string, len(md5sum))appc/appconnector_test.go1
208:13add-constant
appc/appconnector_test.go:208:13
if err := a.ObserveDNSResponse(dnsResponse("example.com.", "192.0.0.8")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }net/udprelay/server_test.go1
71:14append-to-sized-slice
net/udprelay/server_test.go:71:14
} pkt = append(pkt, b...) c.write(t, pkt)feature/capture/dissector/dissector.go1
8:2blank-imports
feature/capture/dissector/dissector.go:8:2
import ( _ "embed")cmd/tailscale/cli/up.go1
933:37boolean-literal-comparison
cmd/tailscale/cli/up.go:933:37
} if flagName == "accept-routes" && valNew == false && env.goos == "linux" && env.distro == distro.Synology { // Issue 3176. Old prefs had 'RouteAll: true' on disk, so ignore that.tsweb/debug.go1
177:2call-to-gc
tsweb/debug.go:177:2
} runtime.GC() w.Write([]byte("Done.\n"))appc/appconnector_test.go1
188:6cognitive-complexity
appc/appconnector_test.go:188:6
func TestDomainRoutes(t *testing.T) { bus := eventbustest.NewBus(t)control/controlhttp/controlhttpserver/controlhttpserver.go1
41:6confusing-naming
control/controlhttp/controlhttpserver/controlhttpserver.go:41:6
func acceptHTTP(ctx context.Context, w http.ResponseWriter, r *http.Request, private key.MachinePrivate, earlyWrite func(protocolVersion int, w io.Writer) error) (_ *controlbase.Conn, retErr error) { next := strings.ToLower(r.Header.Get("Upgrade"))cmd/k8s-operator/proxygroup_test.go1
1657:76confusing-results
cmd/k8s-operator/proxygroup_test.go:1657:76
func proxyClassesForLEStagingTest() (*tsapi.ProxyClass, *tsapi.ProxyClass, *tsapi.ProxyClass) { pcLEStaging := &tsapi.ProxyClass{net/dns/manager_darwin.go1
23:6constructor-interface-return
net/dns/manager_darwin.go:23:6
// The health tracker and the knobs may be nil and are ignored on this platform.func NewOSConfigurator(logf logger.Logf, _ *health.Tracker, _ policyclient.Client, _ *controlknobs.Knobs, ifName string) (OSConfigurator, error) { return &darwinConfigurator{logf: logf, ifName: ifName}, nilipn/ipnserver/server.go1
78:45context-as-argument
ipn/ipnserver/server.go:78:45
// ready is closed when the waiter is ready (or ctx is done).func (s *waiterSet) add(mu *sync.Mutex, ctx context.Context) (ready <-chan struct{}, cleanup func()) { ctx, cancel := context.WithCancel(ctx)ssh/tailssh/tailssh.go1
382:4context-cancel-in-loop
ssh/tailssh/tailssh.go:382:4
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute) defer cancel()control/controlclient/map.go1
66:2context-stored-in-struct
control/controlclient/map.go:66:2
// sessionAliveCtxClose. sessionAliveCtx context.Context sessionAliveCtxClose context.CancelFunc // closes sessionAliveCtxclient/systray/systray.go1
564:19cyclomatic-complexity
client/systray/systray.go:564:19
func (menu *Menu) rebuildExitNodeMenu(ctx context.Context) { if menu.status == nil {clientupdate/clientupdate_windows.go1
165:2deep-exit
clientupdate/clientupdate_windows.go:165:2
// to be replaced. os.Exit(0) panic("unreachable")cmd/gitops-pusher/gitops-pusher_test.go1
11:2deprecated-api-usage
cmd/gitops-pusher/gitops-pusher_test.go:11:2
"tailscale.com/client/tailscale")appc/appconnector_test.go1
418:3discarded-error-result
appc/appconnector_test.go:418:3
case 128: b.AAAAResource( dnsmessage.ResourceHeader{client/tailscale/acl.go1
318:1doc-comment-period
client/tailscale/acl.go:318:1
// ACLPreview is the response type of PreviewACLForUser, PreviewACLForIPPort, PreviewACLHuJSONForUser, and PreviewACLHuJSONForIPPorttype ACLPreview struct {cmd/k8s-operator/egress-services.go1
162:3early-return
cmd/k8s-operator/egress-services.go:162:3
if err := esr.maybeProvision(ctx, svc, l); err != nil { if strings.Contains(err.Error(), optimisticLockErrorMsg) { l.Infof("optimistic lock error, retrying: %s", err)net/dns/manager.go1
368:60empty-conditional-block
net/dns/manager.go:368:60
baseCfg = &cfg } else if isApple && err == ErrGetBaseConfigNotSupported { // This is currently (2022-10-13) expected on certain iOS and macOScontrol/controlclient/map.go1
657:3enforce-switch-style
control/controlclient/map.go:657:3
switch field { default: // The whole point of using reflect in this function is to panicutil/singleflight/singleflight.go1
101:65error-last-result
util/singleflight/singleflight.go:101:65
// The return value shared indicates whether v was given to multiple callers.func (g *Group[K, V]) Do(key K, fn func() (V, error)) (v V, err error, shared bool) { g.mu.Lock()util/syspolicy/syspolicy_test.go1
23:5error-naming
util/syspolicy/syspolicy_test.go:23:5
var someOtherError = errors.New("error other than not found")appc/appconnector_test.go1
272:13error-strings
appc/appconnector_test.go:272:13
if err := a.ObserveDNSResponse(dnsCNAMEResponse("192.0.0.9", "www.example.com.", "chain.example.com.", "example.com.")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }control/controlbase/conn.go1
357:6error-type-naming
control/controlbase/conn.go:357:6
// become unusable due to a past partial write.type errPartialWrite struct { err errornet/dnscache/dnscache.go1
272:6excessive-blank-identifiers
net/dnscache/dnscache.go:272:6
if r.UseLastGood { if _, _, _, ok := r.lookupIPCacheExpired(host); ok { // If we have some previous good value for this host,appc/appconnector.go1
287:24exported-declaration-comment
appc/appconnector.go:287:24
// complete.func (e *AppConnector) Wait(ctx context.Context) { e.queue.Wait(ctx)client/web/web.go1
1:1file-length-limit
client/web/web.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/k8s-operator/egress-services.go1
739:47flag-parameter
cmd/k8s-operator/egress-services.go:739:47
func svcConfiguredReason(svc *corev1.Service, configured bool, l *zap.SugaredLogger) string { var r stringatomicfile/atomicfile.go1
1:1format
atomicfile/atomicfile.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt atomicfile/atomicfile.go`
client/systray/systray.go1
564:19function-length
client/systray/systray.go:564:19
func (menu *Menu) rebuildExitNodeMenu(ctx context.Context) { if menu.status == nil {control/controlbase/noiseexplorer_test.go1
367:6function-result-limit
control/controlbase/noiseexplorer_test.go:367:6
func readMessageB(hs *handshakestate, message *messagebuffer) ([32]byte, []byte, bool, cipherstate, cipherstate) { valid1 := trueclient/web/web.go1
694:2identical-switch-branches
client/web/web.go:694:2
return case path == "/local/v0/update/progress" && r.Method == httpm.POST: newHandler[noBodyData](s, w, r, alwaysAllowed).client/tailscale/tailscale.go1
86:2import-shadowing
client/tailscale/tailscale.go:86:2
} url := c.baseURL() + path.Join(elem...) if query != "" {ipn/ipnlocal/state_test.go1
1609:4inefficient-map-lookup
ipn/ipnlocal/state_test.go:1609:4
}) derpmap.Regions[n.HomeDERP] = r }ipn/ipnlocal/serve.go1
1076:46inefficient-sprintf
ipn/ipnlocal/serve.go:1076:46
fqdn := strings.Join([]string{forVIPService.WithoutPrefix(), magicDNSSuffix}, ".") key := ipn.HostPort(net.JoinHostPort(fqdn, fmt.Sprintf("%d", port))) return b.serveConfig.FindServiceWeb(forVIPService, key)client/local/local.go1
732:53insecure-url-scheme
client/local/local.go:732:53
func (lc *Client) PushFile(ctx context.Context, target tailcfg.StableNodeID, size int64, name string, r io.Reader) error { req, err := http.NewRequestWithContext(ctx, "PUT", "http://"+apitype.LocalAPIHost+"/localapi/v0/file-put/"+string(target)+"/"+url.PathEscape(name), r) if err != nil {wgengine/wgengine.go1
62:13interface-method-limit
wgengine/wgengine.go:62:13
// Engine is the Tailscale WireGuard engine interface.type Engine interface { // Reconfig reconfigures WireGuard and makes sure it's running.tailcfg/tailcfg.go1
312:7marshal-receiver
tailcfg/tailcfg.go:312:7
// UnmarshalJSON sets *m to a copy of data.func (m *RawMessage) UnmarshalJSON(data []byte) error { if m == nil {cmd/cloner/cloner.go1
198:6max-control-nesting
cmd/cloner/cloner.go:198:6
writef("\t\tif v == nil { dst.%s[k] = nil } else {", fname) if base := elem.Elem().Underlying(); codegen.ContainsPointers(base) { if _, isIface := base.(*types.Interface); isIface {prober/derp.go1
900:6max-parameters
prober/derp.go:900:6
// is recorded in `transferTimeSeconds`.func derpProbeBandwidthTUN(ctx context.Context, transferTimeSeconds, totalBytesTransferred *expvar.Float, from, to *tailcfg.DERPNode, fromc, toc *derphttp.Client, size int64, prefix *netip.Prefix) error { // Make sure all goroutines have finished.client/tailscale/acl.go1
306:6max-public-structs
client/tailscale/acl.go:306:6
// ACLPreviewResponse is the response type of previewACLPostRequesttype ACLPreviewResponse struct { Matches []UserRuleMatch `json:"matches"` // ACL rules that match the specified user or ipport.client/web/web.go1
185:3modifies-parameter
client/web/web.go:185:3
if opts.LocalClient == nil { opts.LocalClient = &local.Client{} }logpolicy/logpolicy.go1
554:3modifies-value-receiver
logpolicy/logpolicy.go:554:3
if opts.CmdName == "" { opts.CmdName = version.CmdName() }client/local/local.go1
782:11nested-structs
client/local/local.go:782:11
} var jres struct { Warning stringclient/tailscale/acl.go1
519:3nil-error-return
client/tailscale/acl.go:519:3
// failed to unmarshal return nil, err }cmd/ssh-auth-none-demo/ssh-auth-none-demo.go1
97:6nil-value-with-nil-error
cmd/ssh-auth-none-demo/ssh-auth-none-demo.go:97:6
} return nil, nil },derp/derp_test.go1
122:3no-defer-in-loop
derp/derp_test.go:122:3
} defer cin.Close()client/web/auth.go1
144:4no-else-after-return
client/web/auth.go:144:4
return nil, whoIs, status, errNoSession } else if session.isExpired(s.timeNow()) { // Session expired, remove from session map and return errNoSession.cmd/derper/derper.go1
106:6no-init
cmd/derper/derper.go:106:6
func init() { expvar.Publish("derper_tls_request_version", tlsRequestVersion)client/tailscale/dns.go1
196:3no-naked-return
client/tailscale/dns.go:196:3
if err != nil { return }client/local/local.go1
50:5no-package-var
client/local/local.go:50:5
// package-level functions.var defaultClient Clientcontrol/controlbase/noiseexplorer_test.go1
330:2overwritten-before-use
control/controlbase/noiseexplorer_test.go:330:2
func writeMessageB(hs *handshakestate, payload []byte) ([32]byte, messagebuffer, cipherstate, cipherstate) { ne, ns, ciphertext := emptyKey, []byte{}, []byte{} hs.e = generateKeypair()atomicfile/mksyscall.go1
4:9package-comments
atomicfile/mksyscall.go:4:9
package atomicfilelicense_test.go1
4:9package-directory-mismatch
license_test.go:4:9
package tailscalerootclient/web/web_test.go1
1028:16range-value-address
client/web/web_test.go:1028:16
r.RemoteAddr = tt.remoteAddr r.AddCookie(&http.Cookie{Name: sessionCookieName, Value: tt.cookie}) w := httptest.NewRecorder()cmd/k8s-operator/sts.go1
195:7receiver-naming
cmd/k8s-operator/sts.go:195:7
// up to date.func (a *tailscaleSTSReconciler) Provision(ctx context.Context, logger *zap.SugaredLogger, sts *tailscaleSTSConfig) (*corev1.Service, error) { // Do full reconcile.cmd/containerboot/main.go1
245:3redefines-builtin-id
cmd/containerboot/main.go:245:3
close := runHTTPServer(mux, cfg.HealthCheckAddrPort) defer close()client/web/web_test.go1
443:35redundant-conversion
client/web/web_test.go:443:35
// browser sessions w/ different users. user := &tailcfg.UserProfile{ID: tailcfg.UserID(1)} self := &ipnstate.PeerStatus{ID: "self", UserID: user.ID}kube/kubeclient/client.go1
453:2redundant-final-return
kube/kubeclient/client.go:453:2
hasPerms = true return}feature/wakeonlan/wakeonlan.go1
227:2single-case-switch
feature/wakeonlan/wakeonlan.go:227:2
base := strings.TrimRightFunc(ifName, unicode.IsNumber) switch runtime.GOOS { case "darwin":cmd/k8s-nameserver/main.go1
294:7slice-preallocation
cmd/k8s-nameserver/main.go:294:7
} var validIPs []net.IP for _, ipS := range ips {client/local/local.go1
949:46standard-http-method-constant
client/local/local.go:949:46
ctx = httptrace.WithClientTrace(ctx, &trace) req, err := http.NewRequestWithContext(ctx, "POST", "http://"+apitype.LocalAPIHost+"/localapi/v0/dial", nil) if err != nil {client/systray/systray.go1
319:2task-comment
client/systray/systray.go:319:2
// TODO(#15528): this menu item shouldn't be necessary at all, // but is at least more discoverable than having users switch profiles or exit nodes.client/systray/logo.go1
36:1top-level-declaration-order
client/systray/logo.go:36:1
var ( // disconnected is all gray dotscmd/containerboot/main_test.go1
1422:45unchecked-type-assertion
cmd/containerboot/main_test.go:1422:45
k.Host = k.srv.Listener.Addr().(*net.TCPAddr).IP.String() k.Port = strconv.Itoa(k.srv.Listener.Addr().(*net.TCPAddr).Port)drive/driveimpl/drive_test.go1
221:2unclosed-http-response-body
drive/driveimpl/drive_test.go:221:2
u := fmt.Sprintf("http://%s/%s/%s", addr, wrongSecret, url.PathEscape(file111)) resp, err := client.Get(u) if err != nil {ipn/desktop/sessions_windows.go1
620:6unexported-naming
ipn/desktop/sessions_windows.go:620:6
type _MSG struct { HWnd windows.HWNDcontrol/controlbase/noiseexplorer_test.go1
404:58unexported-return
control/controlbase/noiseexplorer_test.go:404:58
func SendMessage(session *noisesession, message []byte) (*noisesession, messagebuffer) { var messageBuffer messagebuffercmd/tailscale/cli/network-lock.go1
388:5unnecessary-format
cmd/tailscale/cli/network-lock.go:388:5
if !prompt.YesNo("Are you sure you want to remove the signing key(s)?", true) { fmt.Printf("aborting removal of signing key(s)\n") os.Exit(0)cmd/testwrapper/testwrapper.go1
209:3unreachable-code
cmd/testwrapper/testwrapper.go:209:3
log.Fatal(err) return }ipn/store/kubestore/store_kube.go1
84:24unsafe-formatted-url-host-port
ipn/store/kubestore/store_kube.go:84:24
// Derive the API server address from the environment variables c.SetURL(fmt.Sprintf("https://%s:%s", os.Getenv("KUBERNETES_SERVICE_HOST"), os.Getenv("KUBERNETES_SERVICE_PORT_HTTPS"))) }client/web/web_test.go1
1482:52unused-parameter
client/web/web_test.go:1482:52
func mockWaitAuthURL(_ context.Context, id string, src tailcfg.NodeID) (*tailcfg.WebClientAuthResponse, error) { switch id {clientupdate/clientupdate.go1
757:7unused-receiver
clientupdate/clientupdate.go:757:7
func (up *Updater) updateMacSys() error { return errors.New("NOTREACHED: On MacSys builds, `tailscale update` is handled in Swift to launch the GUI updater")tempfork/gliderlabs/ssh/context.go1
91:22use-any
tempfork/gliderlabs/ssh/context.go:91:22
// SetValue allows you to easily write new values into the underlying context. SetValue(key, value interface{})}client/tailscale/keys.go1
87:19use-errors-new
client/tailscale/keys.go:87:19
if expirySeconds < 0 { return "", nil, fmt.Errorf("expiry must be positive") }cmd/tl-longchain/tl-longchain.go1
66:4use-fmt-print
cmd/tl-longchain/tl-longchain.go:66:4
for _, peer := range st.FilteredPeers { print(peerInfo(peer), peer.NodeKey, peer.NodeKeySignature) }cmd/tailscale/cli/serve_legacy.go1
722:2use-slices-sort
cmd/tailscale/cli/serve_legacy.go:722:2
mounts := slicesx.MapKeys(sc.Web[hp].Handlers) sort.Slice(mounts, func(i, j int) bool { return len(mounts[i]) < len(mounts[j])cmd/tsidp/tsidp.go1
1100:2var-naming
cmd/tsidp/tsidp.go:1100:2
UserInfoEndpoint string `json:"userinfo_endpoint,omitempty"` JWKS_URI string `json:"jwks_uri"` ScopesSupported views.Slice[string] `json:"scopes_supported"`tempfork/sshtest/ssh/session_test.go1
871:3waitgroup-add-inside-goroutine
tempfork/sshtest/ssh/session_test.go:871:3
} wg.Add(1) go func() {appc/appconnector_test.go1
213:40add-constant
appc/appconnector_test.go:213:40
want := map[string][]netip.Addr{ "example.com": {netip.MustParseAddr("192.0.0.8")}, }net/udprelay/server_test.go1
102:14append-to-sized-slice
net/udprelay/server_test.go:102:14
} pkt = append(pkt, disco.Magic...) pkt = c.local.Public().AppendTo(pkt)feature/condregister/maybe_ace.go1
8:8blank-imports
feature/condregister/maybe_ace.go:8:8
import _ "tailscale.com/feature/ace"cmd/tailscale/cli/up.go1
941:42boolean-literal-comparison
cmd/tailscale/cli/up.go:941:42
} if flagName == "stateful-filtering" && valCur == true && valNew == false && env.goos == "linux" { // See https://github.com/tailscale/tailscale/issues/12307wgengine/netstack/netstack_test.go1
98:2call-to-gc
wgengine/netstack/netstack_test.go:98:2
func getMemStats() (ms runtime.MemStats) { runtime.GC() runtime.ReadMemStats(&ms)appc/appconnector_test.go1
229:6cognitive-complexity
appc/appconnector_test.go:229:6
func TestObserveDNSResponse(t *testing.T) { ctx := t.Context()control/controlhttp/http_test.go1
148:6confusing-naming
control/controlhttp/http_test.go:148:6
func testControlHTTP(t *testing.T, param httpTestParam) { proxy := param.proxycontrol/controlbase/conn_test.go1
364:75confusing-results
control/controlbase/conn_test.go:364:75
func pairWithConns(t *testing.T, clientConn, serverConn net.Conn) (*Conn, *Conn) { var (net/memnet/conn.go1
32:6constructor-interface-return
net/memnet/conn.go:32:6
// NewConn creates a pair of Conns that are wired together by pipes.func NewConn(name string, maxBuf int) (Conn, Conn) { r := NewPipe(name+"|0", maxBuf)net/netmon/loghelper.go1
46:64context-as-argument
net/netmon/loghelper.go:46:64
func (nm *Monitor) changeDeltaWatcher(ec *eventbus.Client, ctx context.Context, fn func(ChangeDelta)) func(*eventbus.Client) { sub := eventbus.Subscribe[ChangeDelta](ec)tsnet/tsnet_test.go1
1285:3context-cancel-in-loop
tsnet/tsnet_test.go:1285:3
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() status1, err := lc1.Status(ctx)derp/derphttp/derphttp_client.go1
84:2context-stored-in-struct
derp/derphttp/derphttp_client.go:84:2
ctx context.Context // closed via cancelCtx in Client.Close cancelCtx context.CancelFuncclient/web/auth.go1
108:18cyclomatic-complexity
client/web/auth.go:108:18
// unless getTailscaleBrowserSession reports errNotUsingTailscale.func (s *Server) getSession(r *http.Request) (*browserSession, *apitype.WhoIsResponse, *ipnstate.Status, error) { whoIs, whoIsErr := s.lc.WhoIs(r.Context(), r.RemoteAddr)cmd/addlicense/main.go1
36:2deep-exit
cmd/addlicense/main.go:36:2
`[1:]) os.Exit(2)}cmd/k8s-operator/operator.go1
50:2deprecated-api-usage
cmd/k8s-operator/operator.go:50:2
"tailscale.com/client/local" "tailscale.com/client/tailscale" "tailscale.com/hostinfo"appc/appconnector_test.go1
439:2discarded-error-result
appc/appconnector_test.go:439:2
b.EnableCompression() b.StartAnswers()client/web/web.go1
47:1doc-comment-period
client/web/web.go:47:1
// ListenPort is the static port used for the web client when run inside tailscaled.// (5252 are the numbers above the letters "TSTS" on a qwerty keyboard.)const ListenPort = 5252cmd/k8s-operator/ingress.go1
84:3early-return
cmd/k8s-operator/ingress.go:84:3
if err := a.maybeProvision(ctx, logger, ing); err != nil { if strings.Contains(err.Error(), optimisticLockErrorMsg) { logger.Infof("optimistic lock error, retrying: %s", err)net/netmon/netmon_linux.go1
200:48empty-conditional-block
net/netmon/netmon_linux.go:200:48
if rmsg.Table == tsTable && dst.IsSingleIP() { // Don't log. Spammy and normal to see a bunch of these on start-up,derp/derp_client.go1
536:3enforce-switch-style
derp/derp_client.go:536:3
switch t { default: continueutil/winutil/subprocess_windows_test.go1
261:2error-naming
util/winutil/subprocess_windows_test.go:261:2
gorootPath string gorootErr error)appc/appconnector_test.go1
283:13error-strings
appc/appconnector_test.go:283:13
if err := a.ObserveDNSResponse(dnsCNAMEResponse("192.0.0.10", "outside.example.org.", "www.example.com.", "example.org.")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }control/controlbase/conn.go1
370:6error-type-naming
control/controlbase/conn.go:370:6
// unacceptably large Noise frame.type errReadTooBig struct { requested intnet/dnscache/dnscache_test.go1
141:2excessive-blank-identifiers
net/dnscache/dnscache_test.go:141:2
_, _, _, err = r.LookupIP(context.Background(), "bad") if got, want := fmt.Sprint(err), `dnscache: unexpected hostname "bad" doesn't match expected "foo.bar"`; got != want {appc/appconnector.go1
293:24exported-declaration-comment
appc/appconnector.go:293:24
// It is safe (and a noop) to call Close on nil.func (e *AppConnector) Close() { if e == nil {client/web/web_test.go1
1:1file-length-limit
client/web/web_test.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/k8s-operator/ingress-for-pg_test.go1
762:76flag-parameter
cmd/k8s-operator/ingress-for-pg_test.go:762:76
func verifyServeConfig(t *testing.T, fc client.Client, serviceName string, wantHTTP bool) { t.Helper()atomicfile/atomicfile_notwindows.go1
1:1format
atomicfile/atomicfile_notwindows.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt atomicfile/atomicfile_notwindows.go`
client/web/web.go1
725:18function-length
client/web/web.go:725:18
// and returns an authResponse indicating the current auth state and any steps the user needs to take.func (s *Server) serveAPIAuth(w http.ResponseWriter, r *http.Request) { var resp authResponsecontrol/controlclient/direct.go1
517:18function-result-limit
control/controlclient/direct.go:517:18
func (c *Direct) doLogin(ctx context.Context, opt loginOpt) (mustRegen bool, newURL string, nks tkatype.MarshaledSignature, err error) { if c.panicOnUse {client/web/web.go1
698:2identical-switch-branches
client/web/web.go:698:2
return case path == "/local/v0/upload-client-metrics" && r.Method == httpm.POST: newHandler[noBodyData](s, w, r, alwaysAllowed).client/web/assets.go1
66:81import-shadowing
client/web/assets.go:66:81
func openPrecompressedFile(w http.ResponseWriter, r *http.Request, path string, fs fs.FS) (fs.File, error) { if f, err := fs.Open(path + ".gz"); err == nil {net/netcheck/netcheck.go1
1389:5inefficient-map-lookup
net/netcheck/netcheck.go:1389:5
if bd, ok := bestRecent[regionID]; !ok || d < bd { bestRecent[regionID] = d }ipn/ipnlocal/serve.go1
1079:49inefficient-sprintf
ipn/ipnlocal/serve.go:1079:49
} key := ipn.HostPort(net.JoinHostPort(hostname, fmt.Sprintf("%d", port))) return b.serveConfig.FindWeb(key)client/local/local.go1
949:54insecure-url-scheme
client/local/local.go:949:54
ctx = httptrace.WithClientTrace(ctx, &trace) req, err := http.NewRequestWithContext(ctx, "POST", "http://"+apitype.LocalAPIHost+"/localapi/v0/dial", nil) if err != nil {tailcfg/tailcfg.go1
650:7marshal-receiver
tailcfg/tailcfg.go:650:7
func (m *MachineStatus) UnmarshalText(b []byte) error { switch string(b) {cmd/cloner/cloner.go1
199:7max-control-nesting
cmd/cloner/cloner.go:199:7
if base := elem.Elem().Underlying(); codegen.ContainsPointers(base) { if _, isIface := base.(*types.Interface); isIface { it.Import("", "tailscale.com/types/ptr")wgengine/netlog/netlog.go1
100:19max-parameters
wgengine/netlog/netlog.go:100:19
// The netMon parameter is optional; if non-nil it's used to do faster interface lookups.func (nl *Logger) Startup(nodeID tailcfg.StableNodeID, nodeLogID, domainLogID logid.PrivateID, tun, sock Device, netMon *netmon.Monitor, health *health.Tracker, bus *eventbus.Bus, logExitFlowEnabledEnabled bool) error { nl.mu.Lock()client/tailscale/acl.go1
319:6max-public-structs
client/tailscale/acl.go:319:6
// ACLPreview is the response type of PreviewACLForUser, PreviewACLForIPPort, PreviewACLHuJSONForUser, and PreviewACLHuJSONForIPPorttype ACLPreview struct { Matches []UserRuleMatch `json:"matches"`client/web/web.go1
359:3modifies-parameter
client/web/web.go:359:3
if r.URL.Path == "/metrics" { r.URL.Path = "/api/local/v0/usermetrics" s.proxyRequestToLocalAPI(w, r)logpolicy/logpolicy.go1
559:3modifies-value-receiver
logpolicy/logpolicy.go:559:3
if useStdLogger { opts.Logf = log.Printf }client/local/local.go1
801:11nested-structs
client/local/local.go:801:11
} var jres struct { Warning stringcmd/k8s-nameserver/main.go1
397:3nil-error-return
cmd/k8s-nameserver/main.go:397:3
} else if os.IsNotExist(err) { return nil, nil } else {cmd/stunstamp/stunstamp.go1
454:3nil-value-with-nil-error
cmd/stunstamp/stunstamp.go:454:3
if !info.stableConn && bool(stable) { return nil, nil }derp/derp_test.go1
125:3no-defer-in-loop
derp/derp_test.go:125:3
ctx, cancel := context.WithCancel(context.Background()) defer cancel()client/web/auth.go1
319:5no-else-after-return
client/web/auth.go:319:5
return peerCapabilities{}, nil } else { return peerCapabilities{capFeatureAll: true}, nil // owner can edit all featurescmd/derper/derper.go1
513:6no-init
cmd/derper/derper.go:513:6
func init() { expvar.Publish("go_sync_mutex_wait_seconds", expvar.Func(func() any {cmd/derpprobe/derpprobe.go1
199:2no-naked-return
cmd/derpprobe/derpprobe.go:199:2
sort.Strings(o.good) return}client/local/local.go1
233:5no-package-var
client/local/local.go:233:5
var onVersionMismatch func(clientVer, serverVer string)control/controlbase/noiseexplorer_test.go1
344:2overwritten-before-use
control/controlbase/noiseexplorer_test.go:344:2
func writeMessageRegular(cs *cipherstate, payload []byte) (*cipherstate, messagebuffer) { ne, ns, ciphertext := emptyKey, []byte{}, []byte{} cs, ciphertext = encryptWithAd(cs, []byte{}, payload)client/local/cert.go1
6:9package-comments
client/local/cert.go:6:9
package localpkgdoc_test.go1
4:9package-directory-mismatch
pkgdoc_test.go:4:9
package tailscalerootclient/web/web_test.go1
1558:9range-value-address
client/web/web_test.go:1558:9
s := &Server{ originOverride: tt.originOverride,cmd/k8s-operator/sts.go1
239:7receiver-naming
cmd/k8s-operator/sts.go:239:7
// otherwise it returns false and the caller should retry later.func (a *tailscaleSTSReconciler) Cleanup(ctx context.Context, logger *zap.SugaredLogger, labels map[string]string, typ string) (done bool, _ error) { // Need to delete the StatefulSet first, and delete it with foregroundcmd/containerboot/main.go1
267:3redefines-builtin-id
cmd/containerboot/main.go:267:3
close := runHTTPServer(mux, cfg.LocalAddrPort) defer close()client/web/web_test.go1
532:66redundant-conversion
client/web/web_test.go:532:66
func TestServeAuth(t *testing.T) { user := &tailcfg.UserProfile{LoginName: "user@example.com", ID: tailcfg.UserID(1)} self := &ipnstate.PeerStatus{net/art/stride_table.go1
181:2redundant-final-return
net/art/stride_table.go:181:2
t.allot(idx, old, p) return}ipn/ipnlocal/local.go1
2121:3single-case-switch
ipn/ipnlocal/local.go:2121:3
// sufficient. switch m.(type) { case netmap.NodeMutationOnline:cmd/k8s-operator/egress-eps.go1
106:2slice-preallocation
cmd/k8s-operator/egress-eps.go:106:2
} newEndpoints := make([]discoveryv1.Endpoint, 0) for _, pod := range podList.Items {client/local/local.go1
1218:46standard-http-method-constant
client/local/local.go:1218:46
func (lc *Client) StreamDebugCapture(ctx context.Context) (io.ReadCloser, error) { req, err := http.NewRequestWithContext(ctx, "POST", "http://"+apitype.LocalAPIHost+"/localapi/v0/debug-capture", nil) if err != nil {client/systray/systray.go2
687:2task-comment
client/systray/systray.go:687:2
// TODO: "Allow Local Network Access" and "Run Exit Node" menu items}76:1top-level-declaration-order
client/systray/systray.go:76:1
// Menu represents the systray menu, its items, and the current Tailscale state.type Menu struct { mu sync.Mutex // protects the entire Menucmd/containerboot/main_test.go1
1665:20unchecked-type-assertion
cmd/containerboot/main_test.go:1665:20
} port := ln.Addr().(*net.TCPAddr).Port *p = portipn/localapi/localapi_test.go1
88:2unclosed-http-response-body
ipn/localapi/localapi_test.go:88:2
} res, err := c.Do(req) if err != nil {ipn/desktop/sessions_windows.go1
630:2unexported-naming
ipn/desktop/sessions_windows.go:630:2
const ( _WM_CREATE = 1 _WM_DESTROY = 2control/controlbase/noiseexplorer_test.go1
404:73unexported-return
control/controlbase/noiseexplorer_test.go:404:73
func SendMessage(session *noisesession, message []byte) (*noisesession, messagebuffer) { var messageBuffer messagebufferipn/auditlog/auditlog_test.go1
323:49unnecessary-format
ipn/auditlog/auditlog_test.go:323:49
err := al.Enqueue(tailcfg.AuditNodeDisconnect, fmt.Sprintf("log 1")) c.Assert(err, qt.IsNil)cmd/tsconnect/wasm/wasm_js.go1
54:4unreachable-code
cmd/tsconnect/wasm/wasm_js.go:54:4
log.Fatal("Usage: newIPN(config)") return nil }tsconsensus/http.go1
31:21unsafe-formatted-url-host-port
tsconsensus/http.go:31:21
func (rac *commandClient) url(host string, path string) string { return fmt.Sprintf("http://%s:%d%s", host, rac.port, path)}clientupdate/clientupdate.go1
881:25unused-parameter
clientupdate/clientupdate.go:881:25
func restartSystemdUnit(ctx context.Context) error { if _, err := exec.LookPath("systemctl"); err != nil {clientupdate/clientupdate_not_downloads.go1
8:7unused-receiver
clientupdate/clientupdate_not_downloads.go:8:7
func (up *Updater) downloadURLToFile(pathSrc, fileDst string) (ret error) { panic("unreachable")tempfork/gliderlabs/ssh/context.go1
122:44use-any
tempfork/gliderlabs/ssh/context.go:122:44
func (ctx *sshContext) SetValue(key, value interface{}) { ctx.Context = context.WithValue(ctx.Context, key, value)client/tailscale/keys.go1
90:19use-errors-new
client/tailscale/keys.go:90:19
if expirySeconds == 0 && expiry != 0 { return "", nil, fmt.Errorf("non-zero expiry must be at least one second") }logtail/logtail.go1
560:3use-fmt-print
logtail/logtail.go:560:3
// ourselves. println("logtail: try drain wake, numHTTP:", l.httpDoCalls.Load()) }cmd/tailscale/cli/serve_v2.go1
741:3use-slices-sort
cmd/tailscale/cli/serve_v2.go:741:3
mounts := slicesx.MapKeys(webConfig.Handlers) sort.Slice(mounts, func(i, j int) bool { return len(mounts[i]) < len(mounts[j])control/controlbase/noiseexplorer_test.go1
47:2var-naming
control/controlbase/noiseexplorer_test.go:47:2
type keypair struct { public_key [32]byte private_key [32]byteappc/appconnector_test.go1
260:46add-constant
appc/appconnector_test.go:260:46
a.updateDomains([]string{"example.com"}) if err := a.ObserveDNSResponse(dnsResponse("example.com.", "192.0.0.8")); err != nil { t.Errorf("ObserveDNSResponse: %v", err)feature/condregister/maybe_appconnectors.go1
8:8blank-imports
feature/condregister/maybe_appconnectors.go:8:8
import _ "tailscale.com/feature/appconnectors"cmd/tailscale/cli/up.go1
941:60boolean-literal-comparison
cmd/tailscale/cli/up.go:941:60
} if flagName == "stateful-filtering" && valCur == true && valNew == false && env.goos == "linux" { // See https://github.com/tailscale/tailscale/issues/12307appc/appconnector_test.go1
343:6cognitive-complexity
appc/appconnector_test.go:343:6
func TestWildcardDomains(t *testing.T) { ctx := t.Context()derp/derp_client.go1
98:6confusing-naming
derp/derp_client.go:98:6
func newClient(privateKey key.NodePrivate, nc Conn, brw *bufio.ReadWriter, logf logger.Logf, opt clientOpt) (*Client, error) { c := &Client{control/controlbase/conn_test.go1
387:33confusing-results
control/controlbase/conn_test.go:387:33
func pair(t *testing.T) (*Conn, *Conn) { s1, s2 := memnet.NewConn("noise", 128000)net/memnet/conn.go1
40:6constructor-interface-return
net/memnet/conn.go:40:6
// NewTCPConn creates a pair of Conns that are wired together by pipes.func NewTCPConn(src, dst netip.AddrPort, maxBuf int) (local Conn, remote Conn) { r := NewPipe(src.String(), maxBuf)net/ping/ping_test.go1
333:52context-as-argument
net/ping/ping_test.go:333:52
func (p *Pinger) waitOutstanding(t *testing.T, ctx context.Context, count int) { // This is a bit janky, but... we busy-loop to wait for the Send calltstest/integration/integration_test.go1
739:3context-cancel-in-loop
tstest/integration/integration_test.go:739:3
ctx, cancel = context.WithTimeout(t.Context(), 2*time.Second) defer cancel()feature/capture/capture.go1
96:2context-stored-in-struct
feature/capture/capture.go:96:2
type Sink struct { ctx context.Context ctxCancel context.CancelFuncclient/web/web.go1
332:18cyclomatic-complexity
client/web/web.go:332:18
func (s *Server) serve(w http.ResponseWriter, r *http.Request) { if s.mode == ManageServerMode {cmd/addlicense/main.go1
65:3deep-exit
cmd/addlicense/main.go:65:3
fmt.Fprintln(os.Stderr, err) os.Exit(1) }cmd/k8s-operator/proxygroup.go1
35:2deprecated-api-usage
cmd/k8s-operator/proxygroup.go:35:2
"tailscale.com/client/tailscale" "tailscale.com/ipn"appc/appconnector_test.go1
443:4discarded-error-result
appc/appconnector_test.go:443:4
for i, domain := range domains[:len(domains)-1] { b.CNAMEResource( dnsmessage.ResourceHeader{client/web/web_test.go1
91:1doc-comment-period
client/web/web_test.go:91:1
// 1. invalid endpoint errors// 2. permissioning of api endpoints based on node capabilitiesfunc TestServeAPI(t *testing.T) {cmd/k8s-operator/proxygroup.go1
705:3early-return
cmd/k8s-operator/proxygroup.go:705:3
errResp := &tailscale.ErrResponse{} if ok := errors.As(err, errResp); ok && errResp.Status == http.StatusNotFound { logger.Debugf("device %s not found, likely because it has already been deleted from control", string(id))tempfork/sshtest/ssh/channel.go1
329:25empty-conditional-block
tempfork/sshtest/ssh/channel.go:329:25
ch.extPending.write(data) } else if extended > 0 { // discard other extended data.derp/derp_test.go1
156:5enforce-switch-style
derp/derp_test.go:156:5
switch m := m.(type) { default: t.Errorf("unexpected message type %T", m)appc/appconnector_test.go1
294:13error-strings
appc/appconnector_test.go:294:13
if err := a.ObserveDNSResponse(dnsResponse("example.com.", "2001:db8::1")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }kube/kubeapi/api.go1
216:6error-type-naming
kube/kubeapi/api.go:216:6
// Status is a return value for calls that don't return other objects.type Status struct { TypeMeta `json:",inline"`net/stun/stun_fuzzer.go1
8:2excessive-blank-identifiers
net/stun/stun_fuzzer.go:8:2
func FuzzStunParser(data []byte) int { _, _, _ = ParseResponse(data)appc/appconnector.go1
422:24exported-declaration-comment
appc/appconnector.go:422:24
// addresses.func (e *AppConnector) DomainRoutes() map[string][]netip.Addr { e.mu.Lock()clientupdate/clientupdate.go1
1:1file-length-limit
clientupdate/clientupdate.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/k8s-operator/operator.go1
828:52flag-parameter
cmd/k8s-operator/operator.go:828:52
// event is observed on a tailscale Ingress, reconcile the proxy headless Service.func dnsRecordsReconcilerIngressHandler(ns string, isDefaultLoadBalancer bool, cl client.Client, logger *zap.SugaredLogger) handler.MapFunc { return func(ctx context.Context, o client.Object) []reconcile.Request {atomicfile/atomicfile_test.go1
1:1format
atomicfile/atomicfile_test.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt atomicfile/atomicfile_test.go`
client/web/web.go1
934:18function-length
client/web/web.go:934:18
func (s *Server) serveGetNodeData(w http.ResponseWriter, r *http.Request) { st, err := s.lc.Status(r.Context())derp/derphttp/derphttp_client.go1
676:18function-result-limit
derp/derphttp/derphttp_client.go:676:18
// established.func (c *Client) DialRegionTLS(ctx context.Context, reg *tailcfg.DERPRegion) (tlsConn *tls.Conn, connClose io.Closer, node *tailcfg.DERPNode, err error) { tcpConn, node, err := c.dialRegion(ctx, reg)clientupdate/clientupdate.go1
1025:2identical-switch-branches
clientupdate/clientupdate.go:1025:2
return errors.New("Tailscale was not found in the QNAP App Center") default: return fmt.Errorf("failed to check update status with qpkg_cli (upgradeStatus = %d)", status)client/web/qnap.go1
102:28import-shadowing
client/web/qnap.go:102:28
func qnapAuthnFinish(user, url string) (string, *qnapAuthResponse, error) { // QNAP Force HTTPS mode uses a self-signed certificate. Even importingnet/netcheck/netcheck.go1
1489:3inefficient-map-lookup
net/netcheck/netcheck.go:1489:3
if prev, ok := m[regionID]; !ok || d < prev { m[regionID] = d }k8s-operator/apis/v1alpha1/types_proxyclass.go1
191:10inefficient-sprintf
k8s-operator/apis/v1alpha1/types_proxyclass.go:191:10
if pr.EndPort == 0 { return fmt.Sprintf("%d", pr.Port) }client/local/local.go1
1218:54insecure-url-scheme
client/local/local.go:1218:54
func (lc *Client) StreamDebugCapture(ctx context.Context) (io.ReadCloser, error) { req, err := http.NewRequestWithContext(ctx, "POST", "http://"+apitype.LocalAPIHost+"/localapi/v0/debug-capture", nil) if err != nil {tailcfg/tailcfg.go1
1190:7marshal-receiver
tailcfg/tailcfg.go:1190:7
func (st *SignatureType) UnmarshalText(b []byte) error { switch string(b) {cmd/cloner/cloner.go1
211:6max-control-nesting
cmd/cloner/cloner.go:211:6
case *types.Interface: if cloneResultType := methodResultType(elem, "Clone"); cloneResultType != nil { if _, isPtr := cloneResultType.(*types.Pointer); isPtr {wgengine/netlog/netlog.go1
163:6max-parameters
wgengine/netlog/netlog.go:163:6
func recordStatistics(logger *logtail.Logger, nodeID tailcfg.StableNodeID, start, end time.Time, connstats, sockStats map[netlogtype.Connection]netlogtype.Counts, addrs map[netip.Addr]bool, prefixes map[netip.Prefix]bool, logExitFlowEnabled bool) { m := netlogtype.Message{NodeID: nodeID, Start: start.UTC(), End: end.UTC()}client/tailscale/apitype/apitype.go1
76:6max-public-structs
client/tailscale/apitype/apitype.go:76:6
// It returns the StableNodeID, name, and location of a suggested exit node for the client making the request.type ExitNodeSuggestionResponse struct { ID tailcfg.StableNodeIDclient/web/web.go1
1145:3modifies-parameter
client/web/web.go:1145:3
if data.SetExitNode { data.AdvertiseRoutes = currNonExitRoutes } else if data.SetRoutes {logpolicy/logpolicy.go1
872:3modifies-value-receiver
logpolicy/logpolicy.go:872:3
if opts.NetMon == nil { opts.NetMon = netmon.NewStatic() }client/local/local.go1
822:11nested-structs
client/local/local.go:822:11
} var jres struct { Warning stringcmd/k8s-operator/api-server-proxy-pg.go1
95:4nil-error-return
cmd/k8s-operator/api-server-proxy-pg.go:95:4
logger.Infof("optimistic lock error, retrying: %s", err) return reconcile.Result{}, nil }cmd/stunstamp/stunstamp.go1
457:3nil-value-with-nil-error
cmd/stunstamp/stunstamp.go:457:3
if !info.userspaceTS && source == timestampSourceUserspace { return nil, nil }envknob/envknob.go1
589:3no-defer-in-loop
envknob/envknob.go:589:3
} defer f.Close()client/web/web.go1
254:5no-else-after-return
client/web/web.go:254:5
return } else if secFetchSite != "" { http.Error(w, fmt.Sprintf("CSRF request denied with Sec-Fetch-Site %q", secFetchSite), http.StatusForbidden)cmd/stunstamp/stunstamp.go1
161:6no-init
cmd/stunstamp/stunstamp.go:161:6
func init() { lports = &lportsPool{cmd/sniproxy/server.go1
211:3no-naked-return
cmd/sniproxy/server.go:211:3
if err != nil { return }client/local/local.go1
330:5no-package-var
client/local/local.go:330:5
// [Client.WhoIsProto] when a peer is not found.var ErrPeerNotFound = errors.New("peer not found")derp/derphttp/derphttp_test.go1
622:2overwritten-before-use
derp/derphttp/derphttp_test.go:622:2
netMon := netmon.NewStatic() c, err := derphttp.NewClient(key.NewNode(), "https://"+hostname+"/", t.Logf, netMon) defer c.Close()client/local/debugportmapper.go1
6:9package-comments
client/local/debugportmapper.go:6:9
package localtypes/prefs/prefs_example/prefs_test.go1
4:9package-directory-mismatch
types/prefs/prefs_example/prefs_test.go:4:9
package prefs_exampleclientupdate/clientupdate_test.go1
651:28range-value-address
clientupdate/clientupdate_test.go:651:28
for file, content := range files { if err := tw.WriteHeader(&tar.Header{ Name: file,cmd/k8s-operator/sts.go1
342:7receiver-naming
cmd/k8s-operator/sts.go:342:7
func (a *tailscaleSTSReconciler) reconcileHeadlessService(ctx context.Context, logger *zap.SugaredLogger, sts *tailscaleSTSConfig) (*corev1.Service, error) { nameBase := statefulSetNameBase(sts.ParentResourceName)cmd/containerboot/main.go1
873:54redefines-builtin-id
cmd/containerboot/main.go:873:54
func runHTTPServer(mux *http.ServeMux, addr string) (close func() error) { ln, err := net.Listen("tcp", addr)client/web/web_test.go1
802:33redundant-conversion
client/web/web_test.go:802:33
} if diff := cmp.Diff(gotResp, string(wantResp)); diff != "" { t.Errorf("wrong response; (-got+want):%v", diff)ssh/tailssh/tailssh.go1
1052:2redundant-final-return
ssh/tailssh/tailssh.go:1052:2
ss.Exit(1) return}ipn/ipnlocal/local.go1
2134:3single-case-switch
ipn/ipnlocal/local.go:2134:3
for _, m := range muts { switch m.(type) { case netmap.NodeMutationLastSeen,cmd/k8s-operator/egress-services_test.go1
241:2slice-preallocation
cmd/k8s-operator/egress-services_test.go:241:2
func portsForEndpointSlice(svc *corev1.Service) []discoveryv1.EndpointPort { ports := make([]discoveryv1.EndpointPort, 0) for _, p := range svc.Spec.Ports {client/local/local.go1
1244:46standard-http-method-constant
client/local/local.go:1244:46
func (lc *Client) WatchIPNBus(ctx context.Context, mask ipn.NotifyWatchOpt) (*IPNBusWatcher, error) { req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/watch-ipn-bus?mask="+fmt.Sprint(mask),client/tailscale/acl.go2
99:2task-comment
client/tailscale/acl.go:99:2
// If status code was not successful, return the error. // TODO: Change the check for the StatusCode to include other 2XX success codes. if resp.StatusCode != http.StatusOK {166:1top-level-declaration-order
client/tailscale/acl.go:166:1
// JavaScript client to be rendered in the HTML.type ACLTestFailureSummary struct { // User is the source ("src") value of the ACL test that failed.cmd/derper/cert_test.go1
146:21unchecked-type-assertion
cmd/derper/cert_test.go:146:21
lnPort := ln.Addr().(*net.TCPAddr).Portnet/captivedetection/captivedetection.go1
225:2unclosed-http-response-body
net/captivedetection/captivedetection.go:225:2
// Make the actual request, and check if the response looks like a captive portal or not. r, err := d.httpClient.Do(req) if err != nil {ipn/desktop/sessions_windows.go1
631:2unexported-naming
ipn/desktop/sessions_windows.go:631:2
_WM_CREATE = 1 _WM_DESTROY = 2 _WM_CLOSE = 16control/controlbase/noiseexplorer_test.go1
424:66unexported-return
control/controlbase/noiseexplorer_test.go:424:66
func RecvMessage(session *noisesession, message *messagebuffer) (*noisesession, []byte, bool) { var plaintext []bytenet/art/table.go1
161:4unnecessary-format
net/art/table.go:161:4
if debugInsert { fmt.Printf("insert: default route\n") }cmd/tsconnect/wasm/wasm_js.go1
170:5unreachable-code
cmd/tsconnect/wasm/wasm_js.go:170:5
})`) return nil }tsconsensus/tsconsensus_test.go1
455:21unsafe-formatted-url-host-port
tsconsensus/tsconsensus_test.go:455:21
url := fmt.Sprintf("http://%s:%d/", ps[0].c.self.hostAddr.String(), mp) httpClientOnTailnet := ps[1].ts.HTTPClient()clientupdate/clientupdate_not_downloads.go1
8:38unused-parameter
clientupdate/clientupdate_not_downloads.go:8:38
func (up *Updater) downloadURLToFile(pathSrc, fileDst string) (ret error) { panic("unreachable")clientupdate/clientupdate_notwindows.go1
8:7unused-receiver
clientupdate/clientupdate_notwindows.go:8:7
func (up *Updater) updateWindows() error { panic("unreachable")tempfork/gliderlabs/ssh/session_test.go1
298:24use-any
tempfork/gliderlabs/ssh/session_test.go:298:24
// doneChan lets us specify that we should exit. doneChan := make(chan interface{})client/web/qnap.go1
55:18use-errors-new
client/web/qnap.go:55:18
} return "", nil, fmt.Errorf("not authenticated by any mechanism")}util/winutil/testdata/testrestartableprocesses/main.go1
31:3use-fmt-print
util/winutil/testdata/testrestartableprocesses/main.go:31:3
if len(os.Args) < 2 { println("usage: " + os.Args[0] + " name-of-test") returncmd/tsidp/ui.go1
77:2use-slices-sort
cmd/tsidp/ui.go:77:2
sort.Slice(clients, func(i, j int) bool { if clients[i].Name != clients[j].Name {control/controlbase/noiseexplorer_test.go1
48:2var-naming
control/controlbase/noiseexplorer_test.go:48:2
public_key [32]byte private_key [32]byte}appc/appconnector_test.go1
314:62add-constant
appc/appconnector_test.go:314:62
wantRoutes = append(wantRoutes, pfx) if err := a.ObserveDNSResponse(dnsResponse("example.com.", "192.0.2.1")); err != nil { t.Errorf("ObserveDNSResponse: %v", err)feature/condregister/maybe_c2n.go1
8:8blank-imports
feature/condregister/maybe_c2n.go:8:8
import _ "tailscale.com/feature/c2n"cmd/tailscale/cli/up.go1
1106:5boolean-literal-comparison
cmd/tailscale/cli/up.go:1106:5
func fmtFlagValueArg(flagName string, val any) string { if val == true { return "--" + flagNameappc/appconnector_test.go1
571:6cognitive-complexity
appc/appconnector_test.go:571:6
func TestUpdateDomainRouteRemoval(t *testing.T) { ctx := t.Context()derp/derp_client.go1
221:18confusing-naming
derp/derp_client.go:221:18
func (c *Client) send(dstKey key.NodePublic, pkt []byte) (ret error) { defer func() {control/controlbase/noiseexplorer_test.go1
169:81confusing-results
control/controlbase/noiseexplorer_test.go:169:81
func decrypt(k [32]byte, n uint32, ad []byte, ciphertext []byte) (bool, []byte, []byte) { var nonce [12]bytetempfork/sshtest/ssh/client.go1
71:6constructor-interface-return
tempfork/sshtest/ssh/client.go:71:6
// must be serviced or the connection will hang.func NewClientConn(c net.Conn, addr string, config *ClientConfig) (Conn, <-chan NewChannel, <-chan *Request, error) { fullConf := *confignet/portmapper/upnp_test.go1
1043:39context-as-argument
net/portmapper/upnp_test.go:1043:39
func mustProbeUPnP(tb testing.TB, ctx context.Context, c *Client) portmappertype.ProbeResult { tb.Helper()util/singleflight/singleflight_test.go1
432:6context-cancel-in-loop
util/singleflight/singleflight_test.go:432:6
ctx, cancel := context.WithCancel(context.Background()) defer cancel() cancels = append(cancels, cancel)feature/portlist/portlist.go1
44:2context-stored-in-struct
feature/portlist/portlist.go:44:2
type Extension struct { ctx context.Context ctxCancel context.CancelFuncclient/web/web.go1
471:18cyclomatic-complexity
client/web/web.go:471:18
// errors to the ResponseWriter itself.func (s *Server) authorizeRequest(w http.ResponseWriter, r *http.Request) (ok bool) { if s.mode == ManageServerMode { // client using tailscale authcmd/connector-gen/aws.go1
38:3deep-exit
cmd/connector-gen/aws.go:38:3
if err != nil { log.Fatal(err) }cmd/k8s-operator/proxygroup_test.go1
29:2deprecated-api-usage
cmd/k8s-operator/proxygroup_test.go:29:2
"sigs.k8s.io/controller-runtime/pkg/client/fake" "tailscale.com/client/tailscale" "tailscale.com/ipn"appc/appconnector_test.go1
461:3discarded-error-result
appc/appconnector_test.go:461:3
case 32: b.AResource( dnsmessage.ResourceHeader{cmd/gitops-pusher/gitops-pusher.go1
347:1doc-comment-period
cmd/gitops-pusher/gitops-pusher.go:347:1
// ACLGitopsTestError is redefined here so we can add a custom .Error() responsetype ACLGitopsTestError struct {cmd/k8s-operator/proxygroup.go1
1145:3early-return
cmd/k8s-operator/proxygroup.go:1145:3
device := tsapi.TailnetDevice{} if hostname, _, ok := strings.Cut(string(m.stateSecret.Data[kubetypes.KeyDeviceFQDN]), "."); ok { device.Hostname = hostnametempfork/sshtest/ssh/client_auth_test.go1
708:115empty-conditional-block
tempfork/sshtest/ssh/client_auth_test.go:708:115
// message. See issue 50805. if runtime.GOOS == "windows" && strings.Contains(err.Error(), "wsarecv: An established connection was aborted") { // OK.derp/derp_test.go1
374:4enforce-switch-style
derp/derp_test.go:374:4
switch m := m.(type) { default: errCh <- fmt.Errorf("%s: unexpected message type %T", name, m)appc/appconnector_test.go1
303:13error-strings
appc/appconnector_test.go:303:13
if err := a.ObserveDNSResponse(dnsResponse("example.com.", "2001:db8::1")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }net/neterror/neterror.go1
71:6error-type-naming
net/neterror/neterror.go:71:6
type ErrUDPGSODisabled struct { OnLaddr stringtempfork/gliderlabs/ssh/example_test.go1
36:4excessive-blank-identifiers
tempfork/gliderlabs/ssh/example_test.go:36:4
} allowed, _, _, _, err := ssh.ParseAuthorizedKey(data) if err != nil {appc/appctest/appctest.go1
25:27exported-declaration-comment
appc/appctest/appctest.go:25:27
func (rc *RouteCollector) AdvertiseRoute(pfx ...netip.Prefix) error { rc.routes = append(rc.routes, pfx...)clientupdate/clientupdate_test.go1
1:1file-length-limit
clientupdate/clientupdate_test.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/k8s-operator/proxygroup_test.go1
1747:89flag-parameter
cmd/k8s-operator/proxygroup_test.go:1747:89
func expectProxyGroupResources(t *testing.T, fc client.WithWatch, pg *tsapi.ProxyGroup, shouldExist bool, proxyClass *tsapi.ProxyClass) { t.Helper()atomicfile/atomicfile_windows_test.go1
1:1format
atomicfile/atomicfile_windows_test.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt atomicfile/atomicfile_windows_test.go`
client/web/web.go1
1177:18function-length
client/web/web.go:1177:18
// If reauthentication has been requested, an authURL is returned to complete device registration.func (s *Server) tailscaleUp(ctx context.Context, st *ipnstate.Status, opt tailscaleUpOptions) (authURL string, retErr error) { origAuthURL := st.AuthURLderp/derpserver/derpserver.go1
1585:18function-result-limit
derp/derpserver/derpserver.go:1585:18
func (s *Server) recvForwardPacket(br *bufio.Reader, frameLen uint32) (srcKey, dstKey key.NodePublic, contents []byte, err error) { if frameLen < derp.KeyLen*2 {cmd/proxy-to-grafana/proxy-to-grafana.go1
100:2identical-switch-branches
cmd/proxy-to-grafana/proxy-to-grafana.go:100:2
return "Admin" default: // A safe default.client/web/web.go1
640:2import-shadowing
client/web/web.go:640:2
path := strings.TrimPrefix(r.URL.Path, "/api") switch {net/netmon/state.go1
501:4inefficient-map-lookup
net/netmon/state.go:501:4
iface.Desc = desc s.Interface[dr.InterfaceName] = iface }release/dist/synology/pkgs.go1
60:22inefficient-sprintf
release/dist/synology/pkgs.go:60:22
func (t *target) dsmVersionString() string { dsmVersionString := fmt.Sprintf("%d", t.dsmMajorVersion) if t.dsmMinorVersion != 0 {client/local/local.go1
1245:3insecure-url-scheme
client/local/local.go:1245:3
req, err := http.NewRequestWithContext(ctx, "GET", "http://"+apitype.LocalAPIHost+"/localapi/v0/watch-ipn-bus?mask="+fmt.Sprint(mask), nil)tka/aum.go1
49:7marshal-receiver
tka/aum.go:49:7
// MarshalText implements encoding.TextMarshaler.func (h AUMHash) MarshalText() ([]byte, error) { return h.AppendText(nil)cmd/cloner/cloner.go1
212:7max-control-nesting
cmd/cloner/cloner.go:212:7
if cloneResultType := methodResultType(elem, "Clone"); cloneResultType != nil { if _, isPtr := cloneResultType.(*types.Pointer); isPtr { writef("\t\tdst.%s[k] = *(v.Clone())", fname)client/tailscale/apitype/apitype.go1
84:6max-public-structs
client/tailscale/apitype/apitype.go:84:6
// into the CLI.type DNSOSConfig struct { Nameservers []stringclient/web/web.go1
1147:3modifies-parameter
client/web/web.go:1147:3
} else if data.SetRoutes { data.AdvertiseExitNode = currAdvertisingExitNode data.UseExitNode = prefs.ExitNodeIDlogpolicy/logpolicy.go1
894:3modifies-value-receiver
logpolicy/logpolicy.go:894:3
if opts.Logf == nil { opts.Logf = log.Printf }client/local/tailnetlock.go1
137:39nested-structs
client/local/tailnetlock.go:137:39
var b bytes.Buffer if err := json.NewEncoder(&b).Encode(struct{}{}); err != nil { return errcmd/k8s-operator/api-server-proxy-pg.go1
177:3nil-error-return
cmd/k8s-operator/api-server-proxy-pg.go:177:3
tsoperator.SetProxyGroupCondition(pg, tsapi.KubeAPIServerProxyValid, metav1.ConditionFalse, reasonKubeAPIServerProxyInvalid, msg, pg.Generation, r.clock, logger) return nil }cmd/stunstamp/stunstamp.go1
460:3nil-value-with-nil-error
cmd/stunstamp/stunstamp.go:460:3
if !info.kernelTS && source == timestampSourceKernel { return nil, nil }feature/taildrop/ext.go1
296:3no-defer-in-loop
feature/taildrop/ext.go:296:3
gotFile, gotFileCancel := context.WithCancel(context.Background()) defer gotFileCancel()client/web/web.go1
654:6no-else-after-return
client/web/web.go:654:6
return false } else if d.SetRoutes && !p.canEdit(capFeatureSubnets) { return falsecmd/tailscale/cli/cert.go1
30:6no-init
cmd/tailscale/cli/cert.go:30:6
func init() { maybeCertCmd = func() *ffcli.Command {cmd/sniproxy/server.go1
217:3no-naked-return
cmd/sniproxy/server.go:217:3
if err != nil { return }client/systray/logo.go1
38:2no-package-var
client/systray/logo.go:38:2
// disconnected is all gray dots disconnected = tsLogo{dots: [9]byte{ 0, 0, 0,net/tsdial/tsdial.go1
290:2overwritten-before-use
net/tsdial/tsdial.go:290:2
} lip, rip := la.AddrPort().Addr(), ra.AddrPort().Addr()client/local/serve.go1
6:9package-comments
client/local/serve.go:6:9
package localtypes/prefs/prefs_example/prefs_types.go1
11:9package-directory-mismatch
types/prefs/prefs_example/prefs_types.go:11:9
// generating code for test packages.package prefs_exampleclientupdate/clientupdate_test.go1
651:28range-value-address
clientupdate/clientupdate_test.go:651:28
for file, content := range files { if err := tw.WriteHeader(&tar.Header{ Name: file,cmd/k8s-operator/sts.go1
362:7receiver-naming
cmd/k8s-operator/sts.go:362:7
func (a *tailscaleSTSReconciler) provisionSecrets(ctx context.Context, logger *zap.SugaredLogger, stsC *tailscaleSTSConfig, hsvc *corev1.Service) ([]string, error) { secretNames := make([]string, stsC.Replicas)cmd/featuretags/featuretags.go1
21:2redefines-builtin-id
cmd/featuretags/featuretags.go:21:2
var ( min = flag.Bool("min", false, "remove all features not mentioned in --add") remove = flag.String("remove", "", "a comma-separated list of features to remove from the build. (without the 'ts_omit_' prefix)")client/web/web_test.go1
838:66redundant-conversion
client/web/web_test.go:838:66
func TestServeAPIAuthMetricLogging(t *testing.T) { user := &tailcfg.UserProfile{LoginName: "user@example.com", ID: tailcfg.UserID(1)} otherUser := &tailcfg.UserProfile{LoginName: "user2@example.com", ID: tailcfg.UserID(2)}tstest/tstest.go1
36:2redundant-final-return
tstest/tstest.go:36:2
*target = val return}k8s-operator/sessionrecording/spdy/conn.go1
145:3single-case-switch
k8s-operator/sessionrecording/spdy/conn.go:145:3
if !sf.Ctrl && c.hasTerm { // data frame switch sf.StreamID { case c.resizeStreamID.Load():cmd/k8s-operator/operator.go1
766:3slice-preallocation
cmd/k8s-operator/operator.go:766:3
return func(ctx context.Context, _ client.Object) []reconcile.Request { reqs := make([]reconcile.Request, 0)client/tailscale/acl.go2
88:46standard-http-method-constant
client/tailscale/acl.go:88:46
path := c.BuildTailnetURL("acl") req, err := http.NewRequestWithContext(ctx, "GET", path, nil) if err != nil {205:2task-comment
client/tailscale/acl.go:205:2
// If status code was not successful, return the error. // TODO: Change the check for the StatusCode to include other 2XX success codes. if resp.StatusCode != http.StatusOK {client/tailscale/devices.go1
118:1top-level-declaration-order
client/tailscale/devices.go:118:1
var ( DeviceAllFields = &DeviceFieldsOpts{}cmd/k8s-operator/proxygroup_test.go1
1649:15unchecked-type-assertion
cmd/k8s-operator/proxygroup_test.go:1649:15
} errs := err.(unwrapper) if len(errs.Unwrap()) != tc.expectedErrs {net/netcheck/netcheck.go1
1083:7unclosed-http-response-body
net/netcheck/netcheck.go:1083:7
// pool. if r, err := http.DefaultClient.Do(req); err != nil || r.StatusCode > 299 { if err != nil {ipn/desktop/sessions_windows.go1
632:2unexported-naming
ipn/desktop/sessions_windows.go:632:2
_WM_DESTROY = 2 _WM_CLOSE = 16 _WM_NCCREATE = 129feature/taildrop/taildrop.go1
117:34unexported-return
feature/taildrop/taildrop.go:117:34
// so the Shutdown method must be called for resource cleanup.func (opts managerOptions) New() *manager { if opts.Logf == nil {net/art/table.go1
341:4unnecessary-format
net/art/table.go:341:4
if debugDelete { fmt.Printf("delete: default route\n") }envknob/envknob.go1
292:2unreachable-code
envknob/envknob.go:292:2
log.Fatalf("invalid boolean environment variable %s value %q", envVar, val) panic("unreachable")}clientupdate/clientupdate_not_downloads.go1
8:47unused-parameter
clientupdate/clientupdate_not_downloads.go:8:47
func (up *Updater) downloadURLToFile(pathSrc, fileDst string) (ret error) { panic("unreachable")cmd/containerboot/serve_test.go1
209:7unused-receiver
cmd/containerboot/serve_test.go:209:7
func (m *fakeLocalClient) CertPair(ctx context.Context, domain string) (certPEM, keyPEM []byte, err error) { return nil, nil, niltempfork/gliderlabs/ssh/session_test.go1
356:24use-any
tempfork/gliderlabs/ssh/session_test.go:356:24
// doneChan lets us specify that we should exit. doneChan := make(chan interface{})client/web/qnap.go1
124:19use-errors-new
client/web/qnap.go:124:19
if authResp.AuthPassed == 0 { return "", nil, fmt.Errorf("not authenticated") }util/winutil/testdata/testrestartableprocesses/main.go1
36:3use-fmt-print
util/winutil/testdata/testrestartableprocesses/main.go:36:3
if f == nil { println("unknown function: " + os.Args[1]) returnfeature/taildrop/retrieve.go1
94:2use-slices-sort
feature/taildrop/retrieve.go:94:2
} sort.Slice(ret, func(i, j int) bool { return ret[i].Name < ret[j].Name }) return ret, nilcontrol/controlbase/noiseexplorer_test.go1
143:9var-naming
control/controlbase/noiseexplorer_test.go:143:9
func dh(private_key [32]byte, public_key [32]byte) [32]byte { var ss [32]byteappc/appconnector_test.go1
326:54add-constant
appc/appconnector_test.go:326:54
if err := eventbustest.ExpectExactly(w, eqUpdate(appctype.RouteUpdate{Advertise: prefixes("192.0.0.8/32")}), // from initial DNS response, via example.com eventbustest.Type[appctype.RouteInfo](),feature/condregister/maybe_capture.go1
8:8blank-imports
feature/condregister/maybe_capture.go:8:8
import _ "tailscale.com/feature/capture"derp/derpserver/derpserver.go1
868:5boolean-literal-comparison
derp/derpserver/derpserver.go:868:5
func (c *sclient) requestPeerGoneWriteLimited(peer key.NodePublic, contents []byte, reason derp.PeerGoneReasonType) { if disco.LooksLikeDiscoWrapper(contents) != true { returnappc/appconnector_test.go1
652:6cognitive-complexity
appc/appconnector_test.go:652:6
func TestUpdateWildcardRouteRemoval(t *testing.T) { ctx := t.Context()derp/derphttp/derphttp_client.go1
331:18confusing-naming
derp/derphttp/derphttp_client.go:331:18
func (c *Client) connect(ctx context.Context, caller string) (client *derp.Client, connGen int, err error) { c.mu.Lock()control/controlbase/noiseexplorer_test.go1
197:50confusing-results
control/controlbase/noiseexplorer_test.go:197:50
func getHkdf(ck [32]byte, ikm []byte) ([32]byte, [32]byte, [32]byte) { var k1 [32]bytetempfork/sshtest/ssh/keys.go1
370:6constructor-interface-return
tempfork/sshtest/ssh/keys.go:370:6
// the specified algorithms are incompatible with the public key type.func NewSignerWithAlgorithms(signer AlgorithmSigner, algorithms []string) (MultiAlgorithmSigner, error) { if len(algorithms) == 0 {tsconsensus/tsconsensus_test.go1
153:34context-as-argument
tsconsensus/tsconsensus_test.go:153:34
func startNode(t testing.TB, ctx context.Context, controlURL, hostname string) (*tsnet.Server, key.NodePublic, netip.Addr) { t.Helper()wgengine/magicsock/relaymanager.go1
1049:18context-cancel-in-loop
wgengine/magicsock/relaymanager.go:1049:18
} ctx, cancel := context.WithCancel(context.Background()) started := &relayEndpointAllocWork{feature/taildrop/delete.go1
36:2context-stored-in-struct
feature/taildrop/delete.go:36:2
group sync.WaitGroup shutdownCtx context.Context shutdown context.CancelFuncclient/web/web.go1
631:18cyclomatic-complexity
client/web/web.go:631:18
// which protects the handler using gorilla csrf.func (s *Server) serveAPI(w http.ResponseWriter, r *http.Request) { if r.Method == httpm.PATCH {cmd/connector-gen/aws.go1
44:3deep-exit
cmd/connector-gen/aws.go:44:3
if err := json.NewDecoder(r.Body).Decode(&aws); err != nil { log.Fatal(err) }cmd/k8s-operator/sts.go1
33:2deprecated-api-usage
cmd/k8s-operator/sts.go:33:2
"tailscale.com/client/tailscale" "tailscale.com/ipn"appc/appconnector_test.go1
473:3discarded-error-result
appc/appconnector_test.go:473:3
case 128: b.AAAAResource( dnsmessage.ResourceHeader{cmd/k8s-operator/ingress-for-pg.go1
48:2doc-comment-period
cmd/k8s-operator/ingress-for-pg.go:48:2
TailscaleSvcOwnerRef = "tailscale.com/k8s-operator:owned-by:%s" // FinalizerNamePG is the finalizer used by the IngressPGReconciler FinalizerNamePG = "tailscale.com/ingress-pg-finalizer"cmd/k8s-operator/sts.go1
283:5early-return
cmd/k8s-operator/sts.go:283:5
errResp := &tailscale.ErrResponse{} if ok := errors.As(err, errResp); ok && errResp.Status == http.StatusNotFound { logger.Debugf("device %s not found, likely because it has already been deleted from control", string(dev.id))tempfork/sshtest/ssh/common.go1
335:27empty-conditional-block
tempfork/sshtest/ssh/common.go:335:27
if c.RekeyThreshold == 0 { // cipher specific defaultderp/derphttp/derphttp_test.go1
118:5enforce-switch-style
derp/derphttp/derphttp_test.go:118:5
switch m := m.(type) { default: t.Errorf("unexpected message type %T", m)appc/appconnector_test.go1
315:13error-strings
appc/appconnector_test.go:315:13
if err := a.ObserveDNSResponse(dnsResponse("example.com.", "192.0.2.1")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }net/udprelay/server.go1
708:6error-type-naming
net/udprelay/server.go:708:6
// requested after waiting for at least RetryAfter duration.type ErrServerNotReady struct { RetryAfter time.Durationtempfork/sshtest/ssh/certs_test.go1
104:2excessive-blank-identifiers
tempfork/sshtest/ssh/certs_test.go:104:2
func TestValidateCert(t *testing.T) { key, _, _, _, err := ParseAuthorizedKey(testdata.SSHCertificates["rsa-user-testcertificate"]) if err != nil {appc/appctest/appctest.go1
33:27exported-declaration-comment
appc/appctest/appctest.go:33:27
func (rc *RouteCollector) UnadvertiseRoute(toRemove ...netip.Prefix) error { routes := rc.routesclientupdate/distsign/distsign_test.go1
1:1file-length-limit
clientupdate/distsign/distsign_test.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/k8s-operator/sts.go1
959:46flag-parameter
cmd/k8s-operator/sts.go:959:46
func enableEndpoints(ss *appsv1.StatefulSet, metrics, debug bool) { for i, c := range ss.Spec.Template.Spec.Containers {atomicfile/mksyscall.go1
1:1format
atomicfile/mksyscall.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt atomicfile/mksyscall.go`
client/web/web_test.go1
92:6function-length
client/web/web_test.go:92:6
// 2. permissioning of api endpoints based on node capabilitiesfunc TestServeAPI(t *testing.T) { selfTags := views.SliceOf([]string{"tag:server"})drive/driveimpl/dirfs/dirfs_test.go1
279:6function-result-limit
drive/driveimpl/dirfs/dirfs_test.go:279:6
func createFileSystem(t *testing.T) (webdav.FileSystem, string, string, *tstest.Clock) { s1, dir1 := startRemote(t)cmd/stunstamp/stunstamp_default.go1
31:2identical-switch-branches
cmd/stunstamp/stunstamp_default.go:31:2
} case protocolHTTPS: return protocolSupportInfo{client/web/web.go1
1201:23import-shadowing
client/web/web.go:1201:23
// provided auth URL from an IPN notify. printAuthURL := func(url string) bool { return url != origAuthURLpkgdoc_test.go1
53:4inefficient-map-lookup
pkgdoc_test.go:53:4
if _, ok := byDir[dir]; !ok { byDir[dir] = nil }release/dist/synology/pkgs.go1
177:19inefficient-sprintf
release/dist/synology/pkgs.go:177:19
} f("extractsize", fmt.Sprintf("%v", uncompressedSz>>10)) // in KiB return ret.Bytes()client/systray/systray.go1
313:20insecure-url-scheme
client/systray/systray.go:313:20
onClick(ctx, menu.more, func(_ context.Context) { webbrowser.Open("http://100.100.100.100/") })tka/disabled_stub.go1
131:7marshal-receiver
tka/disabled_stub.go:131:7
func (h *AUMHash) UnmarshalText(text []byte) error { return errNoTailnetLockcmd/containerboot/main.go1
537:7max-control-nesting
cmd/containerboot/main.go:537:7
for _, n := range n.NetMap.Peers { if strings.EqualFold(n.Name(), cfg.TailnetTargetFQDN) { node = nclient/tailscale/apitype/apitype.go1
91:6max-public-structs
client/tailscale/apitype/apitype.go:91:6
// DNSQueryResponse is the response to a DNS query request sent via LocalAPI.type DNSQueryResponse struct { // Bytes is the raw DNS response bytes.client/web/web.go1
1148:3modifies-parameter
client/web/web.go:1148:3
data.AdvertiseExitNode = currAdvertisingExitNode data.UseExitNode = prefs.ExitNodeID }net/dns/manager_linux_test.go1
336:3modifies-value-receiver
net/dns/manager_linux_test.go:336:3
if s, ok := v.(string); ok { m[name] = s[:0] }client/local/tailnetlock.go1
150:8nested-structs
client/local/tailnetlock.go:150:8
func (lc *Client) NetworkLockVerifySigningDeeplink(ctx context.Context, url string) (*tka.DeeplinkValidationResult, error) { vr := struct { URL stringcmd/k8s-operator/egress-pod-readiness.go1
246:3nil-error-return
cmd/k8s-operator/egress-pod-readiness.go:246:3
// error types are possible, but checking for those would likely make the system too fragile. return unreachable, nil }cmd/tailscale/cli/serve_legacy_test.go1
929:2nil-value-with-nil-error
cmd/tailscale/cli/serve_legacy_test.go:929:2
func (lc *fakeLocalServeClient) WatchIPNBus(ctx context.Context, mask ipn.NotifyWatchOpt) (*local.IPNBusWatcher, error) { return nil, nil // unused in tests}feature/taildrop/ext.go1
299:3no-defer-in-loop
feature/taildrop/ext.go:299:3
handle := e.addFileWaiter(gotFileCancel) defer e.removeFileWaiter(handle)clientupdate/clientupdate.go1
47:4no-else-after-return
clientupdate/clientupdate.go:47:4
return UnstableTrack } else { return StableTrackcmd/tailscale/cli/configure-jetkvm.go1
21:6no-init
cmd/tailscale/cli/configure-jetkvm.go:21:6
func init() { maybeJetKVMConfigureCmd = jetKVMConfigureCmdcmd/stunstamp/stunstamp.go1
557:5no-naked-return
cmd/stunstamp/stunstamp.go:557:5
if err != nil { return }client/systray/logo.go1
45:2no-package-var
client/systray/logo.go:45:2
// connected is the normal Tailscale logo connected = tsLogo{dots: [9]byte{ 0, 0, 0,safesocket/unixsocket.go1
77:2overwritten-before-use
safesocket/unixsocket.go:77:2
} plist, err := exec.Command("launchctl", "list", "com.tailscale.tailscaled").Output() _ = plist // parse it? https://github.com/DHowett/go-plist if we need something.client/local/syspolicy.go1
6:9package-comments
client/local/syspolicy.go:6:9
package localversion-embed.go1
5:9package-directory-mismatch
version-embed.go:5:9
// Package tailscaleroot embeds VERSION.txt into the binary.package tailscalerootcmd/containerboot/egressservices.go1
256:41range-value-address
cmd/containerboot/egressservices.go:256:41
// Update the status. Status will be written back to the state Secret by the caller. mak.Set(&newStatus.Services, svcName, &egressservices.ServiceStatus{TailnetTargetIPs: tailnetTargetIPs, TailnetTarget: cfg.TailnetTarget, Ports: cfg.Ports}) }cmd/k8s-operator/sts.go1
513:7receiver-naming
cmd/k8s-operator/sts.go:513:7
// returned capver is -1. Either of device ID, hostname and IPs can be empty string if not found in the Secret.func (a *tailscaleSTSReconciler) DeviceInfo(ctx context.Context, childLabels map[string]string, logger *zap.SugaredLogger) ([]*device, error) { var secrets corev1.SecretListcmd/sync-containers/main.go1
38:2redefines-builtin-id
cmd/sync-containers/main.go:38:2
dst = flag.String("dst", "", "Destination image") max = flag.Int("max", 0, "Maximum number of tags to sync (0 for all tags)") dryRun = flag.Bool("dry-run", true, "Don't actually sync anything")client/web/web_test.go1
839:72redundant-conversion
client/web/web_test.go:839:72
user := &tailcfg.UserProfile{LoginName: "user@example.com", ID: tailcfg.UserID(1)} otherUser := &tailcfg.UserProfile{LoginName: "user2@example.com", ID: tailcfg.UserID(2)} self := &ipnstate.PeerStatus{util/set/smallset.go1
139:2redundant-final-return
util/set/smallset.go:139:2
} return}license_test.go1
62:3single-case-switch
license_test.go:62:3
} switch base { case "zsyscall_windows.go":cmd/k8s-operator/operator.go1
904:3slice-preallocation
cmd/k8s-operator/operator.go:904:3
reqs := make([]reconcile.Request, 0) seenSvcs := make(set.Set[string])client/tailscale/acl.go2
131:46standard-http-method-constant
client/tailscale/acl.go:131:46
path := c.BuildTailnetURL("acl", url.Values{"details": {"1"}}) req, err := http.NewRequestWithContext(ctx, "GET", path, nil) if err != nil {352:2task-comment
client/tailscale/acl.go:352:2
// If status code was not successful, return the error. // TODO: Change the check for the StatusCode to include other 2XX success codes. if resp.StatusCode != http.StatusOK {client/tailscale/routes.go1
55:1top-level-declaration-order
client/tailscale/routes.go:55:1
type postRoutesParams struct { Routes []netip.Prefix `json:"routes"`cmd/natc/ippool/consensusippool.go1
188:24unchecked-type-assertion
cmd/natc/ippool/consensusippool.go:188:24
func (ipp *ConsensusIPPool) StopConsensus(ctx context.Context) error { return (ipp.consensus).(*tsconsensus.Consensus).Stop(ctx)}net/netcheck/netcheck.go1
1092:7unclosed-http-response-body
net/netcheck/netcheck.go:1092:7
t0 := c.timeNow() if r, err := http.DefaultClient.Do(req); err != nil || r.StatusCode > 299 { if err != nil {ipn/desktop/sessions_windows.go1
633:2unexported-naming
ipn/desktop/sessions_windows.go:633:2
_WM_CLOSE = 16 _WM_NCCREATE = 129 _WM_QUIT = 18ipn/ipnlocal/extension_host_test.go1
1317:59unexported-return
ipn/ipnlocal/extension_host_test.go:1317:59
// It fails the test if the host is already initialized.func (h *ExtensionHost) SetWorkQueueForTest(t *testing.T) *testExecQueue { t.Helper()safesocket/basic_test.go1
25:10unnecessary-format
safesocket/basic_test.go:25:10
} else { sock = fmt.Sprintf(`\\.\pipe\tailscale-test`) t.Cleanup(downgradeSDDL())envknob/envknob.go1
309:2unreachable-code
envknob/envknob.go:309:2
log.Fatalf("invalid boolean environment variable %s value %q", envVar, val) panic("unreachable")}cmd/containerboot/serve_test.go1
204:42unused-parameter
cmd/containerboot/serve_test.go:204:42
func (m *fakeLocalClient) SetServeConfig(ctx context.Context, cfg *ipn.ServeConfig) error { m.setServeCalled = truecmd/derper/bootstrap_dns_test.go1
38:7unused-receiver
cmd/derper/bootstrap_dns_test.go:38:7
func (b *bitbucketResponseWriter) Header() http.Header { return make(http.Header) }tempfork/gliderlabs/ssh/session_test.go1
410:24use-any
tempfork/gliderlabs/ssh/session_test.go:410:24
// doneChan lets us specify that we should exit. doneChan := make(chan interface{})client/web/web.go1
180:15use-errors-new
client/web/web.go:180:15
case "": return nil, fmt.Errorf("must specify a Mode") default:feature/taildrop/taildrop.go1
205:2use-slices-sort
feature/taildrop/taildrop.go:205:2
sort.Slice(files, func(i, j int) bool { return files[i].Started.Before(files[j].Started)control/controlbase/noiseexplorer_test.go1
143:31var-naming
control/controlbase/noiseexplorer_test.go:143:31
func dh(private_key [32]byte, public_key [32]byte) [32]byte { var ss [32]byteappc/appconnector_test.go1
375:28add-constant
appc/appconnector_test.go:375:28
a.updateDomains([]string{"*.example.com", "example.com"}) if _, ok := a.domains["foo.example.com"]; !ok {feature/condregister/maybe_clientupdate.go1
8:8blank-imports
feature/condregister/maybe_clientupdate.go:8:8
import _ "tailscale.com/feature/clientupdate"ipn/serve_test.go1
285:7boolean-literal-comparison
ipn/serve_test.go:285:7
if tt.wantErr == true && err == nil { t.Errorf("Expected an error but got none")appc/appconnector_test.go1
748:6cognitive-complexity
appc/appconnector_test.go:748:6
func TestRateLogger(t *testing.T) { clock := tstest.Clock{}derp/derpserver/derpserver.go1
911:18confusing-naming
derp/derpserver/derpserver.go:911:18
func (s *Server) accept(ctx context.Context, nc derp.Conn, brw *bufio.ReadWriter, remoteAddr string, connNum int64) error { br := brw.Readercontrol/controlbase/noiseexplorer_test.go1
197:60confusing-results
control/controlbase/noiseexplorer_test.go:197:60
func getHkdf(ck [32]byte, ikm []byte) ([32]byte, [32]byte, [32]byte) { var k1 [32]bytetempfork/sshtest/ssh/keys.go1
1074:6constructor-interface-return
tempfork/sshtest/ssh/keys.go:1074:6
// example, with keys kept in hardware modules.func NewSignerFromSigner(signer crypto.Signer) (Signer, error) { pubKey, err := NewPublicKey(signer.Public())tsconsensus/tsconsensus_test.go1
174:55context-as-argument
tsconsensus/tsconsensus_test.go:174:55
func waitForNodesToBeTaggedInStatus(t testing.TB, ctx context.Context, ts *tsnet.Server, nodeKeys []key.NodePublic, tag string) { t.Helper()ipn/auditlog/auditlog.go1
98:2context-stored-in-struct
ipn/auditlog/auditlog.go:98:2
done chan struct{} // closed when the flush worker exits. ctx context.Context // canceled when the logger is stopped. ctxCancel context.CancelFunc // cancels ctx.client/web/web.go1
725:18cyclomatic-complexity
client/web/web.go:725:18
// and returns an authResponse indicating the current auth state and any steps the user needs to take.func (s *Server) serveAPIAuth(w http.ResponseWriter, r *http.Request) { var resp authResponsecmd/connector-gen/aws.go1
58:3deep-exit
cmd/connector-gen/aws.go:58:3
if err != nil { log.Fatal(err) }cmd/k8s-operator/tsrecorder.go1
32:2deprecated-api-usage
cmd/k8s-operator/tsrecorder.go:32:2
"sigs.k8s.io/controller-runtime/pkg/reconcile" "tailscale.com/client/tailscale" tsoperator "tailscale.com/k8s-operator"atomicfile/atomicfile.go1
33:4discarded-error-result
atomicfile/atomicfile.go:33:4
if err != nil { f.Close() os.Remove(tmpName)cmd/k8s-operator/metrics_resources.go1
39:1doc-comment-period
cmd/k8s-operator/metrics_resources.go:39:1
// Duplicating it here allows us to avoid importing prometheus-operator library.// https://github.com/prometheus-operator/prometheus-operator/blob/bb4514e0d5d69f20270e29cfd4ad39b87865ccdf/pkg/apis/monitoring/v1/servicemonitor_types.go#L40type ServiceMonitor struct {cmd/k8s-operator/svc-for-pg.go1
118:3early-return
cmd/k8s-operator/svc-for-pg.go:118:3
if err != nil { if strings.Contains(err.Error(), optimisticLockErrorMsg) { logger.Infof("optimistic lock error, retrying: %s", err)tempfork/sshtest/ssh/messages.go1
693:26empty-conditional-block
tempfork/sshtest/ssh/messages.go:693:26
length += (bitLen + 7) / 8 } else if n.Sign() == 0 { // A zero is the zero length stringfeature/tap/tap_linux.go1
119:2enforce-switch-style
feature/tap/tap_linux.go:119:2
switch et { default: if tapDebug {appc/appconnector_test.go1
365:13error-strings
appc/appconnector_test.go:365:13
if err := a.ObserveDNSResponse(dnsResponse("foo.example.com.", "192.0.0.8")); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }tempfork/sshtest/ssh/messages.go1
40:6error-type-naming
tempfork/sshtest/ssh/messages.go:40:6
// the error type returned from mux.Wait()type disconnectMsg struct { Reason uint32 `sshtype:"1"`tempfork/sshtest/ssh/certs_test.go1
238:4excessive-blank-identifiers
tempfork/sshtest/ssh/certs_test.go:238:4
} _, _, _, err := NewServerConn(c1, &conf) errc <- errappc/appctest/appctest.go1
56:27exported-declaration-comment
appc/appctest/appctest.go:56:27
// possible duplicates.func (rc *RouteCollector) Routes() []netip.Prefix { return rc.routescmd/containerboot/egressservices.go1
1:1file-length-limit
cmd/containerboot/egressservices.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/k8s-operator/sts.go1
959:55flag-parameter
cmd/k8s-operator/sts.go:959:55
func enableEndpoints(ss *appsv1.StatefulSet, metrics, debug bool) { for i, c := range ss.Spec.Template.Spec.Containers {chirp/chirp.go1
1:1format
chirp/chirp.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt chirp/chirp.go`
client/web/web_test.go1
260:6function-length
client/web/web_test.go:260:6
func TestGetTailscaleBrowserSession(t *testing.T) { userA := &tailcfg.UserProfile{ID: tailcfg.UserID(1)}k8s-operator/sessionrecording/ws/message.go1
206:6function-result-limit
k8s-operator/sessionrecording/ws/message.go:206:6
// fragmentDimensions returns payload length as well as payload offset and mask offset.func fragmentDimensions(b []byte, maskSet bool) (payloadLength, payloadOffset, maskOffset uint64, _ error) {cmd/tailscale/cli/cli_test.go1
942:3identical-switch-branches
cmd/tailscale/cli/cli_test.go:942:3
continue case "WantRunning", "Persist", "LoggedOut": // All explicitly handled (ignored) by checkForAccidentalSettingReverts.client/web/web.go1
1250:6import-shadowing
client/web/web.go:1250:6
} if url := n.BrowseToURL; url != nil && printAuthURL(*url) { return *url, nilssh/tailssh/incubator.go1
1022:5inefficient-map-lookup
ssh/tailssh/incubator.go:1022:5
if _, ok := tios.CC[k]; ok { tios.CC[k] = uint8(v) continuetempfork/acme/acme_test.go1
630:12inefficient-sprintf
tempfork/acme/acme_test.go:630:12
for i := 0; i < maxNonces; i++ { c.nonces[fmt.Sprintf("%d", i)] = struct{}{} }client/tailscale/tailscale_test.go1
12:23insecure-url-scheme
client/tailscale/tailscale_test.go:12:23
func TestClientBuildURL(t *testing.T) { c := Client{BaseURL: "http://127.0.0.1:1234"} for _, tt := range []struct {tstime/mono/mono.go1
115:7marshal-receiver
tstime/mono/mono.go:115:7
// across different invocations of the Go process. This is best-effort only.func (t *Time) UnmarshalJSON(data []byte) error { var tt time.Timecmd/containerboot/main.go1
556:7max-control-nesting
cmd/containerboot/main.go:556:7
var rulesInstalled bool for _, egressAddr := range egressAddrs { ea := egressAddr.Addr()cmd/viewer/tests/tests.go1
72:6max-public-structs
cmd/viewer/tests/tests.go:72:6
type OnlyGetClone struct { SinViewerPorFavor boolclient/web/web.go1
1361:3modifies-parameter
client/web/web.go:1361:3
if !strings.HasPrefix(prefix, "/") { prefix = "/" + prefix }net/dns/manager_linux_test.go1
343:2modifies-value-receiver
net/dns/manager_linux_test.go:343:2
func (m memFS) WriteFile(name string, contents []byte, perm os.FileMode) error { m[name] = string(contents) return nilclient/local/tailnetlock.go1
164:8nested-structs
client/local/tailnetlock.go:164:8
func (lc *Client) NetworkLockGenRecoveryAUM(ctx context.Context, removeKeys []tkatype.KeyID, forkFrom tka.AUMHash) ([]byte, error) { vr := struct { Keys []tkatype.KeyIDcmd/k8s-operator/ingress-for-pg.go1
168:3nil-error-return
cmd/k8s-operator/ingress-for-pg.go:168:3
logger.Infof("error validating tailscale IngressClass: %v.", err) return false, nil }control/controlhttp/http_test.go1
275:4nil-value-with-nil-error
control/controlhttp/http_test.go:275:4
a.proxyFunc = func(*http.Request) (*url.URL, error) { return nil, nil }feature/taildrop/resume_test.go1
56:4no-defer-in-loop
feature/taildrop/resume_test.go:56:4
must.Do(err) defer close() offset, r, err := resumeReader(r, next)clientupdate/clientupdate.go1
453:4no-else-after-return
clientupdate/clientupdate.go:453:4
return err } else if updated { up.Logf("Updated %s to use the %s track", aptSourcesFile, up.Track)cmd/tailscale/cli/configure-synology-cert.go1
27:6no-init
cmd/tailscale/cli/configure-synology-cert.go:27:6
func init() { maybeConfigSynologyCertCmd = synologyConfigureCertCmdcmd/stunstamp/stunstamp.go1
568:4no-naked-return
cmd/stunstamp/stunstamp.go:568:4
if err != nil { return }client/systray/logo.go1
53:2no-package-var
client/systray/logo.go:53:2
// but indicates that the loading animation should be shown. loading = tsLogo{dots: [9]byte{'l', 'o', 'a', 'd', 'i', 'n', 'g'}}tempfork/sshtest/ssh/ssh_gss.go1
118:3overwritten-before-use
tempfork/sshtest/ssh/ssh_gss.go:118:3
) desiredMech, rest, ok = parseString(rest) if !ok {client/local/tailnetlock.go1
6:9package-comments
client/local/tailnetlock.go:6:9
package localversion_tailscale_test.go1
6:9package-directory-mismatch
version_tailscale_test.go:6:9
package tailscalerootcmd/containerboot/kube_test.go1
301:10range-value-address
cmd/containerboot/kube_test.go:301:10
var actual map[string][]byte kc := &kubeClient{stateSecret: "foo", Client: &kubeclient.FakeClient{ GetSecretImpl: func(context.Context, string) (*kubeapi.Secret, error) {cmd/k8s-operator/sts.go1
620:7receiver-naming
cmd/k8s-operator/sts.go:620:7
func (a *tailscaleSTSReconciler) reconcileSTS(ctx context.Context, logger *zap.SugaredLogger, sts *tailscaleSTSConfig, headlessSvc *corev1.Service, proxySecrets []string) (*appsv1.StatefulSet, error) { ss := new(appsv1.StatefulSet)cmd/tailscale/cli/file.go1
204:2redefines-builtin-id
cmd/tailscale/cli/file.go:204:2
var prevContentCount int64 print := func() { currContentCount := contentCount()client/web/web_test.go1
1212:73redundant-conversion
client/web/web_test.go:1212:73
func TestPeerCapabilities(t *testing.T) { userOwnedStatus := &ipnstate.Status{Self: &ipnstate.PeerStatus{UserID: tailcfg.UserID(1)}} tags := views.SliceOf[string]([]string{"tag:server"})wgengine/magicsock/magicsock.go1
2452:2redundant-final-return
wgengine/magicsock/magicsock.go:2452:2
} return}net/dns/resolver/tsdns_test.go1
208:4single-case-switch
net/dns/resolver/tsdns_test.go:208:4
} switch ah.Name.String() { case "query-info.test.":cmd/k8s-operator/operator.go1
945:3slice-preallocation
cmd/k8s-operator/operator.go:945:3
reqs := make([]reconcile.Request, 0) seenIngs := make(set.Set[string])client/tailscale/acl.go1
189:46standard-http-method-constant
client/tailscale/acl.go:189:46
path := c.BuildTailnetURL("acl") req, err := http.NewRequestWithContext(ctx, "POST", path, bytes.NewBuffer(body)) if err != nil {client/tailscale/devices.go1
101:1task-comment
client/tailscale/devices.go:101:1
//// TODO: Support other DeviceFieldsOpts.// In the future, users should be able to create their own DeviceFieldsOptsclient/tailscale/tailscale.go1
30:1top-level-declaration-order
client/tailscale/tailscale.go:30:1
const defaultAPIBase = "https://api.tailscale.com"cmd/natc/ippool/consensusippool_test.go1
38:15unchecked-type-assertion
cmd/natc/ippool/consensusippool_test.go:38:15
result := c.ipp.Apply(&raft.Log{Data: b}) return result.(tsconsensus.CommandResult), nil}net/proxymux/mux_test.go1
85:2unclosed-http-response-body
net/proxymux/mux_test.go:85:2
s.t.Helper() resp, err := c.Get(s.targetURL) if wantErr {ipn/desktop/sessions_windows.go1
634:2unexported-naming
ipn/desktop/sessions_windows.go:634:2
_WM_NCCREATE = 129 _WM_QUIT = 18 _WM_NCDESTROY = 130net/dns/noop.go1
15:24unexported-return
net/dns/noop.go:15:24
func NewNoopManager() (noopManager, error) { return noopManager{}, nilssh/tailssh/tailssh.go1
744:4unnecessary-format
ssh/tailssh/tailssh.go:744:4
s.cancelCtx(userVisibleError{ fmt.Sprintf("Access revoked.\r\n"), context.Canceled,envknob/envknob.go1
340:2unreachable-code
envknob/envknob.go:340:2
log.Fatalf("invalid integer environment variable %s: %v", envVar, val) panic("unreachable")}cmd/containerboot/serve_test.go1
204:63unused-parameter
cmd/containerboot/serve_test.go:204:63
func (m *fakeLocalClient) SetServeConfig(ctx context.Context, cfg *ipn.ServeConfig) error { m.setServeCalled = truecmd/derper/bootstrap_dns_test.go1
40:7unused-receiver
cmd/derper/bootstrap_dns_test.go:40:7
func (b *bitbucketResponseWriter) Write(p []byte) (int, error) { return len(p), nil }tempfork/sshtest/ssh/channel.go1
174:11use-any
tempfork/sshtest/ssh/channel.go:174:11
// Pending internal channel messages. msg chan interface{}client/web/web.go1
182:15use-errors-new
client/web/web.go:182:15
default: return nil, fmt.Errorf("invalid Mode provided") }ipn/auditlog/auditlog.go1
393:2use-slices-sort
ipn/auditlog/auditlog.go:393:2
// the front of the queue. sort.Slice(deduped, func(i, j int) bool { return deduped[i].TimeStamp.Before(deduped[j].TimeStamp)control/controlbase/noiseexplorer_test.go1
150:6var-naming
control/controlbase/noiseexplorer_test.go:150:6
func generateKeypair() keypair { var public_key [32]byte var private_key [32]byteappc/appconnector_test.go1
548:49add-constant
appc/appconnector_test.go:548:49
// one route the same, one different a.UpdateDomainsAndRoutes([]string{}, prefixes("1.2.3.1/32", "1.2.3.3/32")) a.Wait(ctx)feature/condregister/maybe_debugportmapper.go1
8:8blank-imports
feature/condregister/maybe_debugportmapper.go:8:8
import _ "tailscale.com/feature/debugportmapper"ipn/serve_test.go1
290:7boolean-literal-comparison
ipn/serve_test.go:290:7
if tt.wantErr == false && err != nil { t.Errorf("Got an error, but didn't expect one: %v", err)appc/observe.go1
20:24cognitive-complexity
appc/observe.go:20:24
// advised to advertise the discovered route.func (e *AppConnector) ObserveDNSResponse(res []byte) error { var p dnsmessage.Parserdoctor/doctor.go1
78:20confusing-naming
doctor/doctor.go:78:20
func (c checkFunc) Name() string { return c.name }func (c checkFunc) Run(ctx context.Context, log logger.Logf) error { return c.run(ctx, log) }control/controlbase/noiseexplorer_test.go1
282:46confusing-results
control/controlbase/noiseexplorer_test.go:282:46
func split(ss *symmetricstate) (cipherstate, cipherstate) { tempK1, tempK2, _ := getHkdf(ss.ck, []byte{})wgengine/router/router_fake.go1
12:6constructor-interface-return
wgengine/router/router_fake.go:12:6
// returns nil errors.func NewFake(logf logger.Logf) Router { return fakeRouter{logf: logf}tsconsensus/tsconsensus_test.go1
295:55context-as-argument
tsconsensus/tsconsensus_test.go:295:55
// LocalClient Status calls that show the first node as Online.func startNodesAndWaitForPeerStatus(t testing.TB, ctx context.Context, clusterTag string, nNodes int) ([]*participant, *testcontrol.Server, string) { t.Helper()ipn/ipnauth/actor.go1
114:2context-stored-in-struct
ipn/ipnauth/actor.go:114:2
Actor ctx context.Context}client/web/web.go1
934:18cyclomatic-complexity
client/web/web.go:934:18
func (s *Server) serveGetNodeData(w http.ResponseWriter, r *http.Request) { st, err := s.lc.Status(r.Context())cmd/connector-gen/github.go1
49:3deep-exit
cmd/connector-gen/github.go:49:3
if err != nil { log.Fatal(err) }cmd/netlogfmt/main.go1
200:15deprecated-api-usage
cmd/netlogfmt/main.go:200:15
if cc.Proto > 0 { row[0] += cc.Proto.String() + ":" }atomicfile/atomicfile.go1
34:4discarded-error-result
atomicfile/atomicfile.go:34:4
f.Close() os.Remove(tmpName) }cmd/k8s-operator/metrics_resources.go1
46:1doc-comment-period
cmd/k8s-operator/metrics_resources.go:46:1
// https://github.com/prometheus-operator/prometheus-operator/blob/bb4514e0d5d69f20270e29cfd4ad39b87865ccdf/pkg/apis/monitoring/v1/servicemonitor_types.go#L55type ServiceMonitorSpec struct {cmd/k8s-operator/svc.go1
127:3early-return
cmd/k8s-operator/svc.go:127:3
if err := a.maybeProvision(ctx, logger, svc); err != nil { if strings.Contains(err.Error(), optimisticLockErrorMsg) { logger.Infof("optimistic lock error, retrying: %s", err)tempfork/sshtest/ssh/messages.go1
741:26empty-conditional-block
tempfork/sshtest/ssh/messages.go:741:26
length += nBytes } else if n.Sign() == 0 { // A zero is the zero length stringipn/ipnlocal/peerapi.go1
786:2enforce-switch-style
ipn/ipnlocal/peerapi.go:786:2
switch r.Method { default: return nil, "bad HTTP method"appc/appconnector_test.go1
615:14error-strings
appc/appconnector_test.go:615:14
if err := a.ObserveDNSResponse(res); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }util/syspolicy/setting/errors.go1
38:6error-type-naming
util/syspolicy/setting/errors.go:38:6
// type information of the underlying error.type ErrorText stringtempfork/sshtest/ssh/certs_test.go1
247:3excessive-blank-identifiers
tempfork/sshtest/ssh/certs_test.go:247:3
} _, _, _, err = NewClientConn(c2, test.addr, config)appc/appctest/appctest.go1
60:27exported-declaration-comment
appc/appctest/appctest.go:60:27
func (rc *RouteCollector) SetRoutes(routes []netip.Prefix) error { rc.routes = routescmd/containerboot/main.go1
1:1file-length-limit
cmd/containerboot/main.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/k8s-operator/svc-for-pg.go1
651:185flag-parameter
cmd/k8s-operator/svc-for-pg.go:651:185
func (a *HAServiceReconciler) maybeUpdateAdvertiseServicesConfig(ctx context.Context, svc *corev1.Service, pgName string, serviceName tailcfg.ServiceName, cfg *ingressservices.Config, shouldBeAdvertised bool, logger *zap.SugaredLogger) (err error) { logger.Debugf("checking advertisement for service '%s'", serviceName)client/local/local.go1
1:1format
client/local/local.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt client/local/local.go`
client/web/web_test.go1
439:6function-length
client/web/web_test.go:439:6
// 2023-10-18: These tests currently cover tailscale auth mode (not platform auth).func TestAuthorizeRequest(t *testing.T) { // Create self and remoteNode owned by same user.net/dnscache/dnscache.go1
194:20function-result-limit
net/dnscache/dnscache.go:194:20
// with a nil error.func (r *Resolver) LookupIP(ctx context.Context, host string) (ip, v6 netip.Addr, allIPs []netip.Addr, err error) { if r.SingleHostStaticResult != nil {cmd/tailscale/cli/cli_test.go1
945:3identical-switch-branches
cmd/tailscale/cli/cli_test.go:945:3
continue case "OSVersion", "DeviceModel": // Only used by Android, which doesn't have a CLI mode anyway, soclient/web/web.go1
1286:2import-shadowing
client/web/web.go:1286:2
s.logf("tailscaleUp(reauth=%v) ...", opt.Reauthenticate) url, err := s.tailscaleUp(r.Context(), st, opt) s.logf("tailscaleUp = (URL %v, %v)", url != "", err)ssh/tailssh/incubator.go1
1026:5inefficient-map-lookup
ssh/tailssh/incubator.go:1026:5
if _, ok := tios.Opts[k]; ok { tios.Opts[k] = v > 0 continuetsconsensus/authorization_test.go1
31:30inefficient-sprintf
tsconsensus/authorization_test.go:31:30
return &ipnstate.PeerStatus{ ID: tailcfg.StableNodeID(fmt.Sprintf("%d", i)), Tags: &tags,client/tailscale/tailscale_test.go1
21:14insecure-url-scheme
client/tailscale/tailscale_test.go:21:14
elements: []any{"devices"}, want: "http://127.0.0.1:1234/api/v2/devices", },tstime/tstime.go1
216:7marshal-receiver
tstime/tstime.go:216:7
func (d *GoDuration) UnmarshalText(b []byte) error { d2, err := time.ParseDuration(string(b))cmd/containerboot/main.go1
558:8max-control-nesting
cmd/containerboot/main.go:558:8
ea := egressAddr.Addr() if ea.Is4() || (ea.Is6() && nfr.HasIPV6NAT()) { rulesInstalled = truecmd/viewer/tests/tests.go1
76:6max-public-structs
cmd/viewer/tests/tests.go:76:6
type StructWithEmbedded struct { A *StructWithPtrsclient/web/web.go1
1364:3modifies-parameter
client/web/web.go:1364:3
if !strings.HasSuffix(prefix, "/") { prefix += "/" }net/packet/icmp4.go1
75:2modifies-value-receiver
net/packet/icmp4.go:75:2
// The caller does not need to set this. h.IPProto = ipproto.ICMPv4client/systray/systray.go1
101:18nested-structs
client/systray/systray.go:101:18
rebuildCh chan struct{} // triggers a menu rebuild accountsCh chan ipn.ProfileIDcmd/k8s-operator/ingress-for-pg.go1
182:4nil-error-return
cmd/k8s-operator/ingress-for-pg.go:182:4
logger.Infof("ProxyGroup does not exist") return false, nil }control/controlhttp/http_test.go1
792:65nil-value-with-nil-error
control/controlhttp/http_test.go:792:65
DialPlan: plan, proxyFunc: func(*http.Request) (*url.URL, error) { return nil, nil }, omitCertErrorLogging: true,health/health_test.go1
58:3no-defer-in-loop
health/health_test.go:58:3
}) defer unregister(w) if i%2 == 0 {clientupdate/clientupdate.go1
599:5no-else-after-return
clientupdate/clientupdate.go:599:5
return err } else if updated { up.Logf("Updated %s to use the %s track", yumRepoConfigFile, up.Track)cmd/tailscale/cli/configure_apple.go1
15:6no-init
cmd/tailscale/cli/configure_apple.go:15:6
func init() { maybeSysExtCmd = sysExtCmdcmd/tailscale/cli/cli.go1
164:3no-naked-return
cmd/tailscale/cli/cli.go:164:3
}) return }client/systray/logo.go1
56:2no-package-var
client/systray/logo.go:56:2
// loadingIcons are shown in sequence as an animated loading icon. loadingLogos = []tsLogo{ {dots: [9]byte{tstest/integration/vms/vms_test.go1
599:3overwritten-before-use
tstest/integration/vms/vms_test.go:599:3
msg, err := sess.Output( fmt.Sprintf(client/systray/logo.go1
6:9package-comments
client/systray/logo.go:6:9
package systrayversion_test.go1
4:9package-directory-mismatch
version_test.go:4:9
package tailscalerootcmd/containerboot/kube_test.go1
301:10range-value-address
cmd/containerboot/kube_test.go:301:10
var actual map[string][]byte kc := &kubeClient{stateSecret: "foo", Client: &kubeclient.FakeClient{ GetSecretImpl: func(context.Context, string) (*kubeapi.Secret, error) {cmd/k8s-operator/svc-for-pg.go1
584:7receiver-naming
cmd/k8s-operator/svc-for-pg.go:584:7
func (a *HAServiceReconciler) backendRoutesSetup(ctx context.Context, serviceName, replicaName, pgName string, wantsCfg *ingressservices.Config, logger *zap.SugaredLogger) (bool, error) { logger.Debugf("checking backend routes for service '%s'", serviceName)cmd/tailscale/cli/serve_legacy.go1
736:36redefines-builtin-id
cmd/tailscale/cli/serve_legacy.go:736:36
func elipticallyTruncate(s string, max int) string { if len(s) <= max {client/web/web_test.go1
1233:43redundant-conversion
client/web/web_test.go:1233:43
whois: &apitype.WhoIsResponse{ UserProfile: &tailcfg.UserProfile{ID: tailcfg.UserID(2)}, Node: &tailcfg.Node{ID: tailcfg.NodeID(1)},net/neterror/neterror.go1
28:2single-case-switch
net/neterror/neterror.go:28:2
} switch runtime.GOOS { case "linux":cmd/k8s-operator/operator.go1
1330:2slice-preallocation
cmd/k8s-operator/operator.go:1330:2
} reqs := make([]reconcile.Request, 0) for _, ep := range epsList.Items {client/tailscale/acl.go1
333:46standard-http-method-constant
client/tailscale/acl.go:333:46
path := c.BuildTailnetURL("acl", "preview") req, err := http.NewRequestWithContext(ctx, "POST", path, bytes.NewBuffer(body)) if err != nil {client/tailscale/devices.go1
157:2task-comment
client/tailscale/devices.go:157:2
// If status code was not successful, return the error. // TODO: Change the check for the StatusCode to include other 2XX success codes. if resp.StatusCode != http.StatusOK {client/web/auth.go1
73:1top-level-declaration-order
client/web/auth.go:73:1
var ( errNoSession = errors.New("no-browser-session")cmd/natc/ippool/consensusippool_test.go1
278:17unchecked-type-assertion
cmd/natc/ippool/consensusippool_test.go:278:17
} snap := fsmSnap.(fsmSnapshot)prober/prober_test.go1
733:4unclosed-http-response-body
prober/prober_test.go:733:4
resp, err := http.DefaultClient.Do(req) if err != nil {ipn/desktop/sessions_windows.go1
635:2unexported-naming
ipn/desktop/sessions_windows.go:635:2
_WM_QUIT = 18 _WM_NCDESTROY = 130net/netmon/netmon_darwin.go1
54:37unexported-return
net/netmon/netmon_darwin.go:54:37
func (m *darwinRouteMon) Receive() (message, error) { for {tempfork/acme/types.go1
115:10unnecessary-format
tempfork/acme/types.go:115:10
if len(e.Subproblems) > 0 { str += fmt.Sprintf("; subproblems:") for _, sp := range e.Subproblems {envknob/envknob.go1
360:2unreachable-code
envknob/envknob.go:360:2
log.Fatalf("invalid integer environment variable %s: %v", envVar, val) panic("unreachable")}cmd/containerboot/serve_test.go1
209:36unused-parameter
cmd/containerboot/serve_test.go:209:36
func (m *fakeLocalClient) CertPair(ctx context.Context, domain string) (certPEM, keyPEM []byte, err error) { return nil, nil, nilcmd/derper/bootstrap_dns_test.go1
42:7unused-receiver
cmd/derper/bootstrap_dns_test.go:42:7
func (b *bitbucketResponseWriter) WriteHeader(statusCode int) {}tempfork/sshtest/ssh/channel.go1
222:36use-any
tempfork/sshtest/ssh/channel.go:222:36
func (ch *channel) sendMessage(msg interface{}) error { if debugMux {client/web/web.go1
210:16use-errors-new
client/web/web.go:210:16
if opts.NewAuthURL == nil { return nil, fmt.Errorf("must provide a NewAuthURL implementation") }ipn/ipnstate/ipnstate.go1
196:2use-slices-sort
ipn/ipnstate/ipnstate.go:196:2
} sort.Slice(kk, func(i, j int) bool { return kk[i].Less(kk[j]) }) return kkcontrol/controlbase/noiseexplorer_test.go1
151:6var-naming
control/controlbase/noiseexplorer_test.go:151:6
var public_key [32]byte var private_key [32]byte _, _ = rand.Read(private_key[:])appc/appconnector_test.go1
553:40add-constant
appc/appconnector_test.go:553:40
// the real one does) wantRoutes := prefixes("1.2.3.1/32", "1.2.3.2/32", "1.2.3.1/32", "1.2.3.3/32") wantRemovedRoutes := []netip.Prefix{}feature/condregister/maybe_doctor.go1
8:8blank-imports
feature/condregister/maybe_doctor.go:8:8
import _ "tailscale.com/feature/doctor"net/tstun/wrap.go1
1050:5boolean-literal-comparison
net/tstun/wrap.go:1050:5
} if gso.NeedsCsum != true { returnatomicfile/atomicfile.go1
21:6cognitive-complexity
atomicfile/atomicfile.go:21:6
// filename already exists but is not a regular file, WriteFile returns an error.func WriteFile(filename string, data []byte, perm os.FileMode) (err error) { fi, err := os.Stat(filename)doctor/doctor.go1
79:20confusing-naming
doctor/doctor.go:79:20
func (c checkFunc) Name() string { return c.name }func (c checkFunc) Run(ctx context.Context, log logger.Logf) error { return c.run(ctx, log) }control/controlbase/noiseexplorer_test.go1
329:95confusing-results
control/controlbase/noiseexplorer_test.go:329:95
func writeMessageB(hs *handshakestate, payload []byte) ([32]byte, messagebuffer, cipherstate, cipherstate) { ne, ns, ciphertext := emptyKey, []byte{}, []byte{}wgengine/userspace.go1
284:6constructor-interface-return
wgengine/userspace.go:284:6
// Tailscale Engine running on it.func NewUserspaceEngine(logf logger.Logf, conf Config) (_ Engine, reterr error) { var closePool closeOnErrorPooltsconsensus/tsconsensus_test.go1
333:47context-as-argument
tsconsensus/tsconsensus_test.go:333:47
// become leader before adding other nodes.func createConsensusCluster(t testing.TB, ctx context.Context, clusterTag string, participants []*participant, cfg Config) { t.Helper()ipn/ipnauth/test_actor.go1
22:2context-stored-in-struct
ipn/ipnauth/test_actor.go:22:2
CID ClientID // non-zero if the actor represents a connected LocalAPI client Ctx context.Context // context associated with the actor LocalSystem bool // whether the actor represents the special Local System account on Windowsclient/web/web.go1
1177:18cyclomatic-complexity
client/web/web.go:1177:18
// If reauthentication has been requested, an authURL is returned to complete device registration.func (s *Server) tailscaleUp(ctx context.Context, st *ipnstate.Status, opt tailscaleUpOptions) (authURL string, retErr error) { origAuthURL := st.AuthURLcmd/connector-gen/github.go1
55:3deep-exit
cmd/connector-gen/github.go:55:3
if err := json.NewDecoder(r.Body).Decode(&ghm); err != nil { log.Fatal(err) }cmd/tailscale/cli/cert.go1
206:9deprecated-api-usage
cmd/tailscale/cli/cert.go:206:9
// fighting Windows. return pkcs12.Encode(rand.Reader, cert.PrivateKey, certs[0], certs[1:], "" /* no password */)}atomicfile/atomicfile_test.go1
27:22discarded-error-result
atomicfile/atomicfile_test.go:27:22
path = filepath.Join("/tmp", filename) t.Cleanup(func() { os.Remove(path) }) } else {cmd/k8s-operator/metrics_resources.go1
67:1doc-comment-period
cmd/k8s-operator/metrics_resources.go:67:1
// this ServiceMonitor.// https://github.com/prometheus-operator/prometheus-operator/blob/bb4514e0d5d69f20270e29cfd4ad39b87865ccdf/pkg/apis/monitoring/v1/servicemonitor_types.go#L88type ServiceMonitorNamespaceSelector struct {cmd/k8s-operator/tsrecorder.go1
270:4early-return
cmd/k8s-operator/tsrecorder.go:270:4
if err := r.Delete(ctx, &sa); err != nil { if apierrors.IsNotFound(err) { logger.Debugf("ServiceAccount %s not found, likely already deleted", sa.Name)util/singleflight/singleflight.go1
269:32empty-conditional-block
util/singleflight/singleflight.go:269:32
} } else if c.err == errGoexit { // Already in the process of goexit, no need to call againipn/ipnlocal/ssh.go1
169:2enforce-switch-style
ipn/ipnlocal/ssh.go:169:2
switch typ { default: return nil, fmt.Errorf("unsupported key type %q", typ)appc/appconnector_test.go1
696:14error-strings
appc/appconnector_test.go:696:14
if err := a.ObserveDNSResponse(res); err != nil { t.Errorf("ObserveDNSResponse: %v", err) }tempfork/sshtest/ssh/certs_test.go1
358:4excessive-blank-identifiers
tempfork/sshtest/ssh/certs_test.go:358:4
_, _, _, err = NewClientConn(c2, "", config) if err != nil {appc/observe.go1
20:24exported-declaration-comment
appc/observe.go:20:24
// advised to advertise the discovered route.func (e *AppConnector) ObserveDNSResponse(res []byte) error { var p dnsmessage.Parsercmd/containerboot/main_test.go1
1:1file-length-limit
cmd/containerboot/main_test.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clausecmd/k8s-operator/tsrecorder_test.go1
233:86flag-parameter
cmd/k8s-operator/tsrecorder_test.go:233:86
func expectRecorderResources(t *testing.T, fc client.WithWatch, tsr *tsapi.Recorder, shouldExist bool) { t.Helper()client/local/tailnetlock.go1
1:1format
client/local/tailnetlock.go:1:1
// Copyright (c) Tailscale Inc & AUTHORS// SPDX-License-Identifier: BSD-3-Clause- Fix (safe): run `strider fmt client/local/tailnetlock.go`
client/web/web_test.go1
531:6function-length
client/web/web_test.go:531:6
func TestServeAuth(t *testing.T) { user := &tailcfg.UserProfile{LoginName: "user@example.com", ID: tailcfg.UserID(1)}net/dnscache/dnscache.go1
252:20function-result-limit
net/dnscache/dnscache.go:252:20
func (r *Resolver) lookupIPCache(host string) (ip, ip6 netip.Addr, allIPs []netip.Addr, ok bool) { r.mu.Lock()cmd/tailscale/cli/cli_test.go1
949:3identical-switch-branches
cmd/tailscale/cli/cli_test.go:949:3
continue case "NotepadURLs": // TODO(bradfitz): https://github.com/tailscale/tailscale/issues/1830client/web/web.go1
1320:2import-shadowing
client/web/web.go:1320:2
func (s *Server) proxyRequestToLocalAPI(w http.ResponseWriter, r *http.Request) { path := strings.TrimPrefix(r.URL.Path, "/api/local") if r.URL.Path == path { // missing prefixtempfork/sshtest/ssh/session.go1
464:17inefficient-map-lookup
tempfork/sshtest/ssh/session.go:464:17
if _, ok := signals[Signal(wm.signal)]; ok { wm.status += signals[Signal(wm.signal)] }tsconsensus/tsconsensus_test.go1
349:26inefficient-sprintf
tsconsensus/tsconsensus_test.go:349:26
participants[i].sm = &fsm{} myCfg := addIDedLogger(fmt.Sprintf("%d", i), cfg) c, err := Start(ctx, participants[i].ts, participants[i].sm, BootstrapOpts{Tag: clusterTag}, myCfg)client/tailscale/tailscale_test.go1
26:14insecure-url-scheme
client/tailscale/tailscale_test.go:26:14
elements: []any{"tailnet", "example.com"}, want: "http://127.0.0.1:1234/api/v2/tailnet/example.com", },types/geo/point.go1
178:7marshal-receiver
types/geo/point.go:178:7
// an error is returned.func (p *Point) UnmarshalBinary(data []byte) error { if len(data) < 8 { // Two uint32s are 8 bytes longcmd/containerboot/main.go1
561:9max-control-nesting
cmd/containerboot/main.go:561:9
log.Printf("Installing forwarding rules for destination %v", ea.String()) if err := installEgressForwardingRule(ctx, ea.String(), addrs, nfr); err != nil { return fmt.Errorf("installing egress proxy rules for destination %s: %v", ea.String(), err)cmd/viewer/tests/tests.go1
81:6max-public-structs
cmd/viewer/tests/tests.go:81:6
type GenericIntStruct[T constraints.Integer] struct { Value Tclient/web/web.go1
1372:3modifies-parameter
client/web/web.go:1372:3
} prefix = strings.TrimSuffix(prefix, "/") http.StripPrefix(prefix, h).ServeHTTP(w, r)net/packet/icmp6.go1
78:2modifies-value-receiver
net/packet/icmp6.go:78:2
// The caller does not need to set this. h.IPProto = ipproto.ICMPv6client/systray/systray.go1
116:29nested-structs
client/systray/systray.go:116:29
menu.rebuildCh = make(chan struct{}, 1) menu.accountsCh = make(chan ipn.ProfileID)cmd/k8s-operator/ingress-for-pg.go1
195:3nil-error-return
cmd/k8s-operator/ingress-for-pg.go:195:3
r.recorder.Event(ing, corev1.EventTypeWarning, "InvalidIngressConfiguration", err.Error()) return false, nil }ipn/ipnlocal/cert_test.go1
350:5nil-value-with-nil-error
ipn/ipnlocal/cert_test.go:350:5
getCertPemWasCalled = true return nil, nil }metrics/metrics_test.go1
58:3no-defer-in-loop
metrics/metrics_test.go:58:3
} defer f.Close() t.Logf("fds for #%v = %v", i, CurrentFDs())clientupdate/clientupdate.go1
1141:4no-else-after-return
clientupdate/clientupdate.go:1141:4
return this, other, nil } else { return other, this, nilcmd/tailscale/cli/configure_linux.go1
17:6no-init
cmd/tailscale/cli/configure_linux.go:17:6
func init() { maybeSystrayCmd = systrayConfigCmdcmd/tailscale/cli/cli_test.go1
657:2no-naked-return
cmd/tailscale/cli/cli_test.go:657:2
fs.Parse(flagArgs) // populates args return}client/systray/logo.go1
135:2no-package-var
client/systray/logo.go:135:2
// exitNodeOnline is the Tailscale logo with an additional arrow overlay in the corner. exitNodeOnline = tsLogo{ dots: [9]byte{util/topk/topk_test.go1
110:4overwritten-before-use
util/topk/topk_test.go:110:4
} out = topk.AppendTop(out[:0]) // should not allocate _ = out // appease linterclient/tailscale/acl.go1
6:9package-comments
client/tailscale/acl.go:6:9
package tailscalecmd/containerboot/kube_test.go1
301:50range-value-address
cmd/containerboot/kube_test.go:301:50
var actual map[string][]byte kc := &kubeClient{stateSecret: "foo", Client: &kubeclient.FakeClient{ GetSecretImpl: func(context.Context, string) (*kubeapi.Secret, error) {cmd/k8s-operator/svc-for-pg.go1
651:7receiver-naming
cmd/k8s-operator/svc-for-pg.go:651:7
func (a *HAServiceReconciler) maybeUpdateAdvertiseServicesConfig(ctx context.Context, svc *corev1.Service, pgName string, serviceName tailcfg.ServiceName, cfg *ingressservices.Config, shouldBeAdvertised bool, logger *zap.SugaredLogger) (err error) { logger.Debugf("checking advertisement for service '%s'", serviceName)control/controlbase/conn_test.go1
36:8redefines-builtin-id
control/controlbase/conn_test.go:36:8
// of the Noise spec). const max = 65535 if maxCiphertextSize > max {client/web/web_test.go1
1234:36redundant-conversion
client/web/web_test.go:1234:36
UserProfile: &tailcfg.UserProfile{ID: tailcfg.UserID(2)}, Node: &tailcfg.Node{ID: tailcfg.NodeID(1)}, CapMap: tailcfg.PeerCapMap{net/netmon/interfaces_windows.go1
160:3single-case-switch
net/netmon/interfaces_windows.go:160:3
ifs, err := getInterfaces(family, winipcfg.GAAFlagIncludeAllInterfaces, func(iface *winipcfg.IPAdapterAddresses) bool { switch iface.IfType { case winipcfg.IfTypeSoftwareLoopback:cmd/k8s-operator/operator.go1
1388:3slice-preallocation
cmd/k8s-operator/operator.go:1388:3
} reqs := make([]reconcile.Request, 0) for _, ing := range ingList.Items {client/tailscale/acl.go1
493:46standard-http-method-constant
client/tailscale/acl.go:493:46
path := c.BuildTailnetURL("acl", "validate") req, err := http.NewRequestWithContext(ctx, "POST", path, bytes.NewBuffer(postData)) if err != nil {client/tailscale/devices.go1
196:2task-comment
client/tailscale/devices.go:196:2
// If status code was not successful, return the error. // TODO: Change the check for the StatusCode to include other 2XX success codes. if resp.StatusCode != http.StatusOK {client/web/qnap.go1
35:1top-level-declaration-order
client/web/qnap.go:35:1
type qnapAuthResponse struct { AuthPassed int `xml:"authPassed"`cmd/natc/ippool/consensusippool_test.go1
330:17unchecked-type-assertion
cmd/natc/ippool/consensusippool_test.go:330:17
} snap := fsmSnap.(fsmSnapshot)prober/prober_test.go1
801:2unclosed-http-response-body
prober/prober_test.go:801:2
resp, err := http.DefaultClient.Do(req) if err != nil {ipn/desktop/sessions_windows.go1
641:2unexported-naming
ipn/desktop/sessions_windows.go:641:2
// https://web.archive.org/web/20250207012421/https://learn.microsoft.com/en-us/windows/win32/termserv/wm-wtssession-change _WM_WTSSESSION_CHANGE = 0x02B1)