Skip to content

Commit 983cc63

Browse files
bilby91claude
andcommitted
ci: explicit error handling on remaining errcheck call sites
The previous .golangci.yml exclude-functions list only matches interface-typed call sites (e.g. (io.Closer).Close); concrete-type calls like *tar.Writer.Close, *gzip.Reader.Close, and http.ResponseWriter.Write still triggered errcheck. Rather than enumerate every concrete type, fix the 9 remaining call sites surgically: examples/*/main.go defer rt.Close() → defer func() { _ = rt.Close() }() defer eng.Down(...) → log on error (down is a real call worth surfacing in examples). feature/extract.go defer gz.Close() (gzip.Reader) runtime/docker/build.go defer tw.Close() (tar.Writer) feature/https_test.go w.Write in httptest handler All wrapped with `_ =` since the errors are not actionable in their contexts. Tests still pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent f3384cb commit 983cc63

6 files changed

Lines changed: 24 additions & 12 deletions

File tree

examples/compose/main.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ services:
6767
if err != nil {
6868
log.Fatalf("docker daemon: %v", err)
6969
}
70-
defer rt.Close()
70+
defer func() { _ = rt.Close() }()
7171

7272
eng, err := devcontainer.New(devcontainer.EngineOptions{Runtime: rt})
7373
if err != nil {
@@ -82,10 +82,14 @@ services:
8282
if err != nil {
8383
log.Fatalf("up: %v", err)
8484
}
85-
defer eng.Down(context.Background(), ws, devcontainer.DownOptions{
86-
Remove: true,
87-
RemoveVolumes: true,
88-
})
85+
defer func() {
86+
if err := eng.Down(context.Background(), ws, devcontainer.DownOptions{
87+
Remove: true,
88+
RemoveVolumes: true,
89+
}); err != nil {
90+
log.Printf("down: %v", err)
91+
}
92+
}()
8993

9094
fmt.Printf("workspace: %s\nprimary container: %s\n", ws.ID, ws.Container.ID)
9195
fmt.Printf("compose project: %s\n", ws.Container.Labels["com.docker.compose.project"])

examples/image-source/main.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func main() {
4747
if err != nil {
4848
log.Fatalf("docker daemon: %v", err)
4949
}
50-
defer rt.Close()
50+
defer func() { _ = rt.Close() }()
5151

5252
eng, err := devcontainer.New(devcontainer.EngineOptions{Runtime: rt})
5353
if err != nil {
@@ -63,7 +63,11 @@ func main() {
6363
if err != nil {
6464
log.Fatalf("up: %v", err)
6565
}
66-
defer eng.Down(context.Background(), ws, devcontainer.DownOptions{Remove: true})
66+
defer func() {
67+
if err := eng.Down(context.Background(), ws, devcontainer.DownOptions{Remove: true}); err != nil {
68+
log.Printf("down: %v", err)
69+
}
70+
}()
6771

6872
fmt.Printf("workspace id: %s\ncontainer id: %s\n", ws.ID, ws.Container.ID)
6973

examples/with-features/main.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ echo example-feature-installed > /etc/example-feature-marker
6868
if err != nil {
6969
log.Fatalf("docker daemon: %v", err)
7070
}
71-
defer rt.Close()
71+
defer func() { _ = rt.Close() }()
7272

7373
eng, err := devcontainer.New(devcontainer.EngineOptions{Runtime: rt})
7474
if err != nil {
@@ -83,7 +83,11 @@ echo example-feature-installed > /etc/example-feature-marker
8383
if err != nil {
8484
log.Fatalf("up: %v", err)
8585
}
86-
defer eng.Down(context.Background(), ws, devcontainer.DownOptions{Remove: true})
86+
defer func() {
87+
if err := eng.Down(context.Background(), ws, devcontainer.DownOptions{Remove: true}); err != nil {
88+
log.Printf("down: %v", err)
89+
}
90+
}()
8791

8892
fmt.Printf("workspace: %s\ncontainer: %s\n", ws.ID, ws.Container.ID)
8993

feature/extract.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func extractTarball(r io.Reader, dst string) error {
2525
if err != nil {
2626
return fmt.Errorf("gzip: %w", err)
2727
}
28-
defer gz.Close()
28+
defer func() { _ = gz.Close() }()
2929
return extractTar(gz, dst)
3030
}
3131

feature/https_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestFetchHTTPS_HappyPath(t *testing.T) {
2424
http.NotFound(w, r)
2525
return
2626
}
27-
w.Write(body)
27+
_, _ = w.Write(body)
2828
}))
2929
defer srv.Close()
3030

runtime/docker/build.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ func streamBuildOutput(ctx context.Context, body io.ReadCloser, events chan<- ru
137137
// error rather than silently dropped.
138138
func tarDirectory(dir string, w io.Writer) error {
139139
tw := tar.NewWriter(w)
140-
defer tw.Close()
140+
defer func() { _ = tw.Close() }()
141141

142142
return filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error {
143143
if err != nil {

0 commit comments

Comments
 (0)