Skip to content

Commit 82f3a96

Browse files
chore(lint): enable gosec with v2 config
Ultraworked with Sisyphus https://github.com/code-yeongyu/oh-my-opencode Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
1 parent b523b07 commit 82f3a96

8 files changed

Lines changed: 41 additions & 33 deletions

File tree

.golangci.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ linters:
1212
- staticcheck
1313
- govet
1414
- unused
15+
- gosec
1516
- bodyclose
1617
- nilerr
1718

@@ -36,6 +37,13 @@ formatters:
3637
local-prefixes: github.com/go-modkit/modkit
3738

3839
linters-settings:
40+
gosec:
41+
excludes:
42+
- G101
43+
- G302
44+
- G304
45+
- G306
46+
- G114
3947
govet:
4048
enable:
4149
- nilness
@@ -66,7 +74,7 @@ issues:
6674

6775
exclude-rules:
6876
# Relax rules for tests
69-
- path: ".*_test\\.go$"
77+
- path: '.*_test\.go$'
7078
linters:
7179
- errcheck
7280
- dupl

internal/cli/ast/modify_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func (m *Module) Definition() module.ModuleDef {
3838
t.Fatalf("AddProvider failed: %v", err)
3939
}
4040

41-
b, err := os.ReadFile(file)
41+
b, err := os.ReadFile(file) //nolint:gosec
4242
if err != nil {
4343
t.Fatal(err)
4444
}
@@ -178,7 +178,7 @@ func (m *Module) Definition() module.ModuleDef {
178178
t.Fatalf("Duplicate AddProvider should succeed idempotently: %v", err)
179179
}
180180

181-
b, err := os.ReadFile(file)
181+
b, err := os.ReadFile(file) //nolint:gosec
182182
if err != nil {
183183
t.Fatal(err)
184184
}
@@ -220,7 +220,7 @@ func (m *Module) Definition() module.ModuleDef {
220220
t.Fatalf("AddController failed: %v", err)
221221
}
222222

223-
b, err := os.ReadFile(file)
223+
b, err := os.ReadFile(file) //nolint:gosec
224224
if err != nil {
225225
t.Fatal(err)
226226
}
@@ -266,7 +266,7 @@ func (m *Module) Definition() module.ModuleDef {
266266
t.Fatalf("Duplicate AddController should succeed idempotently: %v", err)
267267
}
268268

269-
b, err := os.ReadFile(file)
269+
b, err := os.ReadFile(file) //nolint:gosec
270270
if err != nil {
271271
t.Fatal(err)
272272
}
@@ -555,10 +555,10 @@ func (m *Module) Definition() module.ModuleDef {
555555
t.Fatal(err)
556556
}
557557

558-
if err := os.Chmod(moduleDir, 0o500); err != nil {
558+
if err := os.Chmod(moduleDir, 0o500); err != nil { //nolint:gosec
559559
t.Fatal(err)
560560
}
561-
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) })
561+
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) }) //nolint:gosec
562562

563563
err := AddProvider(file, "users.auth", "buildAuth")
564564
if err == nil {
@@ -601,10 +601,10 @@ func (m *Module) Definition() module.ModuleDef {
601601
t.Fatal(err)
602602
}
603603

604-
if err := os.Chmod(moduleDir, 0o500); err != nil {
604+
if err := os.Chmod(moduleDir, 0o500); err != nil { //nolint:gosec
605605
t.Fatal(err)
606606
}
607-
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) })
607+
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) }) //nolint:gosec
608608

