From a368e3eb581e509f69de478656663fba4ff2d7d4 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 5 Nov 2024 11:55:55 +0100 Subject: [PATCH 01/36] cmd/docker: fix unused-receiver (revive) cmd/docker/builder_test.go:130:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *fakeClient) Ping(_ context.Context) (types.Ping, error) { ^ Signed-off-by: Sebastiaan van Stijn --- cmd/docker/builder_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/docker/builder_test.go b/cmd/docker/builder_test.go index 5f7875ff83..eac2dc5b23 100644 --- a/cmd/docker/builder_test.go +++ b/cmd/docker/builder_test.go @@ -127,7 +127,7 @@ type fakeClient struct { client.Client } -func (c *fakeClient) Ping(_ context.Context) (types.Ping, error) { +func (*fakeClient) Ping(context.Context) (types.Ping, error) { return types.Ping{OSType: "linux"}, nil } From 2f65cf7d1a8e00fbc7c91d11fbd81348ca7f6e8c Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 5 Nov 2024 12:09:16 +0100 Subject: [PATCH 02/36] cli/command: fix some unused-receiver linting Signed-off-by: Sebastiaan van Stijn --- cli/command/plugin/client_test.go | 4 ++-- cli/command/service/progress/progress.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/command/plugin/client_test.go b/cli/command/plugin/client_test.go index 8eaf06896d..4b6901b145 100644 --- a/cli/command/plugin/client_test.go +++ b/cli/command/plugin/client_test.go @@ -73,11 +73,11 @@ func (c *fakeClient) PluginInspectWithRaw(_ context.Context, name string) (*type return nil, nil, nil } -func (c *fakeClient) Info(context.Context) (system.Info, error) { +func (*fakeClient) Info(context.Context) (system.Info, error) { return system.Info{}, nil } -func (c *fakeClient) PluginUpgrade(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error) { +func (c *fakeClient) PluginUpgrade(_ context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error) { if c.pluginUpgradeFunc != nil { return c.pluginUpgradeFunc(name, options) } diff --git a/cli/command/service/progress/progress.go b/cli/command/service/progress/progress.go index edfabbd40d..443bf67fee 100644 --- a/cli/command/service/progress/progress.go +++ b/cli/command/service/progress/progress.go @@ -349,7 +349,7 @@ func (u *replicatedProgressUpdater) update(service swarm.Service, tasks []swarm. return running == replicas, nil } -func (u *replicatedProgressUpdater) tasksBySlot(tasks []swarm.Task, activeNodes map[string]struct{}) map[int]swarm.Task { +func (*replicatedProgressUpdater) tasksBySlot(tasks []swarm.Task, activeNodes map[string]struct{}) map[int]swarm.Task { // If there are multiple tasks with the same slot number, favor the one // with the *lowest* desired state. This can happen in restart // scenarios. @@ -470,7 +470,7 @@ func (u *globalProgressUpdater) update(_ swarm.Service, tasks []swarm.Task, acti return running == nodeCount, nil } -func (u *globalProgressUpdater) tasksByNode(tasks []swarm.Task) map[string]swarm.Task { +func (*globalProgressUpdater) tasksByNode(tasks []swarm.Task) map[string]swarm.Task { // If there are multiple tasks with the same node ID, favor the one // with the *lowest* desired state. This can happen in restart // scenarios. From 3825d37923a2b9dc156c762998438df34a474d3c Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 31 Oct 2024 13:03:33 +0100 Subject: [PATCH 03/36] cli/command: define some consts for repeated values Signed-off-by: Sebastiaan van Stijn --- cli/command/container/formatter_stats.go | 14 ++++++++------ cli/command/node/formatter.go | 3 ++- cli/command/service/formatter.go | 6 ++++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/cli/command/container/formatter_stats.go b/cli/command/container/formatter_stats.go index dafcb4303b..b7fdf47333 100644 --- a/cli/command/container/formatter_stats.go +++ b/cli/command/container/formatter_stats.go @@ -22,6 +22,8 @@ const ( winMemUseHeader = "PRIV WORKING SET" // Used only on Windows memUseHeader = "MEM USAGE / LIMIT" // Used only on Linux pidsHeader = "PIDS" // Used only on Linux + + noValue = "--" ) // StatsEntry represents the statistics data collected from a container @@ -169,7 +171,7 @@ func (c *statsContext) Name() string { if len(c.s.Name) > 1 { return c.s.Name[1:] } - return "--" + return noValue } func (c *statsContext) ID() string { @@ -181,7 +183,7 @@ func (c *statsContext) ID() string { func (c *statsContext) CPUPerc() string { if c.s.IsInvalid { - return "--" + return noValue } return formatPercentage(c.s.CPUPercentage) } @@ -198,28 +200,28 @@ func (c *statsContext) MemUsage() string { func (c *statsContext) MemPerc() string { if c.s.IsInvalid || c.os == winOSType { - return "--" + return noValue } return formatPercentage(c.s.MemoryPercentage) } func (c *statsContext) NetIO() string { if c.s.IsInvalid { - return "--" + return noValue } return units.HumanSizeWithPrecision(c.s.NetworkRx, 3) + " / " + units.HumanSizeWithPrecision(c.s.NetworkTx, 3) } func (c *statsContext) BlockIO() string { if c.s.IsInvalid { - return "--" + return noValue } return units.HumanSizeWithPrecision(c.s.BlockRead, 3) + " / " + units.HumanSizeWithPrecision(c.s.BlockWrite, 3) } func (c *statsContext) PIDs() string { if c.s.IsInvalid || c.os == winOSType { - return "--" + return noValue } return strconv.FormatUint(c.s.PidsCurrent, 10) } diff --git a/cli/command/node/formatter.go b/cli/command/node/formatter.go index cc82e6d037..d625b485e1 100644 --- a/cli/command/node/formatter.go +++ b/cli/command/node/formatter.go @@ -281,7 +281,8 @@ func (ctx *nodeInspectContext) ResourceNanoCPUs() int { if ctx.Node.Description.Resources.NanoCPUs == 0 { return int(0) } - return int(ctx.Node.Description.Resources.NanoCPUs) / 1e9 + const nano = 1e9 + return int(ctx.Node.Description.Resources.NanoCPUs) / nano } func (ctx *nodeInspectContext) ResourceMemory() string { diff --git a/cli/command/service/formatter.go b/cli/command/service/formatter.go index 9e043713be..499217ec11 100644 --- a/cli/command/service/formatter.go +++ b/cli/command/service/formatter.go @@ -503,7 +503,8 @@ func (ctx *serviceInspectContext) ResourceReservationNanoCPUs() float64 { if ctx.Service.Spec.TaskTemplate.Resources.Reservations.NanoCPUs == 0 { return float64(0) } - return float64(ctx.Service.Spec.TaskTemplate.Resources.Reservations.NanoCPUs) / 1e9 + const nano = 1e9 + return float64(ctx.Service.Spec.TaskTemplate.Resources.Reservations.NanoCPUs) / nano } func (ctx *serviceInspectContext) ResourceReservationMemory() string { @@ -521,7 +522,8 @@ func (ctx *serviceInspectContext) HasResourceLimits() bool { } func (ctx *serviceInspectContext) ResourceLimitsNanoCPUs() float64 { - return float64(ctx.Service.Spec.TaskTemplate.Resources.Limits.NanoCPUs) / 1e9 + const nano = 1e9 + return float64(ctx.Service.Spec.TaskTemplate.Resources.Limits.NanoCPUs) / nano } func (ctx *serviceInspectContext) ResourceLimitMemory() string { From 9fda9134a92eac3a6d3b3e670b2ca58bc4e0ebfc Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 4 Nov 2024 22:01:32 +0100 Subject: [PATCH 04/36] cli/command/service/progress: define const for magic value Signed-off-by: Sebastiaan van Stijn --- cli/command/service/progress/progress.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cli/command/service/progress/progress.go b/cli/command/service/progress/progress.go index 443bf67fee..09da18774c 100644 --- a/cli/command/service/progress/progress.go +++ b/cli/command/service/progress/progress.go @@ -273,8 +273,9 @@ func truncError(errMsg string) string { // Limit the length to 75 characters, so that even on narrow terminals // this will not overflow to the next line. - if len(errMsg) > 75 { - errMsg = errMsg[:74] + "…" + const maxWidth = 75 + if len(errMsg) > maxWidth { + errMsg = errMsg[:maxWidth-1] + "…" } return errMsg } From d8e76bc33fbedcc4a1ffe079a2e7fa7dba170c81 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 4 Nov 2024 22:04:16 +0100 Subject: [PATCH 05/36] cli: define const for magic value Signed-off-by: Sebastiaan van Stijn --- cli/cobra.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cli/cobra.go b/cli/cobra.go index e6bcc90fa1..aa7dbef44c 100644 --- a/cli/cobra.go +++ b/cli/cobra.go @@ -337,8 +337,10 @@ func operationSubCommands(cmd *cobra.Command) []*cobra.Command { return cmds } +const defaultTermWidth = 80 + func wrappedFlagUsages(cmd *cobra.Command) string { - width := 80 + width := defaultTermWidth if ws, err := term.GetWinsize(0); err == nil { width = int(ws.Width) } From eef4127de99f74d6594bed903733d2eb43469288 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 4 Nov 2024 22:06:21 +0100 Subject: [PATCH 06/36] cli/internal/oauth/manager: ignore line-length-limit cli/internal/oauth/manager/manager_test.go:18: line-length-limit: line is 857 characters, out of limit 200 (revive) Signed-off-by: Sebastiaan van Stijn --- cli/internal/oauth/manager/manager_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/internal/oauth/manager/manager_test.go b/cli/internal/oauth/manager/manager_test.go index 39a9b86c2f..19f15a226f 100644 --- a/cli/internal/oauth/manager/manager_test.go +++ b/cli/internal/oauth/manager/manager_test.go @@ -14,7 +14,7 @@ import ( ) const ( - //nolint:lll + //nolint:lll,revive validToken = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InhYa3BCdDNyV3MyRy11YjlscEpncSJ9.eyJodHRwczovL2h1Yi5kb2NrZXIuY29tIjp7ImVtYWlsIjoiYm9ya0Bkb2NrZXIuY29tIiwic2Vzc2lvbl9pZCI6ImEtc2Vzc2lvbi1pZCIsInNvdXJjZSI6InNhbWxwIiwidXNlcm5hbWUiOiJib3JrISIsInV1aWQiOiIwMTIzLTQ1Njc4OSJ9LCJpc3MiOiJodHRwczovL2xvZ2luLmRvY2tlci5jb20vIiwic3ViIjoic2FtbHB8c2FtbHAtZG9ja2VyfGJvcmtAZG9ja2VyLmNvbSIsImF1ZCI6WyJodHRwczovL2F1ZGllbmNlLmNvbSJdLCJpYXQiOjE3MTk1MDI5MzksImV4cCI6MTcxOTUwNjUzOSwic2NvcGUiOiJvcGVuaWQgb2ZmbGluZV9hY2Nlc3MifQ.VUSp-9_SOvMPWJPRrSh7p4kSPoye4DA3kyd2I0TW0QtxYSRq7xCzNj0NC_ywlPlKBFBeXKm4mh93d1vBSh79I9Heq5tj0Fr4KH77U5xJRMEpjHqoT5jxMEU1hYXX92xctnagBMXxDvzUfu3Yf0tvYSA0RRoGbGTHfdYYRwOrGbwQ75Qg1dyIxUkwsG053eYX2XkmLGxymEMgIq_gWksgAamOc40_0OCdGr-MmDeD2HyGUa309aGltzQUw7Z0zG1AKSXy3WwfMHdWNFioTAvQphwEyY3US8ybSJi78upSFTjwUcryMeHUwQ3uV9PxwPMyPoYxo1izVB-OUJxM8RqEbg" ) From cac88ca34c4f5acb5bd336505123699475df3708 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 4 Nov 2024 22:11:18 +0100 Subject: [PATCH 07/36] cli/command: wrap some long lines (revive) cli/command/cli_options.go:180: line-length-limit: line is 205 characters, out of limit 200 (revive) return errdefs.InvalidParameter(errors.Errorf("failed to parse custom headers from %s environment variable: value must be formatted as comma-separated key=value pairs", envOverrideHTTPHeaders)) cli/command/cli_options.go:194: line-length-limit: line is 208 characters, out of limit 200 (revive) return errdefs.InvalidParameter(errors.Errorf(`failed to set custom headers from %s environment variable: value contains a key=value pair with an empty key: '%s'`, envOverrideHTTPHeaders, kv)) Signed-off-by: Sebastiaan van Stijn --- cli/command/cli_options.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/cli/command/cli_options.go b/cli/command/cli_options.go index 84b121f34a..ef133d6a9a 100644 --- a/cli/command/cli_options.go +++ b/cli/command/cli_options.go @@ -177,7 +177,10 @@ func withCustomHeadersFromEnv() client.Opt { csvReader := csv.NewReader(strings.NewReader(value)) fields, err := csvReader.Read() if err != nil { - return errdefs.InvalidParameter(errors.Errorf("failed to parse custom headers from %s environment variable: value must be formatted as comma-separated key=value pairs", envOverrideHTTPHeaders)) + return errdefs.InvalidParameter(errors.Errorf( + "failed to parse custom headers from %s environment variable: value must be formatted as comma-separated key=value pairs", + envOverrideHTTPHeaders, + )) } if len(fields) == 0 { return nil @@ -191,7 +194,10 @@ func withCustomHeadersFromEnv() client.Opt { k = strings.TrimSpace(k) if k == "" { - return errdefs.InvalidParameter(errors.Errorf(`failed to set custom headers from %s environment variable: value contains a key=value pair with an empty key: '%s'`, envOverrideHTTPHeaders, kv)) + return errdefs.InvalidParameter(errors.Errorf( + `failed to set custom headers from %s environment variable: value contains a key=value pair with an empty key: '%s'`, + envOverrideHTTPHeaders, kv, + )) } // We don't currently allow empty key=value pairs, and produce an error. @@ -199,7 +205,10 @@ func withCustomHeadersFromEnv() client.Opt { // from an environment variable with the same name). In the meantime, // produce an error to prevent users from depending on this. if !hasValue { - return errdefs.InvalidParameter(errors.Errorf(`failed to set custom headers from %s environment variable: missing "=" in key=value pair: '%s'`, envOverrideHTTPHeaders, kv)) + return errdefs.InvalidParameter(errors.Errorf( + `failed to set custom headers from %s environment variable: missing "=" in key=value pair: '%s'`, + envOverrideHTTPHeaders, kv, + )) } env[http.CanonicalHeaderKey(k)] = v From 20c15cee99e8902205032936905603cbb468f0d8 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 5 Nov 2024 09:28:31 +0100 Subject: [PATCH 08/36] cli/compose/loader: shorten skip-comment to please the linters Signed-off-by: Sebastiaan van Stijn --- cli/compose/loader/loader_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/compose/loader/loader_test.go b/cli/compose/loader/loader_test.go index 379015b6fd..aca348a01f 100644 --- a/cli/compose/loader/loader_test.go +++ b/cli/compose/loader/loader_test.go @@ -971,7 +971,7 @@ func uint32Ptr(value uint32) *uint32 { } func TestFullExample(t *testing.T) { - skip.If(t, runtime.GOOS == "windows", "FIXME: TestFullExample substitutes platform-specific HOME-directories and requires platform-specific golden files; see https://github.com/docker/cli/pull/4610") + skip.If(t, runtime.GOOS == "windows", "FIXME: substitutes platform-specific HOME-dirs and requires platform-specific golden files; see https://github.com/docker/cli/pull/4610") data, err := os.ReadFile("full-example.yml") assert.NilError(t, err) From 88b2e78e0216358b1498e040148f3309e4f0fef1 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:26:39 +0100 Subject: [PATCH 09/36] internal/tui: fix "unused-receiver" linting internal/tui/colors.go:27:7: unused-receiver: method receiver 'a' is not referenced in method's body, consider removing or renaming it as _ (revive) func (a noColor) Apply(s string) string { ^ internal/tui/colors.go:31:7: unused-receiver: method receiver 'a' is not referenced in method's body, consider removing or renaming it as _ (revive) func (a noColor) String() string { ^ Signed-off-by: Sebastiaan van Stijn --- internal/tui/colors.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/tui/colors.go b/internal/tui/colors.go index c36dfabc85..796aa390ed 100644 --- a/internal/tui/colors.go +++ b/internal/tui/colors.go @@ -24,10 +24,10 @@ func (a noColor) With(_ ...aec.ANSI) aec.ANSI { return a } -func (a noColor) Apply(s string) string { +func (noColor) Apply(s string) string { return s } -func (a noColor) String() string { +func (noColor) String() string { return "" } From fdc665820c63ab697809b7961d4827c5f78d1915 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:27:32 +0100 Subject: [PATCH 10/36] cli/config/credentials: fix "unused-receiver" linting cli/config/credentials/file_store_test.go:29:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f *fakeStore) GetFilename() string { ^ Signed-off-by: Sebastiaan van Stijn --- cli/config/credentials/file_store_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/config/credentials/file_store_test.go b/cli/config/credentials/file_store_test.go index 5cf7d585a5..e4a43e11fb 100644 --- a/cli/config/credentials/file_store_test.go +++ b/cli/config/credentials/file_store_test.go @@ -26,7 +26,7 @@ func (f *fakeStore) GetAuthConfigs() map[string]types.AuthConfig { return f.configs } -func (f *fakeStore) GetFilename() string { +func (*fakeStore) GetFilename() string { return "no-config.json" } From d0c3380ce4b76590b0ac0685c1f1ab8263efd328 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:29:26 +0100 Subject: [PATCH 11/36] cli/connhelper/commandconn: fix "unused-receiver" linting cli/connhelper/commandconn/commandconn.go:256:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *commandConn) SetDeadline(t time.Time) error { ^ cli/connhelper/commandconn/commandconn.go:261:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *commandConn) SetReadDeadline(t time.Time) error { ^ cli/connhelper/commandconn/commandconn.go:266:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *commandConn) SetWriteDeadline(t time.Time) error { ^ Signed-off-by: Sebastiaan van Stijn --- cli/connhelper/commandconn/commandconn.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/connhelper/commandconn/commandconn.go b/cli/connhelper/commandconn/commandconn.go index c100b97ee6..52888a9100 100644 --- a/cli/connhelper/commandconn/commandconn.go +++ b/cli/connhelper/commandconn/commandconn.go @@ -253,17 +253,17 @@ func (c *commandConn) RemoteAddr() net.Addr { return c.remoteAddr } -func (c *commandConn) SetDeadline(t time.Time) error { +func (*commandConn) SetDeadline(t time.Time) error { logrus.Debugf("unimplemented call: SetDeadline(%v)", t) return nil } -func (c *commandConn) SetReadDeadline(t time.Time) error { +func (*commandConn) SetReadDeadline(t time.Time) error { logrus.Debugf("unimplemented call: SetReadDeadline(%v)", t) return nil } -func (c *commandConn) SetWriteDeadline(t time.Time) error { +func (*commandConn) SetWriteDeadline(t time.Time) error { logrus.Debugf("unimplemented call: SetWriteDeadline(%v)", t) return nil } From f79193c22ccdaa8eeecba90fb8136243ad34fb7b Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:37:39 +0100 Subject: [PATCH 12/36] opts: fix "unused-receiver", line-length-limit linting opts/port.go:124:7: unused-receiver: method receiver 'p' is not referenced in method's body, consider removing or renaming it as _ (revive) func (p *PortOpt) Type() string { ^ opts/mount.go:218:7: unused-receiver: method receiver 'm' is not referenced in method's body, consider removing or renaming it as _ (revive) func (m *MountOpt) Type() string { ^ opts/quotedstring.go:16:7: unused-receiver: method receiver 's' is not referenced in method's body, consider removing or renaming it as _ (revive) func (s *QuotedString) Type() string { ^ opts/secret.go:82:7: unused-receiver: method receiver 'o' is not referenced in method's body, consider removing or renaming it as _ (revive) func (o *SecretOpt) Type() string { ^ opts/opts_test.go:235: line-length-limit: line is 283 characters, out of limit 200 (revive) `foo.bar.baz.this.should.fail.on.long.name.because.it.is.longer.thanisshouldbethis.should.fail.on.long.name.because.it.is.longer.thanisshouldbethis.should.fail.on.long.name.because.it.is.longer.thanisshouldbethis.should.fail.on.long.name.because.it.is.longer.thanisshouldbe`, opts/ulimit.go:61:7: unused-receiver: method receiver 'o' is not referenced in method's body, consider removing or renaming it as _ (revive) func (o *UlimitOpt) Type() string { ^ opts/weightdevice.go:82:7: unused-receiver: method receiver 'opt' is not referenced in method's body, consider removing or renaming it as _ (revive) func (opt *WeightdeviceOpt) Type() string { ^ opts/throttledevice.go:103:7: unused-receiver: method receiver 'opt' is not referenced in method's body, consider removing or renaming it as _ (revive) func (opt *ThrottledeviceOpt) Type() string { ^ opts/duration.go:49:7: unused-receiver: method receiver 'd' is not referenced in method's body, consider removing or renaming it as _ (revive) func (d *DurationOpt) Type() string { ^ opts/network.go:109:7: unused-receiver: method receiver 'n' is not referenced in method's body, consider removing or renaming it as _ (revive) func (n *NetworkOpt) Type() string { ^ opts/network.go:119:7: unused-receiver: method receiver 'n' is not referenced in method's body, consider removing or renaming it as _ (revive) func (n *NetworkOpt) String() string { ^ opts/opts.go:113:7: unused-receiver: method receiver 'opts' is not referenced in method's body, consider removing or renaming it as _ (revive) func (opts *ListOpts) Type() string { ^ opts/pull_behavior.go:13:7: unused-receiver: method receiver 'p' is not referenced in method's body, consider removing or renaming it as _ (revive) func (p *PullOpt) Type() string { ^ opts/config.go:83:7: unused-receiver: method receiver 'o' is not referenced in method's body, consider removing or renaming it as _ (revive) func (o *ConfigOpt) Type() string { ^ opts/gpus.go:95:7: unused-receiver: method receiver 'o' is not referenced in method's body, consider removing or renaming it as _ (revive) func (o *GpuOpts) Type() string { ^ opts/pull_behavior.go:23:7: unused-receiver: method receiver 'p' is not referenced in method's body, consider removing or renaming it as _ (revive) func (p *PullOpt) IsBoolFlag() bool { ^ opts/opts.go:183:7: unused-receiver: method receiver 'opts' is not referenced in method's body, consider removing or renaming it as _ (revive) func (opts *MapOpts) Type() string { ^ opts/opts.go:361:7: unused-receiver: method receiver 'o' is not referenced in method's body, consider removing or renaming it as _ (revive) func (o *FilterOpt) Type() string { ^ opts/opts.go:389:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *NanoCPUs) Type() string { ^ opts/opts.go:466:7: unused-receiver: method receiver 'm' is not referenced in method's body, consider removing or renaming it as _ (revive) func (m *MemBytes) Type() string { ^ opts/opts.go:501:7: unused-receiver: method receiver 'm' is not referenced in method's body, consider removing or renaming it as _ (revive) func (m *MemSwapBytes) Type() string { ^ Signed-off-by: Sebastiaan van Stijn --- opts/config.go | 2 +- opts/duration.go | 2 +- opts/gpus.go | 2 +- opts/mount.go | 2 +- opts/network.go | 4 ++-- opts/opts.go | 12 ++++++------ opts/opts_test.go | 7 +++++-- opts/port.go | 2 +- opts/quotedstring.go | 2 +- opts/secret.go | 2 +- opts/throttledevice.go | 2 +- opts/ulimit.go | 2 +- opts/weightdevice.go | 2 +- 13 files changed, 23 insertions(+), 20 deletions(-) diff --git a/opts/config.go b/opts/config.go index 1423ae3be5..1fc0eb356b 100644 --- a/opts/config.go +++ b/opts/config.go @@ -80,7 +80,7 @@ func (o *ConfigOpt) Set(value string) error { } // Type returns the type of this option -func (o *ConfigOpt) Type() string { +func (*ConfigOpt) Type() string { return "config" } diff --git a/opts/duration.go b/opts/duration.go index 5dc6eeaa73..d55c51e622 100644 --- a/opts/duration.go +++ b/opts/duration.go @@ -46,7 +46,7 @@ func (d *DurationOpt) Set(s string) error { } // Type returns the type of this option, which will be displayed in `--help` output -func (d *DurationOpt) Type() string { +func (*DurationOpt) Type() string { return "duration" } diff --git a/opts/gpus.go b/opts/gpus.go index 93bf939786..993f6da9ae 100644 --- a/opts/gpus.go +++ b/opts/gpus.go @@ -92,7 +92,7 @@ func (o *GpuOpts) Set(value string) error { } // Type returns the type of this option -func (o *GpuOpts) Type() string { +func (*GpuOpts) Type() string { return "gpu-request" } diff --git a/opts/mount.go b/opts/mount.go index 5e23a51394..275a4d7f87 100644 --- a/opts/mount.go +++ b/opts/mount.go @@ -215,7 +215,7 @@ func (m *MountOpt) Set(value string) error { } // Type returns the type of this option -func (m *MountOpt) Type() string { +func (*MountOpt) Type() string { return "mount" } diff --git a/opts/network.go b/opts/network.go index 2ce5dff1f8..c3510870e7 100644 --- a/opts/network.go +++ b/opts/network.go @@ -106,7 +106,7 @@ func (n *NetworkOpt) Set(value string) error { //nolint:gocyclo } // Type returns the type of this option -func (n *NetworkOpt) Type() string { +func (*NetworkOpt) Type() string { return "network" } @@ -116,7 +116,7 @@ func (n *NetworkOpt) Value() []NetworkAttachmentOpts { } // String returns the network opts as a string -func (n *NetworkOpt) String() string { +func (*NetworkOpt) String() string { return "" } diff --git a/opts/opts.go b/opts/opts.go index 157b30f34b..061fda57c5 100644 --- a/opts/opts.go +++ b/opts/opts.go @@ -110,7 +110,7 @@ func (opts *ListOpts) Len() int { } // Type returns a string name for this Option type -func (opts *ListOpts) Type() string { +func (*ListOpts) Type() string { return "list" } @@ -180,7 +180,7 @@ func (opts *MapOpts) String() string { } // Type returns a string name for this Option type -func (opts *MapOpts) Type() string { +func (*MapOpts) Type() string { return "map" } @@ -358,7 +358,7 @@ func (o *FilterOpt) Set(value string) error { } // Type returns the option type -func (o *FilterOpt) Type() string { +func (*FilterOpt) Type() string { return "filter" } @@ -386,7 +386,7 @@ func (c *NanoCPUs) Set(value string) error { } // Type returns the type -func (c *NanoCPUs) Type() string { +func (*NanoCPUs) Type() string { return "decimal" } @@ -463,7 +463,7 @@ func (m *MemBytes) Set(value string) error { } // Type returns the type -func (m *MemBytes) Type() string { +func (*MemBytes) Type() string { return "bytes" } @@ -498,7 +498,7 @@ func (m *MemSwapBytes) Set(value string) error { } // Type returns the type -func (m *MemSwapBytes) Type() string { +func (*MemSwapBytes) Type() string { return "bytes" } diff --git a/opts/opts_test.go b/opts/opts_test.go index 14a36825a2..a69153ca25 100644 --- a/opts/opts_test.go +++ b/opts/opts_test.go @@ -190,7 +190,6 @@ func TestListOptsWithValidator(t *testing.T) { } } -//nolint:lll func TestValidateDNSSearch(t *testing.T) { valid := []string{ `.`, @@ -232,7 +231,11 @@ func TestValidateDNSSearch(t *testing.T) { `foo.bar-.baz`, `foo.-bar`, `foo.-bar.baz`, - `foo.bar.baz.this.should.fail.on.long.name.because.it.is.longer.thanisshouldbethis.should.fail.on.long.name.because.it.is.longer.thanisshouldbethis.should.fail.on.long.name.because.it.is.longer.thanisshouldbethis.should.fail.on.long.name.because.it.is.longer.thanisshouldbe`, + `foo.bar.baz.` + + `this.should.fail.on.long.name.because.it.is.longer.thanisshouldbe` + + `this.should.fail.on.long.name.because.it.is.longer.thanisshouldbe` + + `this.should.fail.on.long.name.because.it.is.longer.thanisshouldbe` + + `this.should.fail.on.long.name.because.it.is.longer.thanisshouldbe`, } for _, domain := range valid { diff --git a/opts/port.go b/opts/port.go index 099aae3534..0407355e65 100644 --- a/opts/port.go +++ b/opts/port.go @@ -121,7 +121,7 @@ func (p *PortOpt) Set(value string) error { } // Type returns the type of this option -func (p *PortOpt) Type() string { +func (*PortOpt) Type() string { return "port" } diff --git a/opts/quotedstring.go b/opts/quotedstring.go index 741f450b14..eb2ac7fbc8 100644 --- a/opts/quotedstring.go +++ b/opts/quotedstring.go @@ -13,7 +13,7 @@ func (s *QuotedString) Set(val string) error { } // Type returns the type of the value -func (s *QuotedString) Type() string { +func (*QuotedString) Type() string { return "string" } diff --git a/opts/secret.go b/opts/secret.go index 09d2b2b3be..bdf232de63 100644 --- a/opts/secret.go +++ b/opts/secret.go @@ -79,7 +79,7 @@ func (o *SecretOpt) Set(value string) error { } // Type returns the type of this option -func (o *SecretOpt) Type() string { +func (*SecretOpt) Type() string { return "secret" } diff --git a/opts/throttledevice.go b/opts/throttledevice.go index 8bf1288047..46b09185c7 100644 --- a/opts/throttledevice.go +++ b/opts/throttledevice.go @@ -100,6 +100,6 @@ func (opt *ThrottledeviceOpt) GetList() []*blkiodev.ThrottleDevice { } // Type returns the option type -func (opt *ThrottledeviceOpt) Type() string { +func (*ThrottledeviceOpt) Type() string { return "list" } diff --git a/opts/ulimit.go b/opts/ulimit.go index 1409a109bc..48052c887c 100644 --- a/opts/ulimit.go +++ b/opts/ulimit.go @@ -58,6 +58,6 @@ func (o *UlimitOpt) GetList() []*container.Ulimit { } // Type returns the option type -func (o *UlimitOpt) Type() string { +func (*UlimitOpt) Type() string { return "ulimit" } diff --git a/opts/weightdevice.go b/opts/weightdevice.go index ee377fc33a..036c7c8c50 100644 --- a/opts/weightdevice.go +++ b/opts/weightdevice.go @@ -79,6 +79,6 @@ func (opt *WeightdeviceOpt) GetList() []*blkiodev.WeightDevice { } // Type returns the option type -func (opt *WeightdeviceOpt) Type() string { +func (*WeightdeviceOpt) Type() string { return "list" } From 9b62e5740202886e817c799b3cad2fb6eb267eae Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:39:15 +0100 Subject: [PATCH 13/36] cli/config/configfile: fix "unused-receiver" linting cli/config/configfile/file_test.go:189:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *mockNativeStore) Store(_ types.AuthConfig) error { ^ Signed-off-by: Sebastiaan van Stijn --- cli/config/configfile/file_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/config/configfile/file_test.go b/cli/config/configfile/file_test.go index 51aac67964..d85c4a71fd 100644 --- a/cli/config/configfile/file_test.go +++ b/cli/config/configfile/file_test.go @@ -186,7 +186,7 @@ func (c *mockNativeStore) GetAll() (map[string]types.AuthConfig, error) { return c.authConfigs, nil } -func (c *mockNativeStore) Store(_ types.AuthConfig) error { +func (*mockNativeStore) Store(_ types.AuthConfig) error { return nil } From 1e7add9f4b68316b96a81ecb8d028121d3909f72 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:39:57 +0100 Subject: [PATCH 14/36] cli/internal/oauth/api: fix "unused-receiver" linting cli/internal/oauth/api/api.go:227:7: unused-receiver: method receiver 'a' is not referenced in method's body, consider removing or renaming it as _ (revive) func (a API) GetAutoPAT(ctx context.Context, audience string, res TokenResponse) (string, error) { ^ Signed-off-by: Sebastiaan van Stijn --- cli/internal/oauth/api/api.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/internal/oauth/api/api.go b/cli/internal/oauth/api/api.go index 98c981f029..cd9ceb7da1 100644 --- a/cli/internal/oauth/api/api.go +++ b/cli/internal/oauth/api/api.go @@ -224,7 +224,7 @@ func postForm(ctx context.Context, reqURL string, data io.Reader) (*http.Respons return http.DefaultClient.Do(req) } -func (a API) GetAutoPAT(ctx context.Context, audience string, res TokenResponse) (string, error) { +func (API) GetAutoPAT(ctx context.Context, audience string, res TokenResponse) (string, error) { patURL := audience + "/v2/access-tokens/desktop-generate" req, err := http.NewRequestWithContext(ctx, http.MethodPost, patURL, nil) if err != nil { From 20b4ab366e7a9f4ad5e1aeab27761217438d6006 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:41:19 +0100 Subject: [PATCH 15/36] cli/compose: fix "unused-receiver" linting cli/compose/schema/schema.go:25:7: unused-receiver: method receiver 'checker' is not referenced in method's body, consider removing or renaming it as _ (revive) func (checker portsFormatChecker) IsFormat(input any) bool { ^ cli/compose/schema/schema.go:41:7: unused-receiver: method receiver 'checker' is not referenced in method's body, consider removing or renaming it as _ (revive) func (checker durationFormatChecker) IsFormat(input any) bool { ^ cli/compose/loader/loader.go:272:7: unused-receiver: method receiver 'e' is not referenced in method's body, consider removing or renaming it as _ (revive) func (e *ForbiddenPropertiesError) Error() string { ^ Signed-off-by: Sebastiaan van Stijn --- cli/compose/loader/loader.go | 2 +- cli/compose/schema/schema.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/compose/loader/loader.go b/cli/compose/loader/loader.go index 564eb70a98..6cd2d2031d 100644 --- a/cli/compose/loader/loader.go +++ b/cli/compose/loader/loader.go @@ -269,7 +269,7 @@ type ForbiddenPropertiesError struct { Properties map[string]string } -func (e *ForbiddenPropertiesError) Error() string { +func (*ForbiddenPropertiesError) Error() string { return "Configuration contains forbidden properties" } diff --git a/cli/compose/schema/schema.go b/cli/compose/schema/schema.go index 9c68166e37..b636ea5bbf 100644 --- a/cli/compose/schema/schema.go +++ b/cli/compose/schema/schema.go @@ -22,7 +22,7 @@ const ( type portsFormatChecker struct{} -func (checker portsFormatChecker) IsFormat(input any) bool { +func (portsFormatChecker) IsFormat(input any) bool { var portSpec string switch p := input.(type) { @@ -38,7 +38,7 @@ func (checker portsFormatChecker) IsFormat(input any) bool { type durationFormatChecker struct{} -func (checker durationFormatChecker) IsFormat(input any) bool { +func (durationFormatChecker) IsFormat(input any) bool { value, ok := input.(string) if !ok { return false From c8bd0a7e51644eb7605839bfa8073c95b509ae1c Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:43:02 +0100 Subject: [PATCH 16/36] cli/manifest: fix "unused-receiver" linting cli/manifest/store/store.go:47:7: unused-receiver: method receiver 's' is not referenced in method's body, consider removing or renaming it as _ (revive) func (s *fsStore) getFromFilename(ref reference.Reference, filename string) (types.ImageManifest, error) { ^ cli/manifest/store/store.go:168:7: unused-receiver: method receiver 'n' is not referenced in method's body, consider removing or renaming it as _ (revive) func (n *notFoundError) NotFound() {} ^ Signed-off-by: Sebastiaan van Stijn --- cli/manifest/store/store.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/manifest/store/store.go b/cli/manifest/store/store.go index c4f8219cec..e97e8628f1 100644 --- a/cli/manifest/store/store.go +++ b/cli/manifest/store/store.go @@ -44,7 +44,7 @@ func (s *fsStore) Get(listRef reference.Reference, manifest reference.Reference) return s.getFromFilename(manifest, filename) } -func (s *fsStore) getFromFilename(ref reference.Reference, filename string) (types.ImageManifest, error) { +func (*fsStore) getFromFilename(ref reference.Reference, filename string) (types.ImageManifest, error) { bytes, err := os.ReadFile(filename) switch { case os.IsNotExist(err): @@ -165,7 +165,7 @@ func (n *notFoundError) Error() string { } // NotFound interface -func (n *notFoundError) NotFound() {} +func (*notFoundError) NotFound() {} // IsNotFound returns true if the error is a not found error func IsNotFound(err error) bool { From f0f19c6d4f3a9dd0e621001677d2326088d45235 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:43:41 +0100 Subject: [PATCH 17/36] cli/trust: fix "unused-receiver" linting cli/trust/trust.go:92:7: unused-receiver: method receiver 'scs' is not referenced in method's body, consider removing or renaming it as _ (revive) func (scs simpleCredentialStore) SetRefreshToken(*url.URL, string, string) {} ^ Signed-off-by: Sebastiaan van Stijn --- cli/trust/trust.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/trust/trust.go b/cli/trust/trust.go index 5e08b49ec5..bb7e597aa5 100644 --- a/cli/trust/trust.go +++ b/cli/trust/trust.go @@ -89,7 +89,7 @@ func (scs simpleCredentialStore) RefreshToken(*url.URL, string) string { return scs.auth.IdentityToken } -func (scs simpleCredentialStore) SetRefreshToken(*url.URL, string, string) {} +func (simpleCredentialStore) SetRefreshToken(*url.URL, string, string) {} // GetNotaryRepository returns a NotaryRepository which stores all the // information needed to operate on a notary repository. From ba3f4fb41c18d5d875f517b1ee32307727a4cee4 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:44:59 +0100 Subject: [PATCH 18/36] cli/internal/oauth/manager: fix "unused-receiver" linting cli/internal/oauth/manager/manager_test.go:349:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f *fakeStore) Save() error { ^ cli/internal/oauth/manager/manager_test.go:357:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f *fakeStore) GetFilename() string { ^ Signed-off-by: Sebastiaan van Stijn --- cli/internal/oauth/manager/manager_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/internal/oauth/manager/manager_test.go b/cli/internal/oauth/manager/manager_test.go index 19f15a226f..65beda607e 100644 --- a/cli/internal/oauth/manager/manager_test.go +++ b/cli/internal/oauth/manager/manager_test.go @@ -346,7 +346,7 @@ type fakeStore struct { configs map[string]types.AuthConfig } -func (f *fakeStore) Save() error { +func (*fakeStore) Save() error { return nil } @@ -354,7 +354,7 @@ func (f *fakeStore) GetAuthConfigs() map[string]types.AuthConfig { return f.configs } -func (f *fakeStore) GetFilename() string { +func (*fakeStore) GetFilename() string { return "/tmp/docker-fakestore" } From 72b32c69cc07e4e7120973c3f9f405e0382c8f23 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:50:43 +0100 Subject: [PATCH 19/36] internal/test/notary: fix "unused-receiver" linting Signed-off-by: Sebastiaan van Stijn --- internal/test/notary/client.go | 106 ++++++++++++++++----------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/internal/test/notary/client.go b/internal/test/notary/client.go index b6c6db0e58..3ee625fd3b 100644 --- a/internal/test/notary/client.go +++ b/internal/test/notary/client.go @@ -22,127 +22,127 @@ type OfflineNotaryRepository struct{} // Initialize creates a new repository by using rootKey as the root Key for the // TUF repository. -func (o OfflineNotaryRepository) Initialize([]string, ...data.RoleName) error { +func (OfflineNotaryRepository) Initialize([]string, ...data.RoleName) error { return storage.ErrOffline{} } // InitializeWithCertificate initializes the repository with root keys and their corresponding certificates -func (o OfflineNotaryRepository) InitializeWithCertificate([]string, []data.PublicKey, ...data.RoleName) error { +func (OfflineNotaryRepository) InitializeWithCertificate([]string, []data.PublicKey, ...data.RoleName) error { return storage.ErrOffline{} } // Publish pushes the local changes in signed material to the remote notary-server // Conceptually it performs an operation similar to a `git rebase` -func (o OfflineNotaryRepository) Publish() error { +func (OfflineNotaryRepository) Publish() error { return storage.ErrOffline{} } // AddTarget creates new changelist entries to add a target to the given roles // in the repository when the changelist gets applied at publish time. -func (o OfflineNotaryRepository) AddTarget(*client.Target, ...data.RoleName) error { +func (OfflineNotaryRepository) AddTarget(*client.Target, ...data.RoleName) error { return nil } // RemoveTarget creates new changelist entries to remove a target from the given // roles in the repository when the changelist gets applied at publish time. -func (o OfflineNotaryRepository) RemoveTarget(string, ...data.RoleName) error { +func (OfflineNotaryRepository) RemoveTarget(string, ...data.RoleName) error { return nil } // ListTargets lists all targets for the current repository. The list of // roles should be passed in order from highest to lowest priority. -func (o OfflineNotaryRepository) ListTargets(...data.RoleName) ([]*client.TargetWithRole, error) { +func (OfflineNotaryRepository) ListTargets(...data.RoleName) ([]*client.TargetWithRole, error) { return nil, storage.ErrOffline{} } // GetTargetByName returns a target by the given name. -func (o OfflineNotaryRepository) GetTargetByName(string, ...data.RoleName) (*client.TargetWithRole, error) { +func (OfflineNotaryRepository) GetTargetByName(string, ...data.RoleName) (*client.TargetWithRole, error) { return nil, storage.ErrOffline{} } // GetAllTargetMetadataByName searches the entire delegation role tree to find the specified target by name for all // roles, and returns a list of TargetSignedStructs for each time it finds the specified target. -func (o OfflineNotaryRepository) GetAllTargetMetadataByName(string) ([]client.TargetSignedStruct, error) { +func (OfflineNotaryRepository) GetAllTargetMetadataByName(string) ([]client.TargetSignedStruct, error) { return nil, storage.ErrOffline{} } // GetChangelist returns the list of the repository's unpublished changes -func (o OfflineNotaryRepository) GetChangelist() (changelist.Changelist, error) { +func (OfflineNotaryRepository) GetChangelist() (changelist.Changelist, error) { return changelist.NewMemChangelist(), nil } // ListRoles returns a list of RoleWithSignatures objects for this repo -func (o OfflineNotaryRepository) ListRoles() ([]client.RoleWithSignatures, error) { +func (OfflineNotaryRepository) ListRoles() ([]client.RoleWithSignatures, error) { return nil, storage.ErrOffline{} } // GetDelegationRoles returns the keys and roles of the repository's delegations -func (o OfflineNotaryRepository) GetDelegationRoles() ([]data.Role, error) { +func (OfflineNotaryRepository) GetDelegationRoles() ([]data.Role, error) { return nil, storage.ErrOffline{} } // AddDelegation creates changelist entries to add provided delegation public keys and paths. -func (o OfflineNotaryRepository) AddDelegation(data.RoleName, []data.PublicKey, []string) error { +func (OfflineNotaryRepository) AddDelegation(data.RoleName, []data.PublicKey, []string) error { return nil } // AddDelegationRoleAndKeys creates a changelist entry to add provided delegation public keys. -func (o OfflineNotaryRepository) AddDelegationRoleAndKeys(data.RoleName, []data.PublicKey) error { +func (OfflineNotaryRepository) AddDelegationRoleAndKeys(data.RoleName, []data.PublicKey) error { return nil } // AddDelegationPaths creates a changelist entry to add provided paths to an existing delegation. -func (o OfflineNotaryRepository) AddDelegationPaths(data.RoleName, []string) error { +func (OfflineNotaryRepository) AddDelegationPaths(data.RoleName, []string) error { return nil } // RemoveDelegationKeysAndPaths creates changelist entries to remove provided delegation key IDs and paths. -func (o OfflineNotaryRepository) RemoveDelegationKeysAndPaths(data.RoleName, []string, []string) error { +func (OfflineNotaryRepository) RemoveDelegationKeysAndPaths(data.RoleName, []string, []string) error { return nil } // RemoveDelegationRole creates a changelist to remove all paths and keys from a role, and delete the role in its entirety. -func (o OfflineNotaryRepository) RemoveDelegationRole(data.RoleName) error { +func (OfflineNotaryRepository) RemoveDelegationRole(data.RoleName) error { return nil } // RemoveDelegationPaths creates a changelist entry to remove provided paths from an existing delegation. -func (o OfflineNotaryRepository) RemoveDelegationPaths(data.RoleName, []string) error { +func (OfflineNotaryRepository) RemoveDelegationPaths(data.RoleName, []string) error { return nil } // RemoveDelegationKeys creates a changelist entry to remove provided keys from an existing delegation. -func (o OfflineNotaryRepository) RemoveDelegationKeys(data.RoleName, []string) error { +func (OfflineNotaryRepository) RemoveDelegationKeys(data.RoleName, []string) error { return nil } // ClearDelegationPaths creates a changelist entry to remove all paths from an existing delegation. -func (o OfflineNotaryRepository) ClearDelegationPaths(data.RoleName) error { +func (OfflineNotaryRepository) ClearDelegationPaths(data.RoleName) error { return nil } // Witness creates change objects to witness (i.e. re-sign) the given // roles on the next publish. One change is created per role -func (o OfflineNotaryRepository) Witness(...data.RoleName) ([]data.RoleName, error) { +func (OfflineNotaryRepository) Witness(...data.RoleName) ([]data.RoleName, error) { return nil, nil } // RotateKey rotates a private key and returns the public component from the remote server -func (o OfflineNotaryRepository) RotateKey(data.RoleName, bool, []string) error { +func (OfflineNotaryRepository) RotateKey(data.RoleName, bool, []string) error { return storage.ErrOffline{} } // GetCryptoService is the getter for the repository's CryptoService -func (o OfflineNotaryRepository) GetCryptoService() signed.CryptoService { +func (OfflineNotaryRepository) GetCryptoService() signed.CryptoService { return nil } // SetLegacyVersions allows the number of legacy versions of the root // to be inspected for old signing keys to be configured. -func (o OfflineNotaryRepository) SetLegacyVersions(int) {} +func (OfflineNotaryRepository) SetLegacyVersions(int) {} // GetGUN is a getter for the GUN object from a Repository -func (o OfflineNotaryRepository) GetGUN() data.GUN { +func (OfflineNotaryRepository) GetGUN() data.GUN { return data.GUN("gun") } @@ -160,50 +160,50 @@ type UninitializedNotaryRepository struct { // Initialize creates a new repository by using rootKey as the root Key for the // TUF repository. -func (u UninitializedNotaryRepository) Initialize([]string, ...data.RoleName) error { +func (UninitializedNotaryRepository) Initialize([]string, ...data.RoleName) error { return client.ErrRepositoryNotExist{} } // InitializeWithCertificate initializes the repository with root keys and their corresponding certificates -func (u UninitializedNotaryRepository) InitializeWithCertificate([]string, []data.PublicKey, ...data.RoleName) error { +func (UninitializedNotaryRepository) InitializeWithCertificate([]string, []data.PublicKey, ...data.RoleName) error { return client.ErrRepositoryNotExist{} } // Publish pushes the local changes in signed material to the remote notary-server // Conceptually it performs an operation similar to a `git rebase` -func (u UninitializedNotaryRepository) Publish() error { +func (UninitializedNotaryRepository) Publish() error { return client.ErrRepositoryNotExist{} } // ListTargets lists all targets for the current repository. The list of // roles should be passed in order from highest to lowest priority. -func (u UninitializedNotaryRepository) ListTargets(...data.RoleName) ([]*client.TargetWithRole, error) { +func (UninitializedNotaryRepository) ListTargets(...data.RoleName) ([]*client.TargetWithRole, error) { return nil, client.ErrRepositoryNotExist{} } // GetTargetByName returns a target by the given name. -func (u UninitializedNotaryRepository) GetTargetByName(string, ...data.RoleName) (*client.TargetWithRole, error) { +func (UninitializedNotaryRepository) GetTargetByName(string, ...data.RoleName) (*client.TargetWithRole, error) { return nil, client.ErrRepositoryNotExist{} } // GetAllTargetMetadataByName searches the entire delegation role tree to find the specified target by name for all // roles, and returns a list of TargetSignedStructs for each time it finds the specified target. -func (u UninitializedNotaryRepository) GetAllTargetMetadataByName(string) ([]client.TargetSignedStruct, error) { +func (UninitializedNotaryRepository) GetAllTargetMetadataByName(string) ([]client.TargetSignedStruct, error) { return nil, client.ErrRepositoryNotExist{} } // ListRoles returns a list of RoleWithSignatures objects for this repo -func (u UninitializedNotaryRepository) ListRoles() ([]client.RoleWithSignatures, error) { +func (UninitializedNotaryRepository) ListRoles() ([]client.RoleWithSignatures, error) { return nil, client.ErrRepositoryNotExist{} } // GetDelegationRoles returns the keys and roles of the repository's delegations -func (u UninitializedNotaryRepository) GetDelegationRoles() ([]data.Role, error) { +func (UninitializedNotaryRepository) GetDelegationRoles() ([]data.Role, error) { return nil, client.ErrRepositoryNotExist{} } // RotateKey rotates a private key and returns the public component from the remote server -func (u UninitializedNotaryRepository) RotateKey(data.RoleName, bool, []string) error { +func (UninitializedNotaryRepository) RotateKey(data.RoleName, bool, []string) error { return client.ErrRepositoryNotExist{} } @@ -220,40 +220,40 @@ type EmptyTargetsNotaryRepository struct { // Initialize creates a new repository by using rootKey as the root Key for the // TUF repository. -func (e EmptyTargetsNotaryRepository) Initialize([]string, ...data.RoleName) error { +func (EmptyTargetsNotaryRepository) Initialize([]string, ...data.RoleName) error { return nil } // InitializeWithCertificate initializes the repository with root keys and their corresponding certificates -func (e EmptyTargetsNotaryRepository) InitializeWithCertificate([]string, []data.PublicKey, ...data.RoleName) error { +func (EmptyTargetsNotaryRepository) InitializeWithCertificate([]string, []data.PublicKey, ...data.RoleName) error { return nil } // Publish pushes the local changes in signed material to the remote notary-server // Conceptually it performs an operation similar to a `git rebase` -func (e EmptyTargetsNotaryRepository) Publish() error { +func (EmptyTargetsNotaryRepository) Publish() error { return nil } // ListTargets lists all targets for the current repository. The list of // roles should be passed in order from highest to lowest priority. -func (e EmptyTargetsNotaryRepository) ListTargets(...data.RoleName) ([]*client.TargetWithRole, error) { +func (EmptyTargetsNotaryRepository) ListTargets(...data.RoleName) ([]*client.TargetWithRole, error) { return []*client.TargetWithRole{}, nil } // GetTargetByName returns a target by the given name. -func (e EmptyTargetsNotaryRepository) GetTargetByName(name string, _ ...data.RoleName) (*client.TargetWithRole, error) { +func (EmptyTargetsNotaryRepository) GetTargetByName(name string, _ ...data.RoleName) (*client.TargetWithRole, error) { return nil, client.ErrNoSuchTarget(name) } // GetAllTargetMetadataByName searches the entire delegation role tree to find the specified target by name for all // roles, and returns a list of TargetSignedStructs for each time it finds the specified target. -func (e EmptyTargetsNotaryRepository) GetAllTargetMetadataByName(name string) ([]client.TargetSignedStruct, error) { +func (EmptyTargetsNotaryRepository) GetAllTargetMetadataByName(name string) ([]client.TargetSignedStruct, error) { return nil, client.ErrNoSuchTarget(name) } // ListRoles returns a list of RoleWithSignatures objects for this repo -func (e EmptyTargetsNotaryRepository) ListRoles() ([]client.RoleWithSignatures, error) { +func (EmptyTargetsNotaryRepository) ListRoles() ([]client.RoleWithSignatures, error) { rootRole := data.Role{ RootRole: data.RootRole{ KeyIDs: []string{"rootID"}, @@ -276,12 +276,12 @@ func (e EmptyTargetsNotaryRepository) ListRoles() ([]client.RoleWithSignatures, } // GetDelegationRoles returns the keys and roles of the repository's delegations -func (e EmptyTargetsNotaryRepository) GetDelegationRoles() ([]data.Role, error) { +func (EmptyTargetsNotaryRepository) GetDelegationRoles() ([]data.Role, error) { return []data.Role{}, nil } // RotateKey rotates a private key and returns the public component from the remote server -func (e EmptyTargetsNotaryRepository) RotateKey(data.RoleName, bool, []string) error { +func (EmptyTargetsNotaryRepository) RotateKey(data.RoleName, bool, []string) error { return nil } @@ -390,7 +390,7 @@ var loadedTargets = []client.TargetSignedStruct{ } // ListRoles returns a list of RoleWithSignatures objects for this repo -func (l LoadedNotaryRepository) ListRoles() ([]client.RoleWithSignatures, error) { +func (LoadedNotaryRepository) ListRoles() ([]client.RoleWithSignatures, error) { rootRole := data.Role{ RootRole: data.RootRole{ KeyIDs: []string{"rootID"}, @@ -444,7 +444,7 @@ func (l LoadedNotaryRepository) ListRoles() ([]client.RoleWithSignatures, error) // ListTargets lists all targets for the current repository. The list of // roles should be passed in order from highest to lowest priority. -func (l LoadedNotaryRepository) ListTargets(roles ...data.RoleName) ([]*client.TargetWithRole, error) { +func (LoadedNotaryRepository) ListTargets(roles ...data.RoleName) ([]*client.TargetWithRole, error) { filteredTargets := []*client.TargetWithRole{} for _, tgt := range loadedTargets { if len(roles) == 0 || (len(roles) > 0 && roles[0] == tgt.Role.Name) { @@ -455,7 +455,7 @@ func (l LoadedNotaryRepository) ListTargets(roles ...data.RoleName) ([]*client.T } // GetTargetByName returns a target by the given name. -func (l LoadedNotaryRepository) GetTargetByName(name string, roles ...data.RoleName) (*client.TargetWithRole, error) { +func (LoadedNotaryRepository) GetTargetByName(name string, roles ...data.RoleName) (*client.TargetWithRole, error) { for _, tgt := range loadedTargets { if name == tgt.Target.Name { if len(roles) == 0 || (len(roles) > 0 && roles[0] == tgt.Role.Name) { @@ -468,7 +468,7 @@ func (l LoadedNotaryRepository) GetTargetByName(name string, roles ...data.RoleN // GetAllTargetMetadataByName searches the entire delegation role tree to find the specified target by name for all // roles, and returns a list of TargetSignedStructs for each time it finds the specified target. -func (l LoadedNotaryRepository) GetAllTargetMetadataByName(name string) ([]client.TargetSignedStruct, error) { +func (LoadedNotaryRepository) GetAllTargetMetadataByName(name string) ([]client.TargetSignedStruct, error) { if name == "" { return loadedTargets, nil } @@ -485,12 +485,12 @@ func (l LoadedNotaryRepository) GetAllTargetMetadataByName(name string) ([]clien } // GetGUN is a getter for the GUN object from a Repository -func (l LoadedNotaryRepository) GetGUN() data.GUN { - return data.GUN("signed-repo") +func (LoadedNotaryRepository) GetGUN() data.GUN { + return "signed-repo" } // GetDelegationRoles returns the keys and roles of the repository's delegations -func (l LoadedNotaryRepository) GetDelegationRoles() ([]data.Role, error) { +func (LoadedNotaryRepository) GetDelegationRoles() ([]data.Role, error) { return loadedDelegationRoles, nil } @@ -518,7 +518,7 @@ type LoadedWithNoSignersNotaryRepository struct { // ListTargets lists all targets for the current repository. The list of // roles should be passed in order from highest to lowest priority. -func (l LoadedWithNoSignersNotaryRepository) ListTargets(roles ...data.RoleName) ([]*client.TargetWithRole, error) { +func (LoadedWithNoSignersNotaryRepository) ListTargets(roles ...data.RoleName) ([]*client.TargetWithRole, error) { filteredTargets := []*client.TargetWithRole{} for _, tgt := range loadedTargets { if len(roles) == 0 || (len(roles) > 0 && roles[0] == tgt.Role.Name) { @@ -529,7 +529,7 @@ func (l LoadedWithNoSignersNotaryRepository) ListTargets(roles ...data.RoleName) } // GetTargetByName returns a target by the given name. -func (l LoadedWithNoSignersNotaryRepository) GetTargetByName(name string, _ ...data.RoleName) (*client.TargetWithRole, error) { +func (LoadedWithNoSignersNotaryRepository) GetTargetByName(name string, _ ...data.RoleName) (*client.TargetWithRole, error) { if name == "" || name == loadedGreenTarget.Name { return &client.TargetWithRole{Target: loadedGreenTarget, Role: data.CanonicalTargetsRole}, nil } @@ -538,7 +538,7 @@ func (l LoadedWithNoSignersNotaryRepository) GetTargetByName(name string, _ ...d // GetAllTargetMetadataByName searches the entire delegation role tree to find the specified target by name for all // roles, and returns a list of TargetSignedStructs for each time it finds the specified target. -func (l LoadedWithNoSignersNotaryRepository) GetAllTargetMetadataByName(name string) ([]client.TargetSignedStruct, error) { +func (LoadedWithNoSignersNotaryRepository) GetAllTargetMetadataByName(name string) ([]client.TargetSignedStruct, error) { if name == "" || name == loadedGreenTarget.Name { return []client.TargetSignedStruct{{Target: loadedGreenTarget, Role: loadedTargetsRole}}, nil } @@ -546,6 +546,6 @@ func (l LoadedWithNoSignersNotaryRepository) GetAllTargetMetadataByName(name str } // GetDelegationRoles returns the keys and roles of the repository's delegations -func (l LoadedWithNoSignersNotaryRepository) GetDelegationRoles() ([]data.Role, error) { +func (LoadedWithNoSignersNotaryRepository) GetDelegationRoles() ([]data.Role, error) { return []data.Role{}, nil } From d27f6a61a26c69e10ff8b4124c2dabce75606f90 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:51:37 +0100 Subject: [PATCH 20/36] cli/registry: fix "unused-receiver" linting cli/registry/client/fetcher.go:307:7: unused-receiver: method receiver 'n' is not referenced in method's body, consider removing or renaming it as _ (revive) func (n *notFoundError) NotFound() {} ^ cli/registry/client/endpoint.go:126:7: unused-receiver: method receiver 'th' is not referenced in method's body, consider removing or renaming it as _ (revive) func (th *existingTokenHandler) Scheme() string { ^ Signed-off-by: Sebastiaan van Stijn --- cli/registry/client/endpoint.go | 2 +- cli/registry/client/fetcher.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/registry/client/endpoint.go b/cli/registry/client/endpoint.go index 2446da85a0..95312b0558 100644 --- a/cli/registry/client/endpoint.go +++ b/cli/registry/client/endpoint.go @@ -123,6 +123,6 @@ func (th *existingTokenHandler) AuthorizeRequest(req *http.Request, _ map[string return nil } -func (th *existingTokenHandler) Scheme() string { +func (*existingTokenHandler) Scheme() string { return "bearer" } diff --git a/cli/registry/client/fetcher.go b/cli/registry/client/fetcher.go index 3e4b36d309..d1f255bf9f 100644 --- a/cli/registry/client/fetcher.go +++ b/cli/registry/client/fetcher.go @@ -304,4 +304,4 @@ func (n *notFoundError) Error() string { } // NotFound satisfies interface github.com/docker/docker/errdefs.ErrNotFound -func (n *notFoundError) NotFound() {} +func (notFoundError) NotFound() {} From 1b3718f4596ac0286443d79671762216c79b38ed Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 13:57:38 +0100 Subject: [PATCH 21/36] cli/command: fix "unused-receiver" linting cli/command/cli.go:100:7: unused-receiver: method receiver 'cli' is not referenced in method's body, consider removing or renaming it as _ (revive) func (cli *DockerCli) DefaultVersion() string { ^ cli/command/cli.go:234:7: unused-receiver: method receiver 'cli' is not referenced in method's body, consider removing or renaming it as _ (revive) func (cli *DockerCli) ManifestStore() manifeststore.Store { ^ cli/command/telemetry.go:57:7: unused-receiver: method receiver 'cli' is not referenced in method's body, consider removing or renaming it as _ (revive) func (cli *DockerCli) TracerProvider() trace.TracerProvider { ^ cli/command/telemetry.go:61:7: unused-receiver: method receiver 'cli' is not referenced in method's body, consider removing or renaming it as _ (revive) func (cli *DockerCli) MeterProvider() metric.MeterProvider { ^ Signed-off-by: Sebastiaan van Stijn --- cli/command/cli.go | 4 ++-- cli/command/telemetry.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/command/cli.go b/cli/command/cli.go index a8cfd58e4d..227720fa07 100644 --- a/cli/command/cli.go +++ b/cli/command/cli.go @@ -97,7 +97,7 @@ type DockerCli struct { } // DefaultVersion returns api.defaultVersion. -func (cli *DockerCli) DefaultVersion() string { +func (*DockerCli) DefaultVersion() string { return api.DefaultVersion } @@ -231,7 +231,7 @@ func (cli *DockerCli) HooksEnabled() bool { } // ManifestStore returns a store for local manifests -func (cli *DockerCli) ManifestStore() manifeststore.Store { +func (*DockerCli) ManifestStore() manifeststore.Store { // TODO: support override default location from config file return manifeststore.NewStore(filepath.Join(config.Dir(), "manifests")) } diff --git a/cli/command/telemetry.go b/cli/command/telemetry.go index d8985234a7..2ee8adfb46 100644 --- a/cli/command/telemetry.go +++ b/cli/command/telemetry.go @@ -54,11 +54,11 @@ func (cli *DockerCli) Resource() *resource.Resource { return cli.res.Get() } -func (cli *DockerCli) TracerProvider() trace.TracerProvider { +func (*DockerCli) TracerProvider() trace.TracerProvider { return otel.GetTracerProvider() } -func (cli *DockerCli) MeterProvider() metric.MeterProvider { +func (*DockerCli) MeterProvider() metric.MeterProvider { return otel.GetMeterProvider() } From e5f3cc14c17fb3fc765b513da0f180af1e655f17 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:04:12 +0100 Subject: [PATCH 22/36] internal/test: fix "unused-receiver" linting internal/test/cli.go:211:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *FakeCli) BuildKitEnabled() (bool, error) { ^ Signed-off-by: Sebastiaan van Stijn --- internal/test/cli.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/test/cli.go b/internal/test/cli.go index f84413ba81..35e4a317a5 100644 --- a/internal/test/cli.go +++ b/internal/test/cli.go @@ -208,6 +208,6 @@ func EnableContentTrust(c *FakeCli) { } // BuildKitEnabled on the fake cli -func (c *FakeCli) BuildKitEnabled() (bool, error) { +func (*FakeCli) BuildKitEnabled() (bool, error) { return true, nil } From 450768c3112a97d560af5bbbfea6dab9c7872826 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:07:32 +0100 Subject: [PATCH 23/36] cli-plugins/manager: fix "unused-receiver" linting cli-plugins/manager/manager.go:35:7: unused-receiver: method receiver 'e' is not referenced in method's body, consider removing or renaming it as _ (revive) func (e errPluginNotFound) NotFound() {} ^ Signed-off-by: Sebastiaan van Stijn --- cli-plugins/manager/manager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli-plugins/manager/manager.go b/cli-plugins/manager/manager.go index 223f3ae0a7..9f795bc498 100644 --- a/cli-plugins/manager/manager.go +++ b/cli-plugins/manager/manager.go @@ -32,7 +32,7 @@ const ( // errPluginNotFound is the error returned when a plugin could not be found. type errPluginNotFound string -func (e errPluginNotFound) NotFound() {} +func (errPluginNotFound) NotFound() {} func (e errPluginNotFound) Error() string { return "Error: No such CLI plugin: " + string(e) From 25e6b2da046f4d533764536653fc2bc94260fa25 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:14:14 +0100 Subject: [PATCH 24/36] cli/command/formatter: fix "unused-receiver" linting cli/command/formatter/custom.go:35:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c SubHeaderContext) Label(name string) string { ^ cli/command/formatter/container_test.go:334: line-length-limit: line is 204 characters, out of limit 200 (revive) context: Context{Format: NewContainerFormat(`table {{truncate .ID 5}}\t{{json .Image}} {{.RunningFor}}/{{title .Status}}/{{pad .Ports 2 2}}.{{upper .Names}} {{lower .Status}}`, false, true)}, cli/command/formatter/container_test.go:831: line-length-limit: line is 247 characters, out of limit 200 (revive) expected: "80/tcp, 80/udp, 1024/tcp, 1024/udp, 12345/sctp, 1.1.1.1:1024->80/tcp, 1.1.1.1:1024->80/udp, 2.1.1.1:1024->80/tcp, 2.1.1.1:1024->80/udp, 1.1.1.1:80->1024/tcp, 1.1.1.1:80->1024/udp, 2.1.1.1:80->1024/tcp, 2.1.1.1:80->1024/udp", cli/command/formatter/disk_usage.go:273:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *diskUsageImagesContext) Type() string { ^ cli/command/formatter/formatter_test.go:31:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f fakeSubContext) FullHeader() any { ^ cli/command/formatter/reflect_test.go:13:7: unused-receiver: method receiver 'd' is not referenced in method's body, consider removing or renaming it as _ (revive) func (d *dummy) Func1() string { ^ cli/command/formatter/disk_usage.go:324:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *diskUsageContainersContext) Type() string { ^ cli/command/formatter/disk_usage.go:332:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *diskUsageContainersContext) isActive(ctr container.Summary) bool { ^ cli/command/formatter/reflect_test.go:17:7: unused-receiver: method receiver 'd' is not referenced in method's body, consider removing or renaming it as _ (revive) func (d *dummy) func2() string { //nolint:unused ^ cli/command/formatter/reflect_test.go:21:7: unused-receiver: method receiver 'd' is not referenced in method's body, consider removing or renaming it as _ (revive) func (d *dummy) Func3() (string, int) { ^ cli/command/formatter/disk_usage.go:385:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *diskUsageVolumesContext) Type() string { ^ cli/command/formatter/disk_usage.go:446:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *diskUsageBuilderContext) Type() string { ^ cli/command/formatter/reflect_test.go:25:7: unused-receiver: method receiver 'd' is not referenced in method's body, consider removing or renaming it as _ (revive) func (d *dummy) Func4() int { ^ cli/command/formatter/reflect_test.go:31:7: unused-receiver: method receiver 'd' is not referenced in method's body, consider removing or renaming it as _ (revive) func (d *dummy) Func5() dummyType { ^ cli/command/formatter/reflect_test.go:35:7: unused-receiver: method receiver 'd' is not referenced in method's body, consider removing or renaming it as _ (revive) func (d *dummy) FullHeader() string { ^ Signed-off-by: Sebastiaan van Stijn --- cli/command/formatter/container_test.go | 10 +++++++--- cli/command/formatter/custom.go | 2 +- cli/command/formatter/disk_usage.go | 10 +++++----- cli/command/formatter/formatter_test.go | 2 +- cli/command/formatter/reflect_test.go | 14 +++++++------- 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/cli/command/formatter/container_test.go b/cli/command/formatter/container_test.go index df2639bf00..6762cec615 100644 --- a/cli/command/formatter/container_test.go +++ b/cli/command/formatter/container_test.go @@ -331,7 +331,12 @@ size: 0B }, // Special headers for customized table format { - context: Context{Format: NewContainerFormat(`table {{truncate .ID 5}}\t{{json .Image}} {{.RunningFor}}/{{title .Status}}/{{pad .Ports 2 2}}.{{upper .Names}} {{lower .Status}}`, false, true)}, + context: Context{ + Format: NewContainerFormat( + `table {{truncate .ID 5}}\t{{json .Image}} {{.RunningFor}}/{{title .Status}}/{{pad .Ports 2 2}}.{{upper .Names}} {{lower .Status}}`, + false, true, + ), + }, expected: string(golden.Get(t, "container-context-write-special-headers.golden")), }, { @@ -525,7 +530,6 @@ type ports struct { expected string } -//nolint:lll func TestDisplayablePorts(t *testing.T) { cases := []ports{ { @@ -828,7 +832,7 @@ func TestDisplayablePorts(t *testing.T) { Type: "sctp", }, }, - expected: "80/tcp, 80/udp, 1024/tcp, 1024/udp, 12345/sctp, 1.1.1.1:1024->80/tcp, 1.1.1.1:1024->80/udp, 2.1.1.1:1024->80/tcp, 2.1.1.1:1024->80/udp, 1.1.1.1:80->1024/tcp, 1.1.1.1:80->1024/udp, 2.1.1.1:80->1024/tcp, 2.1.1.1:80->1024/udp", + expected: "80/tcp, 80/udp, 1024/tcp, 1024/udp, 12345/sctp, 1.1.1.1:1024->80/tcp, 1.1.1.1:1024->80/udp, 2.1.1.1:1024->80/tcp, 2.1.1.1:1024->80/udp, 1.1.1.1:80->1024/tcp, 1.1.1.1:80->1024/udp, 2.1.1.1:80->1024/tcp, 2.1.1.1:80->1024/udp", //nolint:lll,revive // ignore line-length-limit (revive) }, } diff --git a/cli/command/formatter/custom.go b/cli/command/formatter/custom.go index 043e268dbe..6910a261e1 100644 --- a/cli/command/formatter/custom.go +++ b/cli/command/formatter/custom.go @@ -32,7 +32,7 @@ type SubContext interface { type SubHeaderContext map[string]string // Label returns the header label for the specified string -func (c SubHeaderContext) Label(name string) string { +func (SubHeaderContext) Label(name string) string { n := strings.Split(name, ".") r := strings.NewReplacer("-", " ", "_", " ") h := r.Replace(n[len(n)-1]) diff --git a/cli/command/formatter/disk_usage.go b/cli/command/formatter/disk_usage.go index 18d79d08e6..1199d571f3 100644 --- a/cli/command/formatter/disk_usage.go +++ b/cli/command/formatter/disk_usage.go @@ -270,7 +270,7 @@ func (c *diskUsageImagesContext) MarshalJSON() ([]byte, error) { return MarshalJSON(c) } -func (c *diskUsageImagesContext) Type() string { +func (*diskUsageImagesContext) Type() string { return "Images" } @@ -321,7 +321,7 @@ func (c *diskUsageContainersContext) MarshalJSON() ([]byte, error) { return MarshalJSON(c) } -func (c *diskUsageContainersContext) Type() string { +func (*diskUsageContainersContext) Type() string { return "Containers" } @@ -329,7 +329,7 @@ func (c *diskUsageContainersContext) TotalCount() string { return strconv.Itoa(len(c.containers)) } -func (c *diskUsageContainersContext) isActive(ctr container.Summary) bool { +func (*diskUsageContainersContext) isActive(ctr container.Summary) bool { return strings.Contains(ctr.State, "running") || strings.Contains(ctr.State, "paused") || strings.Contains(ctr.State, "restarting") @@ -382,7 +382,7 @@ func (c *diskUsageVolumesContext) MarshalJSON() ([]byte, error) { return MarshalJSON(c) } -func (c *diskUsageVolumesContext) Type() string { +func (*diskUsageVolumesContext) Type() string { return "Local Volumes" } @@ -443,7 +443,7 @@ func (c *diskUsageBuilderContext) MarshalJSON() ([]byte, error) { return MarshalJSON(c) } -func (c *diskUsageBuilderContext) Type() string { +func (*diskUsageBuilderContext) Type() string { return "Build Cache" } diff --git a/cli/command/formatter/formatter_test.go b/cli/command/formatter/formatter_test.go index 7a95f2112e..4deb5e7f90 100644 --- a/cli/command/formatter/formatter_test.go +++ b/cli/command/formatter/formatter_test.go @@ -28,7 +28,7 @@ type fakeSubContext struct { Name string } -func (f fakeSubContext) FullHeader() any { +func (fakeSubContext) FullHeader() any { return map[string]string{"Name": "NAME"} } diff --git a/cli/command/formatter/reflect_test.go b/cli/command/formatter/reflect_test.go index 79737ec5f7..4b736eb74c 100644 --- a/cli/command/formatter/reflect_test.go +++ b/cli/command/formatter/reflect_test.go @@ -10,29 +10,29 @@ import ( type dummy struct{} -func (d *dummy) Func1() string { +func (*dummy) Func1() string { return "Func1" } -func (d *dummy) func2() string { //nolint:unused +func (*dummy) func2() string { //nolint:unused return "func2(should not be marshalled)" } -func (d *dummy) Func3() (string, int) { +func (*dummy) Func3() (string, int) { return "Func3(should not be marshalled)", -42 } -func (d *dummy) Func4() int { +func (*dummy) Func4() int { return 4 } type dummyType string -func (d *dummy) Func5() dummyType { - return dummyType("Func5") +func (*dummy) Func5() dummyType { + return "Func5" } -func (d *dummy) FullHeader() string { +func (*dummy) FullHeader() string { return "FullHeader(should not be marshalled)" } From a54d356a7b58a544d1c3cf51ffdc9bee4af401fb Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:15:54 +0100 Subject: [PATCH 25/36] cli/command/swarm: fix "unused-receiver" linting cli/command/swarm/opts.go:71:7: unused-receiver: method receiver 'a' is not referenced in method's body, consider removing or renaming it as _ (revive) func (a *NodeAddrOption) Type() string { ^ cli/command/swarm/opts.go:107:7: unused-receiver: method receiver 'm' is not referenced in method's body, consider removing or renaming it as _ (revive) func (m *ExternalCAOption) Type() string { ^ cli/command/swarm/opts.go:132:7: unused-receiver: method receiver 'p' is not referenced in method's body, consider removing or renaming it as _ (revive) func (p *PEMFile) Type() string { ^ Signed-off-by: Sebastiaan van Stijn --- cli/command/swarm/opts.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/command/swarm/opts.go b/cli/command/swarm/opts.go index f8ebc900e8..a29a67147c 100644 --- a/cli/command/swarm/opts.go +++ b/cli/command/swarm/opts.go @@ -68,7 +68,7 @@ func (a *NodeAddrOption) Set(value string) error { } // Type returns the type of this flag -func (a *NodeAddrOption) Type() string { +func (*NodeAddrOption) Type() string { return "node-addr" } @@ -104,7 +104,7 @@ func (m *ExternalCAOption) Set(value string) error { } // Type returns the type of this option. -func (m *ExternalCAOption) Type() string { +func (*ExternalCAOption) Type() string { return "external-ca" } @@ -129,7 +129,7 @@ type PEMFile struct { } // Type returns the type of this option. -func (p *PEMFile) Type() string { +func (*PEMFile) Type() string { return "pem-file" } From e2f28fac47140b2768142fc3b785be3f55730244 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:16:42 +0100 Subject: [PATCH 26/36] cli/command/registry: fix "unused-receiver" linting cli/command/registry/login_test.go:36:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *fakeClient) Info(context.Context) (system.Info, error) { ^ cli/command/registry/login_test.go:40:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *fakeClient) RegistryLogin(_ context.Context, auth registrytypes.AuthConfig) (registrytypes.AuthenticateOKBody, error) { ^ Signed-off-by: Sebastiaan van Stijn --- cli/command/registry/login_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/command/registry/login_test.go b/cli/command/registry/login_test.go index dc07f7413e..75bd6a3164 100644 --- a/cli/command/registry/login_test.go +++ b/cli/command/registry/login_test.go @@ -33,11 +33,11 @@ type fakeClient struct { client.Client } -func (c *fakeClient) Info(context.Context) (system.Info, error) { +func (*fakeClient) Info(context.Context) (system.Info, error) { return system.Info{}, nil } -func (c *fakeClient) RegistryLogin(_ context.Context, auth registrytypes.AuthConfig) (registrytypes.AuthenticateOKBody, error) { +func (*fakeClient) RegistryLogin(_ context.Context, auth registrytypes.AuthConfig) (registrytypes.AuthenticateOKBody, error) { if auth.Password == expiredPassword { return registrytypes.AuthenticateOKBody{}, errors.New("Invalid Username or Password") } From 3e44cc4d00e0e8e2ea2fde800142a2c63909425a Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:19:54 +0100 Subject: [PATCH 27/36] cli/command/image: fix "unused-receiver", "line-length-limit" linting cli/command/image/remove_test.go:24:7: unused-receiver: method receiver 'n' is not referenced in method's body, consider removing or renaming it as _ (revive) func (n notFound) NotFound() {} ^ cli/command/image/formatter_history_test.go:110: line-length-limit: line is 558 characters, out of limit 200 (revive) withTabs := `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:lll cli/command/image/formatter_history_test.go:111: line-length-limit: line is 552 characters, out of limit 200 (revive) expected := `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:lll Signed-off-by: Sebastiaan van Stijn --- cli/command/image/formatter_history_test.go | 10 +++++----- cli/command/image/remove_test.go | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli/command/image/formatter_history_test.go b/cli/command/image/formatter_history_test.go index cff2f7f612..21afa94a1f 100644 --- a/cli/command/image/formatter_history_test.go +++ b/cli/command/image/formatter_history_test.go @@ -107,8 +107,8 @@ func TestHistoryContext_CreatedSince(t *testing.T) { } func TestHistoryContext_CreatedBy(t *testing.T) { - withTabs := `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:lll - expected := `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:lll + const withTabs = `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:lll,revive + const expected = `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:lll,revive var ctx historyContext cases := []historyCase{ @@ -138,8 +138,8 @@ func TestHistoryContext_CreatedBy(t *testing.T) { } func TestHistoryContext_Size(t *testing.T) { - size := int64(182964289) - expected := "183MB" + const size = int64(182964289) + const expected = "183MB" var ctx historyContext cases := []historyCase{ @@ -170,7 +170,7 @@ func TestHistoryContext_Size(t *testing.T) { } func TestHistoryContext_Comment(t *testing.T) { - comment := "Some comment" + const comment = "Some comment" var ctx historyContext cases := []historyCase{ diff --git a/cli/command/image/remove_test.go b/cli/command/image/remove_test.go index dc9af57f38..16c0a3c4a1 100644 --- a/cli/command/image/remove_test.go +++ b/cli/command/image/remove_test.go @@ -21,7 +21,7 @@ func (n notFound) Error() string { return "Error: No such image: " + n.imageID } -func (n notFound) NotFound() {} +func (notFound) NotFound() {} func TestNewRemoveCommandAlias(t *testing.T) { cmd := newRemoveCommand(test.NewFakeCli(&fakeClient{})) From 4827fdef91f7de150051299d3e523ce01dff067e Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:20:51 +0100 Subject: [PATCH 28/36] cli/command/trust: fix "unused-receiver" linting cli/command/trust/inspect_pretty_test.go:31:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *fakeClient) Info(context.Context) (system.Info, error) { ^ cli/command/trust/inspect_pretty_test.go:35:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *fakeClient) ImageInspect(context.Context, string, ...client.ImageInspectOption) (image.InspectResponse, error) { ^ cli/command/trust/inspect_pretty_test.go:39:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *fakeClient) ImagePush(context.Context, string, image.PushOptions) (io.ReadCloser, error) { ^ Signed-off-by: Sebastiaan van Stijn --- cli/command/trust/inspect_pretty_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/command/trust/inspect_pretty_test.go b/cli/command/trust/inspect_pretty_test.go index b535c7a9f3..07e4edba41 100644 --- a/cli/command/trust/inspect_pretty_test.go +++ b/cli/command/trust/inspect_pretty_test.go @@ -28,15 +28,15 @@ type fakeClient struct { client.Client } -func (c *fakeClient) Info(context.Context) (system.Info, error) { +func (*fakeClient) Info(context.Context) (system.Info, error) { return system.Info{}, nil } -func (c *fakeClient) ImageInspect(context.Context, string, ...client.ImageInspectOption) (image.InspectResponse, error) { +func (*fakeClient) ImageInspect(context.Context, string, ...client.ImageInspectOption) (image.InspectResponse, error) { return image.InspectResponse{}, nil } -func (c *fakeClient) ImagePush(context.Context, string, image.PushOptions) (io.ReadCloser, error) { +func (*fakeClient) ImagePush(context.Context, string, image.PushOptions) (io.ReadCloser, error) { return &utils.NoopCloser{Reader: bytes.NewBuffer([]byte{})}, nil } From e71380eb5b219ef9d6cd9f5f1934e4d283f11c4b Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:22:02 +0100 Subject: [PATCH 29/36] cli/command/container: fix "unused-receiver" linting cli/command/container/client_test.go:78:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f *fakeClient) ContainerExecStart(context.Context, string, container.ExecStartOptions) error { ^ cli/command/container/create_test.go:383:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f fakeNotFound) NotFound() {} ^ cli/command/container/create_test.go:384:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f fakeNotFound) Error() string { return "error fake not found" } ^ Signed-off-by: Sebastiaan van Stijn --- cli/command/container/client_test.go | 2 +- cli/command/container/create_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/command/container/client_test.go b/cli/command/container/client_test.go index 6da7b4e105..61bf4c9ec8 100644 --- a/cli/command/container/client_test.go +++ b/cli/command/container/client_test.go @@ -75,7 +75,7 @@ func (f *fakeClient) ContainerExecInspect(_ context.Context, execID string) (con return container.ExecInspect{}, nil } -func (f *fakeClient) ContainerExecStart(context.Context, string, container.ExecStartOptions) error { +func (*fakeClient) ContainerExecStart(context.Context, string, container.ExecStartOptions) error { return nil } diff --git a/cli/command/container/create_test.go b/cli/command/container/create_test.go index c02ed14fb5..a5a09ce54a 100644 --- a/cli/command/container/create_test.go +++ b/cli/command/container/create_test.go @@ -380,5 +380,5 @@ func TestCreateContainerWithProxyConfig(t *testing.T) { type fakeNotFound struct{} -func (f fakeNotFound) NotFound() {} -func (f fakeNotFound) Error() string { return "error fake not found" } +func (fakeNotFound) NotFound() {} +func (fakeNotFound) Error() string { return "error fake not found" } From 5ef673bb1494f0abe006fb958b50cc3121fffb89 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:22:42 +0100 Subject: [PATCH 30/36] cli/command/system: fix "unused-receiver" linting cli/command/system/dial_stdio.go:113:7: unused-receiver: method receiver 'x' is not referenced in method's body, consider removing or renaming it as _ (revive) func (x *nopCloseReader) CloseRead() error { ^ Signed-off-by: Sebastiaan van Stijn --- cli/command/system/dial_stdio.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/command/system/dial_stdio.go b/cli/command/system/dial_stdio.go index d4193ce8af..c8ccd181c7 100644 --- a/cli/command/system/dial_stdio.go +++ b/cli/command/system/dial_stdio.go @@ -110,7 +110,7 @@ type nopCloseReader struct { halfReadWriteCloser } -func (x *nopCloseReader) CloseRead() error { +func (*nopCloseReader) CloseRead() error { return nil } From 994e1b7cadec4866a78e5357aeed448da4fd0a9c Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:27:56 +0100 Subject: [PATCH 31/36] cli/command/service: fix "unused-receiver" linting cli/command/service/update_test.go:511:7: unused-receiver: method receiver 's' is not referenced in method's body, consider removing or renaming it as _ (revive) func (s secretAPIClientMock) SecretCreate(context.Context, swarm.SecretSpec) (types.SecretCreateResponse, error) { ^ cli/command/service/update_test.go:515:7: unused-receiver: method receiver 's' is not referenced in method's body, consider removing or renaming it as _ (revive) func (s secretAPIClientMock) SecretRemove(context.Context, string) error { ^ cli/command/service/update_test.go:519:7: unused-receiver: method receiver 's' is not referenced in method's body, consider removing or renaming it as _ (revive) func (s secretAPIClientMock) SecretInspectWithRaw(context.Context, string) (swarm.Secret, []byte, error) { ^ cli/command/service/generic_resource_opts.go:46: line-length-limit: line is 206 characters, out of limit 200 (revive) return nil, fmt.Errorf("invalid generic-resource request `%s=%s`, Named Generic Resources is not supported for service create or update", res.NamedResourceSpec.Kind, res.NamedResourceSpec.Value) cli/command/service/create_test.go:24:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f fakeConfigAPIClientList) ConfigCreate(_ context.Context, _ swarm.ConfigSpec) (types.ConfigCreateResponse, error) { ^ cli/command/service/logs.go:320:7: unused-receiver: method receiver 'lw' is not referenced in method's body, consider removing or renaming it as _ (revive) func (lw *logWriter) parseContext(details map[string]string) (logContext, error) { ^ cli/command/service/opts.go:45:7: unused-receiver: method receiver 'i' is not referenced in method's body, consider removing or renaming it as _ (revive) func (i *Uint64Opt) Type() string { ^ cli/command/service/update_test.go:523:7: unused-receiver: method receiver 's' is not referenced in method's body, consider removing or renaming it as _ (revive) func (s secretAPIClientMock) SecretUpdate(context.Context, string, swarm.Version, swarm.SecretSpec) error { ^ cli/command/service/create_test.go:28:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f fakeConfigAPIClientList) ConfigRemove(_ context.Context, _ string) error { ^ cli/command/service/opts.go:70:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f *floatValue) Type() string { ^ cli/command/service/opts.go:117:7: unused-receiver: method receiver 'o' is not referenced in method's body, consider removing or renaming it as _ (revive) func (o *placementPrefOpts) Type() string { ^ cli/command/service/create_test.go:32:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f fakeConfigAPIClientList) ConfigInspectWithRaw(_ context.Context, _ string) (swarm.Config, []byte, error) { ^ cli/command/service/create_test.go:36:7: unused-receiver: method receiver 'f' is not referenced in method's body, consider removing or renaming it as _ (revive) func (f fakeConfigAPIClientList) ConfigUpdate(_ context.Context, _ string, _ swarm.Version, _ swarm.ConfigSpec) error { ^ cli/command/service/opts.go:135:7: unused-receiver: method receiver 's' is not referenced in method's body, consider removing or renaming it as _ (revive) func (s *ShlexOpt) Type() string { ^ cli/command/service/opts.go:366:7: unused-receiver: method receiver 'c' is not referenced in method's body, consider removing or renaming it as _ (revive) func (c *credentialSpecOpt) Type() string { ^ Signed-off-by: Sebastiaan van Stijn --- cli/command/service/create_test.go | 8 ++++---- cli/command/service/generic_resource_opts.go | 4 +++- cli/command/service/logs.go | 4 ++-- cli/command/service/opts.go | 10 +++++----- cli/command/service/update_test.go | 8 ++++---- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/cli/command/service/create_test.go b/cli/command/service/create_test.go index e37af4bbf6..169a9e2fed 100644 --- a/cli/command/service/create_test.go +++ b/cli/command/service/create_test.go @@ -21,19 +21,19 @@ func (f fakeConfigAPIClientList) ConfigList(ctx context.Context, opts types.Conf return f(ctx, opts) } -func (f fakeConfigAPIClientList) ConfigCreate(_ context.Context, _ swarm.ConfigSpec) (types.ConfigCreateResponse, error) { +func (fakeConfigAPIClientList) ConfigCreate(_ context.Context, _ swarm.ConfigSpec) (types.ConfigCreateResponse, error) { return types.ConfigCreateResponse{}, nil } -func (f fakeConfigAPIClientList) ConfigRemove(_ context.Context, _ string) error { +func (fakeConfigAPIClientList) ConfigRemove(_ context.Context, _ string) error { return nil } -func (f fakeConfigAPIClientList) ConfigInspectWithRaw(_ context.Context, _ string) (swarm.Config, []byte, error) { +func (fakeConfigAPIClientList) ConfigInspectWithRaw(_ context.Context, _ string) (swarm.Config, []byte, error) { return swarm.Config{}, nil, nil } -func (f fakeConfigAPIClientList) ConfigUpdate(_ context.Context, _ string, _ swarm.Version, _ swarm.ConfigSpec) error { +func (fakeConfigAPIClientList) ConfigUpdate(_ context.Context, _ string, _ swarm.Version, _ swarm.ConfigSpec) error { return nil } diff --git a/cli/command/service/generic_resource_opts.go b/cli/command/service/generic_resource_opts.go index 613c255749..ba5cf6aa5b 100644 --- a/cli/command/service/generic_resource_opts.go +++ b/cli/command/service/generic_resource_opts.go @@ -43,7 +43,9 @@ func ParseGenericResources(value []string) ([]swarm.GenericResource, error) { swarmResources := genericResourcesFromGRPC(resources) for _, res := range swarmResources { if res.NamedResourceSpec != nil { - return nil, fmt.Errorf("invalid generic-resource request `%s=%s`, Named Generic Resources is not supported for service create or update", res.NamedResourceSpec.Kind, res.NamedResourceSpec.Value) + return nil, fmt.Errorf("invalid generic-resource request `%s=%s`, Named Generic Resources is not supported for service create or update", + res.NamedResourceSpec.Kind, res.NamedResourceSpec.Value, + ) } } diff --git a/cli/command/service/logs.go b/cli/command/service/logs.go index b9f964aec9..dd56f828f9 100644 --- a/cli/command/service/logs.go +++ b/cli/command/service/logs.go @@ -265,7 +265,7 @@ func (lw *logWriter) Write(buf []byte) (int, error) { // and then create a context from the details // this removes the context-specific details from the details map, so we // can more easily print the details later - logCtx, err := lw.parseContext(details) + logCtx, err := parseContext(details) if err != nil { return 0, err } @@ -317,7 +317,7 @@ func (lw *logWriter) Write(buf []byte) (int, error) { } // parseContext returns a log context and REMOVES the context from the details map -func (lw *logWriter) parseContext(details map[string]string) (logContext, error) { +func parseContext(details map[string]string) (logContext, error) { nodeID, ok := details["com.docker.swarm.node.id"] if !ok { return logContext{}, errors.Errorf("missing node id in details: %v", details) diff --git a/cli/command/service/opts.go b/cli/command/service/opts.go index 9298cfb131..983e2233be 100644 --- a/cli/command/service/opts.go +++ b/cli/command/service/opts.go @@ -42,7 +42,7 @@ func (i *Uint64Opt) Set(s string) error { } // Type returns the type of this option, which will be displayed in `--help` output -func (i *Uint64Opt) Type() string { +func (*Uint64Opt) Type() string { return "uint" } @@ -67,7 +67,7 @@ func (f *floatValue) Set(s string) error { return err } -func (f *floatValue) Type() string { +func (*floatValue) Type() string { return "float" } @@ -114,7 +114,7 @@ func (o *placementPrefOpts) Set(value string) error { } // Type returns a string name for this Option type -func (o *placementPrefOpts) Type() string { +func (*placementPrefOpts) Type() string { return "pref" } @@ -132,7 +132,7 @@ func (s *ShlexOpt) Set(value string) error { } // Type returns the type of the value -func (s *ShlexOpt) Type() string { +func (*ShlexOpt) Type() string { return "command" } @@ -363,7 +363,7 @@ func (c *credentialSpecOpt) Set(value string) error { return nil } -func (c *credentialSpecOpt) Type() string { +func (*credentialSpecOpt) Type() string { return "credential-spec" } diff --git a/cli/command/service/update_test.go b/cli/command/service/update_test.go index 136f655122..2ace1e2c24 100644 --- a/cli/command/service/update_test.go +++ b/cli/command/service/update_test.go @@ -508,19 +508,19 @@ func (s secretAPIClientMock) SecretList(context.Context, types.SecretListOptions return s.listResult, nil } -func (s secretAPIClientMock) SecretCreate(context.Context, swarm.SecretSpec) (types.SecretCreateResponse, error) { +func (secretAPIClientMock) SecretCreate(context.Context, swarm.SecretSpec) (types.SecretCreateResponse, error) { return types.SecretCreateResponse{}, nil } -func (s secretAPIClientMock) SecretRemove(context.Context, string) error { +func (secretAPIClientMock) SecretRemove(context.Context, string) error { return nil } -func (s secretAPIClientMock) SecretInspectWithRaw(context.Context, string) (swarm.Secret, []byte, error) { +func (secretAPIClientMock) SecretInspectWithRaw(context.Context, string) (swarm.Secret, []byte, error) { return swarm.Secret{}, []byte{}, nil } -func (s secretAPIClientMock) SecretUpdate(context.Context, string, swarm.Version, swarm.SecretSpec) error { +func (secretAPIClientMock) SecretUpdate(context.Context, string, swarm.Version, swarm.SecretSpec) error { return nil } From 1a4491f8c649534680ec234a5e760e19f4e9ac1e Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:29:22 +0100 Subject: [PATCH 32/36] cli/command/stack: fix "unused-receiver" linting cli/command/stack/swarm/client_test.go:47:7: unused-receiver: method receiver 'cli' is not referenced in method's body, consider removing or renaming it as _ (revive) func (cli *fakeClient) ServerVersion(context.Context) (types.Version, error) { ^ cli/command/stack/swarm/deploy_composefile_test.go:17:7: unused-receiver: method receiver 'n' is not referenced in method's body, consider removing or renaming it as _ (revive) func (n notFound) NotFound() {} ^ cli/command/stack/client_test.go:47:7: unused-receiver: method receiver 'cli' is not referenced in method's body, consider removing or renaming it as _ (revive) func (cli *fakeClient) ServerVersion(context.Context) (types.Version, error) { ^ cli/command/stack/client_test.go:183:7: unused-receiver: method receiver 'cli' is not referenced in method's body, consider removing or renaming it as _ (revive) func (cli *fakeClient) ServiceInspectWithRaw(_ context.Context, serviceID string, _ types.ServiceInspectOptions) (swarm.Service, []byte, error) { ^ Signed-off-by: Sebastiaan van Stijn --- cli/command/stack/client_test.go | 4 ++-- cli/command/stack/swarm/client_test.go | 2 +- cli/command/stack/swarm/deploy_composefile_test.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/command/stack/client_test.go b/cli/command/stack/client_test.go index 7d9072d2de..ea1ed02a4d 100644 --- a/cli/command/stack/client_test.go +++ b/cli/command/stack/client_test.go @@ -44,7 +44,7 @@ type fakeClient struct { configRemoveFunc func(configID string) error } -func (cli *fakeClient) ServerVersion(context.Context) (types.Version, error) { +func (*fakeClient) ServerVersion(context.Context) (types.Version, error) { return types.Version{ Version: "docker-dev", APIVersion: api.DefaultVersion, @@ -180,7 +180,7 @@ func (cli *fakeClient) ConfigRemove(_ context.Context, configID string) error { return nil } -func (cli *fakeClient) ServiceInspectWithRaw(_ context.Context, serviceID string, _ types.ServiceInspectOptions) (swarm.Service, []byte, error) { +func (*fakeClient) ServiceInspectWithRaw(_ context.Context, serviceID string, _ types.ServiceInspectOptions) (swarm.Service, []byte, error) { return swarm.Service{ ID: serviceID, Spec: swarm.ServiceSpec{ diff --git a/cli/command/stack/swarm/client_test.go b/cli/command/stack/swarm/client_test.go index 78f4997c6a..28f6aac35c 100644 --- a/cli/command/stack/swarm/client_test.go +++ b/cli/command/stack/swarm/client_test.go @@ -44,7 +44,7 @@ type fakeClient struct { configRemoveFunc func(configID string) error } -func (cli *fakeClient) ServerVersion(context.Context) (types.Version, error) { +func (*fakeClient) ServerVersion(context.Context) (types.Version, error) { return types.Version{ Version: "docker-dev", APIVersion: api.DefaultVersion, diff --git a/cli/command/stack/swarm/deploy_composefile_test.go b/cli/command/stack/swarm/deploy_composefile_test.go index 0df678a84f..7df4b4551c 100644 --- a/cli/command/stack/swarm/deploy_composefile_test.go +++ b/cli/command/stack/swarm/deploy_composefile_test.go @@ -14,7 +14,7 @@ type notFound struct { error } -func (n notFound) NotFound() {} +func (notFound) NotFound() {} func TestValidateExternalNetworks(t *testing.T) { testcases := []struct { From a35b899dfee0813e74d6825b02aaff7c865a5775 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 14:30:02 +0100 Subject: [PATCH 33/36] cmd/docker: fix "unused-receiver" linting cmd/docker/docker.go:35:7: unused-receiver: method receiver 'e' is not referenced in method's body, consider removing or renaming it as _ (revive) func (e errCtxSignalTerminated) Error() string { ^ Signed-off-by: Sebastiaan van Stijn --- cmd/docker/docker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/docker/docker.go b/cmd/docker/docker.go index b5cb621923..46a235c4bd 100644 --- a/cmd/docker/docker.go +++ b/cmd/docker/docker.go @@ -32,7 +32,7 @@ type errCtxSignalTerminated struct { signal os.Signal } -func (e errCtxSignalTerminated) Error() string { +func (errCtxSignalTerminated) Error() string { return "" } From 71c40dfa71dcc791b1c6464ab3a0f7c33e3b9da3 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 5 Nov 2024 11:33:02 +0100 Subject: [PATCH 34/36] golangci-lint: sort revive rules Signed-off-by: Sebastiaan van Stijn --- .golangci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index fc4d8b48df..5173999070 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -86,10 +86,6 @@ linters-settings: revive: rules: - # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-shadowing - - name: import-shadowing - severity: warning - disabled: false # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-block - name: empty-block severity: warning @@ -98,6 +94,10 @@ linters-settings: - name: empty-lines severity: warning disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-shadowing + - name: import-shadowing + severity: warning + disabled: false # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#use-any - name: use-any severity: warning From a67c6565791cdd7166dca541961a33e4a89da1db Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 5 Nov 2024 11:59:18 +0100 Subject: [PATCH 35/36] golangci-lint: enable revive "unused-receiver" rule Signed-off-by: Sebastiaan van Stijn --- .golangci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.golangci.yml b/.golangci.yml index 5173999070..2d2cd123cd 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -98,6 +98,10 @@ linters-settings: - name: import-shadowing severity: warning disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-receiver + - name: unused-receiver + severity: warning + disabled: false # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#use-any - name: use-any severity: warning From 2b169c1ab53c177e61ef65c223cf33c85c509162 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 17 Feb 2025 15:01:26 +0100 Subject: [PATCH 36/36] golangci-lint: enable revive "line-length-limit" linter also disable "lll" linter as it did the same. Signed-off-by: Sebastiaan van Stijn --- .golangci.yml | 6 +++++- cli/command/formatter/container_test.go | 2 +- cli/command/image/formatter_history_test.go | 4 ++-- cli/internal/oauth/manager/manager_test.go | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 2d2cd123cd..3a1385998f 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -15,7 +15,6 @@ linters: - gosimple - govet - ineffassign - - lll - misspell # Detects commonly misspelled English words in comments. - nakedret - nilerr # Detects code that returns nil even if it checks that the error is not nil. @@ -98,6 +97,11 @@ linters-settings: - name: import-shadowing severity: warning disabled: false + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#line-length-limit + - name: line-length-limit + severity: warning + disabled: false + arguments: [200] # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-receiver - name: unused-receiver severity: warning diff --git a/cli/command/formatter/container_test.go b/cli/command/formatter/container_test.go index 6762cec615..fc57493830 100644 --- a/cli/command/formatter/container_test.go +++ b/cli/command/formatter/container_test.go @@ -832,7 +832,7 @@ func TestDisplayablePorts(t *testing.T) { Type: "sctp", }, }, - expected: "80/tcp, 80/udp, 1024/tcp, 1024/udp, 12345/sctp, 1.1.1.1:1024->80/tcp, 1.1.1.1:1024->80/udp, 2.1.1.1:1024->80/tcp, 2.1.1.1:1024->80/udp, 1.1.1.1:80->1024/tcp, 1.1.1.1:80->1024/udp, 2.1.1.1:80->1024/tcp, 2.1.1.1:80->1024/udp", //nolint:lll,revive // ignore line-length-limit (revive) + expected: "80/tcp, 80/udp, 1024/tcp, 1024/udp, 12345/sctp, 1.1.1.1:1024->80/tcp, 1.1.1.1:1024->80/udp, 2.1.1.1:1024->80/tcp, 2.1.1.1:1024->80/udp, 1.1.1.1:80->1024/tcp, 1.1.1.1:80->1024/udp, 2.1.1.1:80->1024/tcp, 2.1.1.1:80->1024/udp", //nolint:revive // ignore line-length-limit (revive) }, } diff --git a/cli/command/image/formatter_history_test.go b/cli/command/image/formatter_history_test.go index 21afa94a1f..e67fa946f0 100644 --- a/cli/command/image/formatter_history_test.go +++ b/cli/command/image/formatter_history_test.go @@ -107,8 +107,8 @@ func TestHistoryContext_CreatedSince(t *testing.T) { } func TestHistoryContext_CreatedBy(t *testing.T) { - const withTabs = `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:lll,revive - const expected = `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:lll,revive + const withTabs = `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:revive // ignore line-length-limit + const expected = `/bin/sh -c apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 && echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list && apt-get update && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates nginx=${NGINX_VERSION} nginx-module-xslt nginx-module-geoip nginx-module-image-filter nginx-module-perl nginx-module-njs gettext-base && rm -rf /var/lib/apt/lists/*` //nolint:revive // ignore line-length-limit var ctx historyContext cases := []historyCase{ diff --git a/cli/internal/oauth/manager/manager_test.go b/cli/internal/oauth/manager/manager_test.go index 65beda607e..37fae3f918 100644 --- a/cli/internal/oauth/manager/manager_test.go +++ b/cli/internal/oauth/manager/manager_test.go @@ -14,7 +14,7 @@ import ( ) const ( - //nolint:lll,revive + //nolint:revive // ignore line-length-limit validToken = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InhYa3BCdDNyV3MyRy11YjlscEpncSJ9.eyJodHRwczovL2h1Yi5kb2NrZXIuY29tIjp7ImVtYWlsIjoiYm9ya0Bkb2NrZXIuY29tIiwic2Vzc2lvbl9pZCI6ImEtc2Vzc2lvbi1pZCIsInNvdXJjZSI6InNhbWxwIiwidXNlcm5hbWUiOiJib3JrISIsInV1aWQiOiIwMTIzLTQ1Njc4OSJ9LCJpc3MiOiJodHRwczovL2xvZ2luLmRvY2tlci5jb20vIiwic3ViIjoic2FtbHB8c2FtbHAtZG9ja2VyfGJvcmtAZG9ja2VyLmNvbSIsImF1ZCI6WyJodHRwczovL2F1ZGllbmNlLmNvbSJdLCJpYXQiOjE3MTk1MDI5MzksImV4cCI6MTcxOTUwNjUzOSwic2NvcGUiOiJvcGVuaWQgb2ZmbGluZV9hY2Nlc3MifQ.VUSp-9_SOvMPWJPRrSh7p4kSPoye4DA3kyd2I0TW0QtxYSRq7xCzNj0NC_ywlPlKBFBeXKm4mh93d1vBSh79I9Heq5tj0Fr4KH77U5xJRMEpjHqoT5jxMEU1hYXX92xctnagBMXxDvzUfu3Yf0tvYSA0RRoGbGTHfdYYRwOrGbwQ75Qg1dyIxUkwsG053eYX2XkmLGxymEMgIq_gWksgAamOc40_0OCdGr-MmDeD2HyGUa309aGltzQUw7Z0zG1AKSXy3WwfMHdWNFioTAvQphwEyY3US8ybSJi78upSFTjwUcryMeHUwQ3uV9PxwPMyPoYxo1izVB-OUJxM8RqEbg" )