From 39522310fefd208e2934d93c82985e4d8ed63666 Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 13:54:52 +0100 Subject: [PATCH 01/13] lint: respect QF1008 --- .golangci.yaml | 1 - cmd/chisel/cmd_help.go | 8 ++++---- cmd/chisel/main.go | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index ee49e432..2ad791dc 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -56,7 +56,6 @@ linters: - all # Checks now detecting new issues after migrating to golangci-lint v2. # TODO: Remove these and solve raised issues. - - -QF1008 - -ST1005 - -ST1012 - -QF1004 diff --git a/cmd/chisel/cmd_help.go b/cmd/chisel/cmd_help.go index 2d0b0e7a..e366d31f 100644 --- a/cmd/chisel/cmd_help.go +++ b/cmd/chisel/cmd_help.go @@ -26,7 +26,7 @@ func addHelp(parser *flags.Parser) error { // case, parser.Command.Active should be the command // on which help is being requested (like "chisel foo // --help", active is foo), or nil in the toplevel. - if parser.Command.Active == nil { + if parser.Active == nil { // this means *either* a bare 'chisel --help', // *or* 'chisel --help command' // @@ -101,7 +101,7 @@ func (w *manfixer) Write(buf []byte) (int, error) { var tpRegexp = regexp.MustCompile(`(?m)(?:^\.TP\n)+`) func (w *manfixer) flush() error { - str := tpRegexp.ReplaceAllLiteralString(w.Buffer.String(), ".TP\n") + str := tpRegexp.ReplaceAllLiteralString(w.String(), ".TP\n") _, err := io.Copy(Stdout, strings.NewReader(str)) return err } @@ -131,12 +131,12 @@ func (cmd cmdHelp) Execute(args []string) error { // the subcommand is set below. The Active command at this point is `chisel // help`, in the loop below we change it to be `chisel os.Args[1] // os.Args[2] ...`. - cmd.parser.Command.Active = nil + cmd.parser.Active = nil for _, subname := range cmd.Positional.Subs { subcmd = subcmd.Find(subname) if subcmd == nil { sug := "chisel help" - if x := cmd.parser.Command.Active; x != nil && x.Name != "help" { + if x := cmd.parser.Active; x != nil && x.Name != "help" { sug = "chisel help " + x.Name } return fmt.Errorf("unknown command %q, see '%s'.", subname, sug) diff --git a/cmd/chisel/main.go b/cmd/chisel/main.go index 50792839..c3b00d1f 100644 --- a/cmd/chisel/main.go +++ b/cmd/chisel/main.go @@ -345,7 +345,7 @@ func run() error { sug := "chisel help" if len(xtra) > 0 { sub = xtra[0] - if x := parser.Command.Active; x != nil && x.Name != "help" { + if x := parser.Active; x != nil && x.Name != "help" { sug = "chisel help " + x.Name } } From fd099132ca64409293b70bbde39126bc47024dbe Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 13:58:32 +0100 Subject: [PATCH 02/13] lint: respect QF1004 --- .golangci.yaml | 2 -- internal/slicer/slicer_test.go | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 2ad791dc..04f3ae96 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -56,9 +56,7 @@ linters: - all # Checks now detecting new issues after migrating to golangci-lint v2. # TODO: Remove these and solve raised issues. - - -ST1005 - -ST1012 - - -QF1004 - -ST1011 - -ST1005 - -ST1003 diff --git a/internal/slicer/slicer_test.go b/internal/slicer/slicer_test.go index fe408e6d..4600935d 100644 --- a/internal/slicer/slicer_test.go +++ b/internal/slicer/slicer_test.go @@ -1990,7 +1990,7 @@ func (s *S) TestRun(c *C) { m := make(map[string]string) for k, v := range t.release { if !strings.Contains(v, "v2-archives:") { - v = strings.Replace(v, "archives:", "v2-archives:", -1) + v = strings.ReplaceAll(v, "archives:", "v2-archives:") } m[k] = v } @@ -2007,7 +2007,7 @@ func (s *S) TestRun(c *C) { if strings.Contains(v, "format: v1") && !strings.Contains(v, "v2-archives:") && !strings.Contains(v, "default: true") { - v = strings.Replace(v, "format: v1", "format: v2", -1) + v = strings.ReplaceAll(v, "format: v1", "format: v2") } m[k] = v } From fe8559d5a046d9d8ba2d3186612282137f6e6071 Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 14:03:41 +0100 Subject: [PATCH 03/13] lint: respect QF1001 --- .golangci.yaml | 1 - cmd/chisel/main.go | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 04f3ae96..31fb2e06 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -64,7 +64,6 @@ linters: - -QF1011 - -S1011 - -S1005 - - -QF1001 - -QF1012 issues: max-issues-per-linter: 0 diff --git a/cmd/chisel/main.go b/cmd/chisel/main.go index c3b00d1f..441d1a54 100644 --- a/cmd/chisel/main.go +++ b/cmd/chisel/main.go @@ -206,7 +206,7 @@ func Parser() *flags.Parser { name = string(opt.ShortName) } desc, ok := c.optDescs[name] - if !(c.optDescs == nil || ok) { + if c.optDescs != nil && !ok { panicf("%s missing description for %s", c.name, name) } lintDesc(c.name, name, desc, opt.Description) @@ -261,7 +261,7 @@ func Parser() *flags.Parser { name = string(opt.ShortName) } desc, ok := c.optDescs[name] - if !(c.optDescs == nil || ok) { + if c.optDescs != nil && !ok { panicf("%s missing description for %s", c.name, name) } lintDesc(c.name, name, desc, opt.Description) From 76e9807df0652e72d7c4cac32c0367eaf0be8925 Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 14:05:37 +0100 Subject: [PATCH 04/13] lint: respect S1005 --- .golangci.yaml | 1 - internal/deb/extract.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 31fb2e06..2a03c1b5 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -63,7 +63,6 @@ linters: - -QF1009 - -QF1011 - -S1011 - - -S1005 - -QF1012 issues: max-issues-per-linter: 0 diff --git a/internal/deb/extract.go b/internal/deb/extract.go index 5f1f09d6..67bee3f3 100644 --- a/internal/deb/extract.go +++ b/internal/deb/extract.go @@ -368,7 +368,7 @@ func extractHardLinks(pkgReader io.ReadSeeker, opts *extractHardLinkOptions) err // this package. if len(opts.pendingLinks) > 0 { var targets []string - for target, _ := range opts.pendingLinks { + for target := range opts.pendingLinks { targets = append(targets, target) } sort.Strings(targets) From 76978ba4fcf739c977516d1a55d0782a9ae19954 Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 14:13:29 +0100 Subject: [PATCH 05/13] lint: respect S1011 --- .golangci.yaml | 1 - internal/slicer/slicer_test.go | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 2a03c1b5..7aca4885 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -62,7 +62,6 @@ linters: - -ST1003 - -QF1009 - -QF1011 - - -S1011 - -QF1012 issues: max-issues-per-linter: 0 diff --git a/internal/slicer/slicer_test.go b/internal/slicer/slicer_test.go index 4600935d..8d3cf775 100644 --- a/internal/slicer/slicer_test.go +++ b/internal/slicer/slicer_test.go @@ -2190,10 +2190,7 @@ func treeDumpManifestPaths(mfest *manifest.Manifest) (map[string]string, error) } // append {slice1, ..., sliceN} to the end of the path dump. - slicesStr := make([]string, 0, len(path.Slices)) - for _, slice := range path.Slices { - slicesStr = append(slicesStr, slice) - } + slicesStr := slices.Clone(path.Slices) sort.Strings(slicesStr) result[path.Path] = fmt.Sprintf("%s {%s}", fsDump, strings.Join(slicesStr, ",")) return nil From dc1a6fff5973a7820b34b9f8e65e398719d7cabc Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 14:39:48 +0100 Subject: [PATCH 06/13] lint: respect ST1005 --- .golangci.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 7aca4885..4e5f224d 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -50,6 +50,10 @@ linters: - staticcheck path: ^.*.go$ text: '"golang.org/x/crypto/openpgp/\w+" is deprecated' + - linters: + - staticcheck + path: cmd/chisel/.*.go + text: "ST1005:" settings: staticcheck: checks: @@ -57,8 +61,6 @@ linters: # Checks now detecting new issues after migrating to golangci-lint v2. # TODO: Remove these and solve raised issues. - -ST1012 - - -ST1011 - - -ST1005 - -ST1003 - -QF1009 - -QF1011 From e26fad150334b975a3928ee9dda3b99d24140b1d Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 14:44:02 +0100 Subject: [PATCH 07/13] lint: respect ST1003 --- .golangci.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.golangci.yaml b/.golangci.yaml index 4e5f224d..b44653dd 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -54,6 +54,10 @@ linters: - staticcheck path: cmd/chisel/.*.go text: "ST1005:" + - linters: + - staticcheck + path: ^.*/log.go$ + text: "ST1003:" settings: staticcheck: checks: @@ -61,7 +65,6 @@ linters: # Checks now detecting new issues after migrating to golangci-lint v2. # TODO: Remove these and solve raised issues. - -ST1012 - - -ST1003 - -QF1009 - -QF1011 - -QF1012 From 5923e1ab5a9ae6890630249e9fbbfec0d7de2b88 Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 14:46:24 +0100 Subject: [PATCH 08/13] lint: respect QF1009 --- .golangci.yaml | 1 - internal/testutil/pkgdata.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index b44653dd..f372958c 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -65,7 +65,6 @@ linters: # Checks now detecting new issues after migrating to golangci-lint v2. # TODO: Remove these and solve raised issues. - -ST1012 - - -QF1009 - -QF1011 - -QF1012 issues: diff --git a/internal/testutil/pkgdata.go b/internal/testutil/pkgdata.go index 5875d93c..f901873d 100644 --- a/internal/testutil/pkgdata.go +++ b/internal/testutil/pkgdata.go @@ -82,7 +82,7 @@ func fixupTarEntry(entry *TarEntry) { if hdr.Gid == 0 && hdr.Gname == "" { hdr.Gname = "root" } - if hdr.ModTime == zeroTime { + if hdr.ModTime.Equal(zeroTime) { hdr.ModTime = epochStartTime } if hdr.Format == 0 { From 4d8ac23996ec2a3a44c959ae3a598d5282c0945d Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 14:50:38 +0100 Subject: [PATCH 09/13] lint: respect QF1012 --- .golangci.yaml | 1 - internal/archive/testarchive/testarchive.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index f372958c..0945a360 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -66,7 +66,6 @@ linters: # TODO: Remove these and solve raised issues. - -ST1012 - -QF1011 - - -QF1012 issues: max-issues-per-linter: 0 max-same-issues: 0 diff --git a/internal/archive/testarchive/testarchive.go b/internal/archive/testarchive/testarchive.go index f51f0977..e3b7317e 100644 --- a/internal/archive/testarchive/testarchive.go +++ b/internal/archive/testarchive/testarchive.go @@ -125,7 +125,7 @@ func (r *Release) Content() []byte { digests := bytes.Buffer{} for _, item := range r.Items { content := item.Content() - digests.WriteString(fmt.Sprintf(" %s %d %s\n", makeSha256(content), len(content), item.Path())) + fmt.Fprintf(&digests," %s %d %s\n", makeSha256(content), len(content), item.Path()) } content := fmt.Sprintf(string(testutil.Reindent(` Origin: Ubuntu From dca09c541ca0dbf1161725f963858fb4a869a1f9 Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 14:55:04 +0100 Subject: [PATCH 10/13] lint: respect ST1012 --- .golangci.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.golangci.yaml b/.golangci.yaml index 0945a360..3671732b 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -58,13 +58,20 @@ linters: - staticcheck path: ^.*/log.go$ text: "ST1003:" + - linters: + - staticcheck + path: internal/cache/cache.go + text: "ST1012: error var MissErr" + - linters: + - staticcheck + path: internal/setup/setup.go + text: "ST1012: error var preferNone" settings: staticcheck: checks: - all # Checks now detecting new issues after migrating to golangci-lint v2. # TODO: Remove these and solve raised issues. - - -ST1012 - -QF1011 issues: max-issues-per-linter: 0 From 881f3120e48fb594c9b3e38b16894c3a09a9c3a3 Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 15:08:28 +0100 Subject: [PATCH 11/13] lint: respect QF1011 --- .golangci.yaml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 3671732b..465bfbb8 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -66,13 +66,10 @@ linters: - staticcheck path: internal/setup/setup.go text: "ST1012: error var preferNone" - settings: - staticcheck: - checks: - - all - # Checks now detecting new issues after migrating to golangci-lint v2. - # TODO: Remove these and solve raised issues. - - -QF1011 + - linters: + - staticcheck + path: internal/testutil/containschecker.go + text: "QF1011" issues: max-issues-per-linter: 0 max-same-issues: 0 From 122c3c4dbfd4dd5d03d012c5d9ebc5dcee92d08c Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 15:11:02 +0100 Subject: [PATCH 12/13] lint: remove unused exclusion --- .golangci.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 465bfbb8..656acfc1 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -26,10 +26,6 @@ linters: - errcheck path: internal/setup/fetch.go text: lockFile.Unlock.*not checked - - linters: - - unused - path: cmd/chisel/main.go - text: addDebugCommand.*unused - linters: - unused path: ^.*/log.go$ From 444110c25315fb767bd6b01ffbfe638607cc541a Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Mon, 16 Mar 2026 15:22:29 +0100 Subject: [PATCH 13/13] lint: formatting --- internal/archive/testarchive/testarchive.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/archive/testarchive/testarchive.go b/internal/archive/testarchive/testarchive.go index e3b7317e..ea5b8e08 100644 --- a/internal/archive/testarchive/testarchive.go +++ b/internal/archive/testarchive/testarchive.go @@ -125,7 +125,7 @@ func (r *Release) Content() []byte { digests := bytes.Buffer{} for _, item := range r.Items { content := item.Content() - fmt.Fprintf(&digests," %s %d %s\n", makeSha256(content), len(content), item.Path()) + fmt.Fprintf(&digests, " %s %d %s\n", makeSha256(content), len(content), item.Path()) } content := fmt.Sprintf(string(testutil.Reindent(` Origin: Ubuntu