Enable errcheck linter and fix all production code warnings

- Enabled errcheck linter (previously disabled)
- Set tests: false in .golangci.yml to focus on production code
- Fixed 27 errcheck warnings using Go best practices:
  * Database resources: defer func() { _ = rows.Close() }()
  * Transaction rollbacks: defer func() { _ = tx.Rollback() }()
  * Best-effort closers: _ = store.Close(), _ = client.Close()
  * File writes: proper error checking on Close()
  * Interactive input: handle EOF gracefully
  * File ops: ignore ENOENT on os.Remove()
- All tests pass
- Closes bd-58

Amp-Thread-ID: https://ampcode.com/threads/T-57c9afd3-9adf-40c2-8be7-3e493d200361
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
Steve Yegge
2025-10-25 18:44:38 -07:00
parent bb33007036
commit b855c444d4
22 changed files with 100 additions and 78 deletions

View File

@@ -587,7 +587,7 @@ func restartDaemonForVersionMismatch() bool {
cmd.Stdin = devNull
cmd.Stdout = devNull
cmd.Stderr = devNull
defer devNull.Close()
defer func() { _ = devNull.Close() }()
}
if err := cmd.Start(); err != nil {
@@ -637,7 +637,11 @@ func tryAutoStartDaemon(socketPath string) bool {
if !acquireStartLock(lockPath, socketPath) {
return false
}
defer os.Remove(lockPath)
defer func() {
if err := os.Remove(lockPath); err != nil && !os.IsNotExist(err) {
debugLog("failed to remove lock file: %v", err)
}
}()
if handleExistingSocket(socketPath) {
return true
@@ -777,7 +781,7 @@ func setupDaemonIO(cmd *exec.Cmd) {
cmd.Stdin = devNull
go func() {
time.Sleep(1 * time.Second)
devNull.Close()
_ = devNull.Close()
}()
}
}