diff --git a/.golangci.yml b/.golangci.yml index 7fcc9275b..9087d1a3d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -70,6 +70,12 @@ linters: # Rollback errors can be ignored - linters: [errcheck] source: Rollback + # Embedded fields named in selectors may add clarity + - linters: [staticcheck] + text: QF1008 + # Don't necessarily rewrite !(foo || bar) to !foo && !bar + - linters: [staticcheck] + text: QF1001 settings: sloglint: context: "scope" diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index 6618a77ec..766aa470c 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -659,13 +659,14 @@ func auditWriter(auditFile string) io.Writer { var auditDest string var auditFlags int - if auditFile == "-" { + switch auditFile { + case "-": fd = os.Stdout auditDest = "stdout" - } else if auditFile == "--" { + case "--": fd = os.Stderr auditDest = "stderr" - } else { + default: if auditFile == "" { auditFile = locations.GetTimestamped(locations.AuditLog) auditFlags = os.O_WRONLY | os.O_CREATE | os.O_EXCL diff --git a/lib/config/migrations.go b/lib/config/migrations.go index dcb811b65..603e9ee32 100644 --- a/lib/config/migrations.go +++ b/lib/config/migrations.go @@ -428,11 +428,12 @@ func migrateToConfigV12(cfg *Configuration) { var newDiscoServers []string var useDefault bool for _, addr := range cfg.Options.RawGlobalAnnServers { - if addr == "udp4://announce.syncthing.net:22026" { + switch addr { + case "udp4://announce.syncthing.net:22026": useDefault = true - } else if addr == "udp6://announce-v6.syncthing.net:22026" { + case "udp6://announce-v6.syncthing.net:22026": useDefault = true - } else { + default: newDiscoServers = append(newDiscoServers, addr) } } diff --git a/lib/connections/tcp_listen.go b/lib/connections/tcp_listen.go index 2944ca499..dfdf4ff2e 100644 --- a/lib/connections/tcp_listen.go +++ b/lib/connections/tcp_listen.go @@ -81,11 +81,12 @@ func (t *tcpListener) serve(ctx context.Context) error { defer slog.InfoContext(ctx, "TCP listener shutting down", slogutil.Address(tcaddr)) var ipVersion nat.IPVersion - if t.uri.Scheme == "tcp4" { + switch t.uri.Scheme { + case "tcp4": ipVersion = nat.IPv4Only - } else if t.uri.Scheme == "tcp6" { + case "tcp6": ipVersion = nat.IPv6Only - } else { + default: ipVersion = nat.IPvAny } mapping := t.natService.NewMapping(nat.TCP, ipVersion, tcaddr.IP, tcaddr.Port) diff --git a/lib/fs/filesystem.go b/lib/fs/filesystem.go index c5b1c9f3d..e579feec8 100644 --- a/lib/fs/filesystem.go +++ b/lib/fs/filesystem.go @@ -140,12 +140,12 @@ func (evType EventType) Merge(other EventType) EventType { } func (evType EventType) String() string { - switch { - case evType == NonRemove: + switch evType { + case NonRemove: return "non-remove" - case evType == Remove: + case Remove: return "remove" - case evType == Mixed: + case Mixed: return "mixed" default: panic("bug: Unknown event type") diff --git a/lib/upnp/igd_service.go b/lib/upnp/igd_service.go index 1d5477a87..1ab7baf9d 100644 --- a/lib/upnp/igd_service.go +++ b/lib/upnp/igd_service.go @@ -132,11 +132,12 @@ func (s *IGDService) AddPinhole(ctx context.Context, protocol nat.Protocol, intA func (s *IGDService) tryAddPinholeForIP6(ctx context.Context, protocol nat.Protocol, port int, duration time.Duration, ip net.IP) error { var protoNumber int - if protocol == nat.TCP { + switch protocol { + case nat.TCP: protoNumber = 6 - } else if protocol == nat.UDP { + case nat.UDP: protoNumber = 17 - } else { + default: return errors.New("protocol not supported") } @@ -258,11 +259,12 @@ func (s *IGDService) GetLocalIPv4Address() net.IP { // SupportsIPVersion checks whether this is a WANIPv6FirewallControl device, // in which case pinholing instead of port mapping should be done func (s *IGDService) SupportsIPVersion(version nat.IPVersion) bool { - if version == nat.IPvAny { + switch version { + case nat.IPvAny: return true - } else if version == nat.IPv6Only { + case nat.IPv6Only: return s.URN == urnWANIPv6FirewallControlV1 - } else if version == nat.IPv4Only { + case nat.IPv4Only: return s.URN != urnWANIPv6FirewallControlV1 } diff --git a/lib/watchaggregator/aggregator.go b/lib/watchaggregator/aggregator.go index 36412e1db..bfb2c4e9a 100644 --- a/lib/watchaggregator/aggregator.go +++ b/lib/watchaggregator/aggregator.go @@ -449,10 +449,11 @@ func (a *aggregator) updateConfig(folderCfg config.FolderConfiguration) { } func updateInProgressSet(event events.Event, inProgress map[string]struct{}) { - if event.Type == events.ItemStarted { + switch event.Type { + case events.ItemStarted: path := event.Data.(map[string]string)["item"] inProgress[path] = struct{}{} - } else if event.Type == events.ItemFinished { + case events.ItemFinished: path := event.Data.(map[string]interface{})["item"].(string) delete(inProgress, path) }