609609
err := AddController(file, "UsersController", "NewUsersController")
610610
if err == nil {

internal/cli/cmd/new_app_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func TestCreateNewApp(t *testing.T) {
6161
shim = filepath.Join(binDir, "go.bat")
6262
content = "@echo off\r\nexit /b 0\r\n"
6363
}
64-
if err := os.WriteFile(shim, []byte(content), 0o755); err != nil {
64+
if err := os.WriteFile(shim, []byte(content), 0o755); err != nil { //nolint:gosec
6565
t.Fatal(err)
6666
}
6767

@@ -79,7 +79,7 @@ func TestCreateNewApp(t *testing.T) {
7979
t.Fatalf("expected go.mod, got %v", err)
8080
}
8181

82-
modBytes, err := os.ReadFile(filepath.Join(tmp, "demo", "go.mod"))
82+
modBytes, err := os.ReadFile(filepath.Join(tmp, "demo", "go.mod")) //nolint:gosec
8383
if err != nil {
8484
t.Fatal(err)
8585
}
@@ -194,7 +194,7 @@ func TestCreateNewAppExistingEmptyDirectory(t *testing.T) {
194194
shim = filepath.Join(binDir, "go.bat")
195195
content = "@echo off\r\nexit /b 0\r\n"
196196
}
197-
if err := os.WriteFile(shim, []byte(content), 0o755); err != nil {
197+
if err := os.WriteFile(shim, []byte(content), 0o755); err != nil { //nolint:gosec
198198
t.Fatal(err)
199199
}
200200
oldPath := os.Getenv("PATH")
@@ -262,7 +262,7 @@ func TestCreateNewAppRunE(t *testing.T) {
262262
shim = filepath.Join(binDir, "go.bat")
263263
content = "@echo off\r\nexit /b 0\r\n"
264264
}
265-
if err := os.WriteFile(shim, []byte(content), 0o755); err != nil {
265+
if err := os.WriteFile(shim, []byte(content), 0o755); err != nil { //nolint:gosec
266266
t.Fatal(err)
267267
}
268268
oldPath := os.Getenv("PATH")

internal/cli/cmd/new_controller_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (m *UserServiceModule) Definition() module.ModuleDef {
4343
t.Fatalf("createNewController failed: %v", err)
4444
}
4545

46-
b, err := os.ReadFile(filepath.Join(moduleDir, "auth_controller.go"))
46+
b, err := os.ReadFile(filepath.Join(moduleDir, "auth_controller.go")) //nolint:gosec
4747
if err != nil {
4848
t.Fatal(err)
4949
}
@@ -252,10 +252,10 @@ func TestCreateNewControllerCreateFileFailure(t *testing.T) {
252252
if err := os.WriteFile(filepath.Join(moduleDir, "module.go"), []byte("package users\n"), 0o600); err != nil {
253253
t.Fatal(err)
254254
}
255-
if err := os.Chmod(moduleDir, 0o500); err != nil {
255+
if err := os.Chmod(moduleDir, 0o500); err != nil { //nolint:gosec
256256
t.Fatal(err)
257257
}
258-
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) })
258+
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) }) //nolint:gosec
259259

260260
if err := createNewController("auth", "users"); err == nil {
261261
t.Fatal("expected error when controller file cannot be created")

internal/cli/cmd/new_module_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func TestCreateNewModule(t *testing.T) {
2222
t.Fatalf("createNewModule failed: %v", err)
2323
}
2424

25-
b, err := os.ReadFile(filepath.Join(tmp, "internal", "modules", "user-service", "module.go"))
25+
b, err := os.ReadFile(filepath.Join(tmp, "internal", "modules", "user-service", "module.go")) //nolint:gosec
2626
if err != nil {
2727
t.Fatal(err)
2828
}

internal/cli/cmd/new_provider_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func (m *UserServiceModule) Definition() module.ModuleDef {
8484
t.Fatalf("createNewProvider failed: %v", err)
8585
}
8686

87-
b, err := os.ReadFile(filepath.Join(moduleDir, "auth.go"))
87+
b, err := os.ReadFile(filepath.Join(moduleDir, "auth.go")) //nolint:gosec
8888
if err != nil {
8989
t.Fatal(err)
9090
}
@@ -312,7 +312,7 @@ func (m *UsersModule) Definition() module.ModuleDef {
312312
t.Fatalf("createNewProvider failed: %v", err)
313313
}
314314

315-
b, err := os.ReadFile(modulePath)
315+
b, err := os.ReadFile(modulePath) //nolint:gosec
316316
if err != nil {
317317
t.Fatal(err)
318318
}
@@ -340,10 +340,10 @@ func TestCreateNewProviderCreateFileFailure(t *testing.T) {
340340
if err := os.WriteFile(filepath.Join(moduleDir, "module.go"), []byte("package users\n"), 0o600); err != nil {
341341
t.Fatal(err)
342342
}
343-
if err := os.Chmod(moduleDir, 0o500); err != nil {
343+
if err := os.Chmod(moduleDir, 0o500); err != nil { //nolint:gosec
344344
t.Fatal(err)
345345
}
346-
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) })
346+
t.Cleanup(func() { _ = os.Chmod(moduleDir, 0o750) }) //nolint:gosec
347347

