From b1f22987a091486d2a99670a20c9a6bbbe9f8f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Ryannel?= Date: Wed, 18 Feb 2026 12:33:07 +0100 Subject: [PATCH] fix: resolve golangci-lint errors across codebase Fix 17 linting issues reported by golangci-lint: - Add error checking for unchecked return values (errcheck) - Remove ineffectual assignments (ineffassign) - Merge variable declarations with assignments (staticcheck) Changes: - Handle fmt.Fprintf, os.Setenv/Unsetenv, bus.Close/Publish errors - Remove unused intermediate assignments in Java filter functions - Clean up variable declarations in JNI signature generator --- internal/handler/templates.go | 2 +- pkg/codegen/filters/filterjava/java_async_return.go | 1 - pkg/codegen/filters/filterjava/java_default.go | 4 ---- pkg/codegen/filters/filterjava/java_element_type.go | 3 --- pkg/codegen/filters/filterjava/java_return.go | 1 - pkg/codegen/filters/filterjava/java_test_value.go | 1 - .../filters/filterjni/jni_java_signature_param.go | 7 ++----- pkg/foundation/config/config_test.go | 8 ++++---- pkg/objmodel/spec/schema_test.go | 4 ++-- pkg/runtime/events/stub_test.go | 12 ++++++------ 10 files changed, 15 insertions(+), 28 deletions(-) diff --git a/internal/handler/templates.go b/internal/handler/templates.go index d1a7e92..0815ae6 100644 --- a/internal/handler/templates.go +++ b/internal/handler/templates.go @@ -276,7 +276,7 @@ func InstallTemplate() http.HandlerFunc { // Helper to send SSE events sendSSE := func(event InstallProgressEvent) { data, _ := json.Marshal(event) - fmt.Fprintf(w, "data: %s\n\n", data) + _, _ = fmt.Fprintf(w, "data: %s\n\n", data) flusher.Flush() } diff --git a/pkg/codegen/filters/filterjava/java_async_return.go b/pkg/codegen/filters/filterjava/java_async_return.go index d5cfc15..9810a3d 100644 --- a/pkg/codegen/filters/filterjava/java_async_return.go +++ b/pkg/codegen/filters/filterjava/java_async_return.go @@ -54,7 +54,6 @@ func ToAsyncReturnString(prefix string, schema *objmodel.Schema) (string, error) text = fmt.Sprintf("%s%s", prefix, common.CamelTitleCase(s_imported.Name)) case objmodel.TypeExtern: xe := parseJavaExtern(schema) - text = fmt.Sprintf("new %s()", xe.Name) var java_module string java_module = "" if xe.Package != "" { diff --git a/pkg/codegen/filters/filterjava/java_default.go b/pkg/codegen/filters/filterjava/java_default.go index ba548ac..66be567 100644 --- a/pkg/codegen/filters/filterjava/java_default.go +++ b/pkg/codegen/filters/filterjava/java_default.go @@ -117,7 +117,6 @@ func ToDefaultString(schema *objmodel.Schema, prefix string) (string, error) { text = fmt.Sprintf("new %s%s()", prefix, s_imported.Name) case objmodel.TypeExtern: xe := parseJavaExtern(schema) - text = fmt.Sprintf("new %s()", xe.Name) if xe.Default != "" { text = xe.Default } else { @@ -135,9 +134,6 @@ func ToDefaultString(schema *objmodel.Schema, prefix string) (string, error) { return "xxx", fmt.Errorf("javaDefault interface not found: %s", schema.Dump()) } // if interface is local it is found both as s_local and s_imported - if i_local == nil { - prefix = fmt.Sprintf("%s.%s_impl.", common.CamelLowerCase(i_imported.Module.Name), common.CamelLowerCase(i_imported.Module.Name)) - } text = "null" default: return "xxx", fmt.Errorf("javaDefault unknown schema %s", schema.Dump()) diff --git a/pkg/codegen/filters/filterjava/java_element_type.go b/pkg/codegen/filters/filterjava/java_element_type.go index f9b094e..8954b41 100644 --- a/pkg/codegen/filters/filterjava/java_element_type.go +++ b/pkg/codegen/filters/filterjava/java_element_type.go @@ -30,8 +30,6 @@ func ToElementTypeString(prefix string, schema *objmodel.Schema) (string, error) case objmodel.TypeBool: text = "boolean" case objmodel.TypeEnum: - symbol := schema.GetEnum() - text = fmt.Sprintf("%s%s", prefix, symbol.Name) e_local := schema.LookupEnum("", schema.Type) e_imported := schema.LookupEnum(schema.Import, schema.Type) if e_local == nil && e_imported == nil { @@ -56,7 +54,6 @@ func ToElementTypeString(prefix string, schema *objmodel.Schema) (string, error) text = fmt.Sprintf("%s%s", prefix, common.CamelTitleCase(s_imported.Name)) case objmodel.TypeExtern: xe := parseJavaExtern(schema) - text = fmt.Sprintf("new %s()", xe.Name) var java_module string java_module = "" if xe.Package != "" { diff --git a/pkg/codegen/filters/filterjava/java_return.go b/pkg/codegen/filters/filterjava/java_return.go index ace9f1f..e4fde61 100644 --- a/pkg/codegen/filters/filterjava/java_return.go +++ b/pkg/codegen/filters/filterjava/java_return.go @@ -54,7 +54,6 @@ func ToReturnString(prefix string, schema *objmodel.Schema) (string, error) { text = fmt.Sprintf("%s%s", prefix, common.CamelTitleCase(s_imported.Name)) case objmodel.TypeExtern: xe := parseJavaExtern(schema) - text = fmt.Sprintf("new %s()", xe.Name) var java_module string java_module = "" if xe.Package != "" { diff --git a/pkg/codegen/filters/filterjava/java_test_value.go b/pkg/codegen/filters/filterjava/java_test_value.go index 04157b0..a8d9177 100644 --- a/pkg/codegen/filters/filterjava/java_test_value.go +++ b/pkg/codegen/filters/filterjava/java_test_value.go @@ -58,7 +58,6 @@ func ToTestValueString(prefix string, schema *objmodel.Schema) (string, error) { text = fmt.Sprintf("new %s%s()", prefix, s_imported.Name) case objmodel.TypeExtern: xe := parseJavaExtern(schema) - text = fmt.Sprintf("new %s()", xe.Name) if xe.Default != "" { text = xe.Default } else { diff --git a/pkg/codegen/filters/filterjni/jni_java_signature_param.go b/pkg/codegen/filters/filterjni/jni_java_signature_param.go index 025d635..0861c2e 100644 --- a/pkg/codegen/filters/filterjni/jni_java_signature_param.go +++ b/pkg/codegen/filters/filterjni/jni_java_signature_param.go @@ -57,10 +57,8 @@ func jniSignatureType(node *objmodel.TypedNode) (string, error) { } case objmodel.TypeExtern: xe := filterjava.MakeJavaExtern(&node.Schema) - var java_module string - java_module = "" if xe.Package != "" { - java_module = xe.Package + java_module := xe.Package java_module = common.Replace(java_module, ".", "/") text = "L" + java_module + "/" + xe.Name + ";" } else { @@ -69,8 +67,7 @@ func jniSignatureType(node *objmodel.TypedNode) (string, error) { case objmodel.TypeInterface: i := node.LookupInterface(node.Import, node.Type) if i != nil { - var name string - name = "I" + i.Name + name := "I" + i.Name text = makeFullTypeName(i.Module.Name, name) } else { return "xxx", fmt.Errorf("ToSignatureType interface not found %s", node.Dump()) diff --git a/pkg/foundation/config/config_test.go b/pkg/foundation/config/config_test.go index 1d491ab..acab735 100644 --- a/pkg/foundation/config/config_test.go +++ b/pkg/foundation/config/config_test.go @@ -76,8 +76,8 @@ func TestNewConfig(t *testing.T) { dir := t.TempDir() customCacheDir := filepath.Join(dir, "custom-cache") - os.Setenv("APIGEAR_CACHE_DIR", customCacheDir) - defer os.Unsetenv("APIGEAR_CACHE_DIR") + _ = os.Setenv("APIGEAR_CACHE_DIR", customCacheDir) + defer func() { _ = os.Unsetenv("APIGEAR_CACHE_DIR") }() cfg, err := NewConfig(dir) require.NoError(t, err) @@ -90,8 +90,8 @@ func TestNewConfig(t *testing.T) { dir := t.TempDir() customRegistryDir := filepath.Join(dir, "custom-registry") - os.Setenv("APIGEAR_REGISTRY_DIR", customRegistryDir) - defer os.Unsetenv("APIGEAR_REGISTRY_DIR") + _ = os.Setenv("APIGEAR_REGISTRY_DIR", customRegistryDir) + defer func() { _ = os.Unsetenv("APIGEAR_REGISTRY_DIR") }() cfg, err := NewConfig(dir) require.NoError(t, err) diff --git a/pkg/objmodel/spec/schema_test.go b/pkg/objmodel/spec/schema_test.go index 3bf1eb3..acda0a9 100644 --- a/pkg/objmodel/spec/schema_test.go +++ b/pkg/objmodel/spec/schema_test.go @@ -257,13 +257,13 @@ func TestLoadSchema(t *testing.T) { t.Run("panics for unknown document type", func(t *testing.T) { assert.Panics(t, func() { - LoadSchema(DocumentTypeUnknown) + _, _ = LoadSchema(DocumentTypeUnknown) }) }) t.Run("panics for invalid document type", func(t *testing.T) { assert.Panics(t, func() { - LoadSchema(DocumentType("invalid")) + _, _ = LoadSchema(DocumentType("invalid")) }) }) } diff --git a/pkg/runtime/events/stub_test.go b/pkg/runtime/events/stub_test.go index 9c371e3..db540f8 100644 --- a/pkg/runtime/events/stub_test.go +++ b/pkg/runtime/events/stub_test.go @@ -12,7 +12,7 @@ func TestStubEventBusImplementsInterface(t *testing.T) { // TestStubEventBusPublish verifies Publish is a no-op func TestStubEventBusPublish(t *testing.T) { bus := NewStubEventBus() - defer bus.Close() + defer func() { _ = bus.Close() }() e := NewEvent("test.event", map[string]any{"key": "value"}) err := bus.Publish(e) @@ -25,7 +25,7 @@ func TestStubEventBusPublish(t *testing.T) { // TestStubEventBusRequest verifies Request returns an error event func TestStubEventBusRequest(t *testing.T) { bus := NewStubEventBus() - defer bus.Close() + defer func() { _ = bus.Close() }() e := NewEvent("test.request", map[string]any{"key": "value"}) resp, err := bus.Request(e) @@ -50,7 +50,7 @@ func TestStubEventBusRequest(t *testing.T) { // TestStubEventBusRegister verifies Register is a no-op func TestStubEventBusRegister(t *testing.T) { bus := NewStubEventBus() - defer bus.Close() + defer func() { _ = bus.Close() }() called := false handler := func(e *Event) (*Event, error) { @@ -70,7 +70,7 @@ func TestStubEventBusRegister(t *testing.T) { // TestStubEventBusUse verifies Use is a no-op func TestStubEventBusUse(t *testing.T) { bus := NewStubEventBus() - defer bus.Close() + defer func() { _ = bus.Close() }() called := false middleware := func(e *Event) (*Event, error) { @@ -106,14 +106,14 @@ func TestStubEventBusClose(t *testing.T) { // TestStubEventBusConcurrency verifies thread safety func TestStubEventBusConcurrency(t *testing.T) { bus := NewStubEventBus() - defer bus.Close() + defer func() { _ = bus.Close() }() // Run operations concurrently to check for race conditions done := make(chan bool, 3) go func() { for i := 0; i < 100; i++ { - bus.Publish(NewEvent("test", nil)) + _ = bus.Publish(NewEvent("test", nil)) } done <- true }()