348348
if err := createNewProvider("auth", "users"); err == nil {
349349
t.Fatal("expected error when provider file cannot be created")

modkit/config/module_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func mod(
4242
}
4343

4444
func TestWithTyped_DefaultAndParse(t *testing.T) {
45-
const token module.Token = "config.jwt_ttl"
45+
const token module.Token = "config.jwt_ttl" //nolint:gosec
4646
def := 1 * time.Hour
4747

4848
cfgModule := config.NewModule(
@@ -76,7 +76,7 @@ func TestWithTyped_DefaultAndParse(t *testing.T) {
7676
}
7777

7878
func TestWithTyped_UsesDefaultWhenUnset(t *testing.T) {
79-
const token module.Token = "config.http_addr"
79+
const token module.Token = "config.http_addr" //nolint:gosec
8080
def := ":8080"
8181

8282
cfgModule := config.NewModule(
@@ -105,7 +105,7 @@ func TestWithTyped_UsesDefaultWhenUnset(t *testing.T) {
105105
}
106106

107107
func TestWithTyped_OptionalUnsetReturnsZeroWithoutParsing(t *testing.T) {
108-
const token module.Token = "config.optional_int"
108+
const token module.Token = "config.optional_int" //nolint:gosec
109109
called := false
110110

111111
cfgModule := config.NewModule(
@@ -145,7 +145,7 @@ func TestWithTyped_OptionalUnsetReturnsZeroWithoutParsing(t *testing.T) {
145145
}
146146

147147
func TestWithTyped_MissingRequired(t *testing.T) {
148-
const token module.Token = "config.jwt_secret"
148+
const token module.Token = "config.jwt_secret" //nolint:gosec
149149

150150
cfgModule := config.NewModule(
151151
config.WithSource(mapSource{}),
@@ -187,7 +187,7 @@ func TestWithTyped_MissingRequired(t *testing.T) {
187187
}
188188

189189
func TestWithTyped_ParseError(t *testing.T) {
190-
const token module.Token = "config.rate_limit_burst"
190+
const token module.Token = "config.rate_limit_burst" //nolint:gosec
191191

192192
cfgModule := config.NewModule(
193193
config.WithSource(mapSource{"RATE_LIMIT_BURST": "NaN"}),
@@ -223,7 +223,7 @@ func TestWithTyped_ParseError(t *testing.T) {
223223

224224
func TestWithTyped_InvalidSpec(t *testing.T) {
225225
t.Run("empty key", func(t *testing.T) {
226-
const token module.Token = "config.foo"
226+
const token module.Token = "config.foo" //nolint:gosec
227227
cfgModule := config.NewModule(
228228
config.WithSource(mapSource{"X": "1"}),
229229
config.WithTyped(token, config.ValueSpec[int]{
@@ -276,7 +276,7 @@ func TestWithTyped_InvalidSpec(t *testing.T) {
276276
}
277277

278278
func TestWithTyped_SensitiveErrorDoesNotLeakValue(t *testing.T) {
279-
const token module.Token = "config.jwt_secret"
279+
const token module.Token = "config.jwt_secret" //nolint:gosec
280280

281281
cfgModule := config.NewModule(
282282
config.WithSource(mapSource{"JWT_SECRET": "super-secret-value"}),
@@ -305,7 +305,7 @@ func TestWithTyped_SensitiveErrorDoesNotLeakValue(t *testing.T) {
305305
}
306306

307307
func TestWithSourceNil(t *testing.T) {
308-
const token module.Token = "config.foo"
308+
const token module.Token = "config.foo" //nolint:gosec
309309

310310
cfgModule := config.NewModule(
311311
config.WithSource(nil),
@@ -334,7 +334,7 @@ func TestWithSourceNil(t *testing.T) {
334334
}
335335

336336
func TestNoReflectionMagic_CustomParser(t *testing.T) {
337-
const token module.Token = "config.custom"
337+
const token module.Token = "config.custom" //nolint:gosec
338338

339339
parseCustom := func(raw string) (string, error) {
340340
if raw != "expected" {

modkit/http/server_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func TestServe_ReturnsErrorWhenServerFailsToStart(t *testing.T) {
3333
}
3434

3535
router := NewRouter()
36-
err := Serve("127.0.0.1:12345", router)
36+
err := Serve("127.0.0.1:12345", router) //nolint:gosec
3737

3838
if gotAddr != "127.0.0.1:12345" {
3939
t.Fatalf("expected addr %q, got %q", "127.0.0.1:12345", gotAddr)
@@ -77,7 +77,7 @@ func TestServe_HandlesSignals_ReturnsNil(t *testing.T) {
7777

7878
errCh := make(chan error, 1)
7979
go func() {
80-
errCh <- Serve("127.0.0.1:12345", NewRouter())
80+
errCh <- Serve("127.0.0.1:12345", NewRouter()) //nolint:gosec
8181
}()
8282

8383
<-serveStarted
@@ -135,7 +135,7 @@ func TestServe_ShutdownWaitsForInFlightRequest(t *testing.T) {
135135

136136
serveErrCh := make(chan error, 1)
137137
go func() {
138-
serveErrCh <- Serve(addr, handler)
138+
serveErrCh <- Serve(addr, handler) //nolint:gosec
139139
}()
140140

141141
clientErrCh := make(chan error, 1)

0 commit comments

Comments
 (0)