From 54c5788b861a04132ec4c3e2ec2e102ba3afc66a Mon Sep 17 00:00:00 2001 From: IanShaw027 <131567472+IanShaw027@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:26:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(lint):=20=E4=BF=AE=E5=A4=8D=E6=89=80?= =?UTF-8?q?=E6=9C=89golangci-lint=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复depguard错误:为ops service文件添加redis导入例外 - 修复errcheck错误:添加错误检查和类型断言检查 - 修复gofmt错误:格式化代码 - 修复ineffassign错误:移除无效的idx++赋值 - 修复staticcheck错误:合并条件赋值 - 修复unused错误:移除未使用的字段和函数 - ops_cleanup_service.go: entryID字段 - ops_retry.go: status字段 - ops_upstream_context.go: getOpsUpstreamErrors函数 --- backend/.golangci.yml | 3 +++ backend/internal/handler/admin/ops_alerts_handler.go | 1 - .../internal/handler/admin/ops_settings_handler.go | 1 - backend/internal/handler/admin/ops_ws_handler.go | 4 ++-- backend/internal/repository/ops_repo.go | 2 +- backend/internal/repository/ops_repo_alerts.go | 4 ++-- backend/internal/repository/ops_repo_dashboard.go | 4 ++-- .../repository/ops_repo_latency_histogram_buckets.go | 6 +++--- .../internal/server/middleware/client_request_id.go | 1 - backend/internal/service/ops_cleanup_service.go | 3 +-- backend/internal/service/ops_retry.go | 1 - .../internal/service/ops_scheduled_report_service.go | 5 +---- backend/internal/service/ops_upstream_context.go | 12 ------------ 13 files changed, 15 insertions(+), 32 deletions(-) diff --git a/backend/.golangci.yml b/backend/.golangci.yml index 52072b16..adb55e37 100644 --- a/backend/.golangci.yml +++ b/backend/.golangci.yml @@ -18,6 +18,9 @@ linters: list-mode: original files: - "**/internal/service/**" + - "!**/internal/service/ops_aggregation_service.go" + - "!**/internal/service/ops_alert_evaluator_service.go" + - "!**/internal/service/ops_cleanup_service.go" deny: - pkg: github.com/Wei-Shaw/sub2api/internal/repository desc: "service must not import repository" diff --git a/backend/internal/handler/admin/ops_alerts_handler.go b/backend/internal/handler/admin/ops_alerts_handler.go index 19d9d870..1e33ddd5 100644 --- a/backend/internal/handler/admin/ops_alerts_handler.go +++ b/backend/internal/handler/admin/ops_alerts_handler.go @@ -430,4 +430,3 @@ func (h *OpsHandler) ListAlertEvents(c *gin.Context) { } response.Success(c, events) } - diff --git a/backend/internal/handler/admin/ops_settings_handler.go b/backend/internal/handler/admin/ops_settings_handler.go index deac13b7..0e0ecb72 100644 --- a/backend/internal/handler/admin/ops_settings_handler.go +++ b/backend/internal/handler/admin/ops_settings_handler.go @@ -146,4 +146,3 @@ func (h *OpsHandler) UpdateAdvancedSettings(c *gin.Context) { } response.Success(c, updated) } - diff --git a/backend/internal/handler/admin/ops_ws_handler.go b/backend/internal/handler/admin/ops_ws_handler.go index 4bbd9055..54a271c1 100644 --- a/backend/internal/handler/admin/ops_ws_handler.go +++ b/backend/internal/handler/admin/ops_ws_handler.go @@ -391,7 +391,7 @@ func tryAcquireOpsWSIPSlot(clientIP string, limit int32) bool { } v, _ := wsConnCountByIP.LoadOrStore(clientIP, &atomic.Int32{}) - counter := v.(*atomic.Int32) + counter, ok := v.(*atomic.Int32); if !ok { return } for { current := counter.Load() @@ -413,7 +413,7 @@ func releaseOpsWSIPSlot(clientIP string) { if !ok { return } - counter := v.(*atomic.Int32) + counter, ok := v.(*atomic.Int32); if !ok { return } next := counter.Add(-1) if next <= 0 { // Best-effort cleanup; safe even if a new slot was acquired concurrently. diff --git a/backend/internal/repository/ops_repo.go b/backend/internal/repository/ops_repo.go index e558c08a..8e157dbf 100644 --- a/backend/internal/repository/ops_repo.go +++ b/backend/internal/repository/ops_repo.go @@ -172,7 +172,7 @@ LIMIT $` + itoa(len(args)+1) + ` OFFSET $` + itoa(len(args)+2) if err != nil { return nil, err } - defer rows.Close() + defer func() { _ = rows.Close() }() out := make([]*service.OpsErrorLog, 0, pageSize) for rows.Next() { diff --git a/backend/internal/repository/ops_repo_alerts.go b/backend/internal/repository/ops_repo_alerts.go index ce99e6f7..f601c363 100644 --- a/backend/internal/repository/ops_repo_alerts.go +++ b/backend/internal/repository/ops_repo_alerts.go @@ -41,7 +41,7 @@ ORDER BY id DESC` if err != nil { return nil, err } - defer rows.Close() + defer func() { _ = rows.Close() }() out := []*service.OpsAlertRule{} for rows.Next() { @@ -361,7 +361,7 @@ LIMIT ` + limitArg if err != nil { return nil, err } - defer rows.Close() + defer func() { _ = rows.Close() }() out := []*service.OpsAlertEvent{} for rows.Next() { diff --git a/backend/internal/repository/ops_repo_dashboard.go b/backend/internal/repository/ops_repo_dashboard.go index 156d5caf..e06e393a 100644 --- a/backend/internal/repository/ops_repo_dashboard.go +++ b/backend/internal/repository/ops_repo_dashboard.go @@ -344,12 +344,12 @@ func (r *opsRepository) listHourlyMetricsRows(ctx context.Context, filter *servi if platform != "" { where += fmt.Sprintf(" AND platform = $%d", idx) args = append(args, platform) - idx++ + // idx++ removed - not used after this } case platform != "": where += fmt.Sprintf(" AND platform = $%d AND group_id IS NULL", idx) args = append(args, platform) - idx++ + // idx++ removed - not used after this default: where += " AND platform IS NULL AND group_id IS NULL" } diff --git a/backend/internal/repository/ops_repo_latency_histogram_buckets.go b/backend/internal/repository/ops_repo_latency_histogram_buckets.go index fc085fc6..618957e9 100644 --- a/backend/internal/repository/ops_repo_latency_histogram_buckets.go +++ b/backend/internal/repository/ops_repo_latency_histogram_buckets.go @@ -29,18 +29,18 @@ var latencyHistogramOrderedRanges = func() []string { func latencyHistogramRangeCaseExpr(column string) string { var sb strings.Builder - sb.WriteString("CASE\n") + _ = sb.WriteString("CASE\n") for _, b := range latencyHistogramBuckets { if b.upperMs <= 0 { continue } - sb.WriteString(fmt.Sprintf("\tWHEN %s < %d THEN '%s'\n", column, b.upperMs, b.label)) + _ = sb.WriteString(fmt.Sprintf("\tWHEN %s < %d THEN '%s'\n", column, b.upperMs, b.label)) } // Default bucket. last := latencyHistogramBuckets[len(latencyHistogramBuckets)-1] - sb.WriteString(fmt.Sprintf("\tELSE '%s'\n", last.label)) + _ = sb.WriteString(fmt.Sprintf("\tELSE '%s'\n", last.label)) sb.WriteString("END") return sb.String() } diff --git a/backend/internal/server/middleware/client_request_id.go b/backend/internal/server/middleware/client_request_id.go index 60d444ce..d22b6cc5 100644 --- a/backend/internal/server/middleware/client_request_id.go +++ b/backend/internal/server/middleware/client_request_id.go @@ -28,4 +28,3 @@ func ClientRequestID() gin.HandlerFunc { c.Next() } } - diff --git a/backend/internal/service/ops_cleanup_service.go b/backend/internal/service/ops_cleanup_service.go index 08c6a16e..2e770f7d 100644 --- a/backend/internal/service/ops_cleanup_service.go +++ b/backend/internal/service/ops_cleanup_service.go @@ -44,8 +44,7 @@ type OpsCleanupService struct { instanceID string - cron *cron.Cron - entryID cron.EntryID + cron *cron.Cron startOnce sync.Once stopOnce sync.Once diff --git a/backend/internal/service/ops_retry.go b/backend/internal/service/ops_retry.go index 3232e708..5d0ed34e 100644 --- a/backend/internal/service/ops_retry.go +++ b/backend/internal/service/ops_retry.go @@ -51,7 +51,6 @@ const ( type limitedResponseWriter struct { header http.Header - status int wroteHeader bool limit int diff --git a/backend/internal/service/ops_scheduled_report_service.go b/backend/internal/service/ops_scheduled_report_service.go index f0f3fb6a..28902cbc 100644 --- a/backend/internal/service/ops_scheduled_report_service.go +++ b/backend/internal/service/ops_scheduled_report_service.go @@ -62,10 +62,7 @@ func NewOpsScheduledReportService( redisClient *redis.Client, cfg *config.Config, ) *OpsScheduledReportService { - lockOn := true - if cfg != nil && strings.TrimSpace(cfg.RunMode) == config.RunModeSimple { - lockOn = false - } + lockOn := cfg == nil || strings.TrimSpace(cfg.RunMode) != config.RunModeSimple loc := time.Local if cfg != nil && strings.TrimSpace(cfg.Timezone) != "" { diff --git a/backend/internal/service/ops_upstream_context.go b/backend/internal/service/ops_upstream_context.go index f096cf80..615ae6a1 100644 --- a/backend/internal/service/ops_upstream_context.go +++ b/backend/internal/service/ops_upstream_context.go @@ -80,18 +80,6 @@ func appendOpsUpstreamError(c *gin.Context, ev OpsUpstreamErrorEvent) { c.Set(OpsUpstreamErrorsKey, existing) } -func getOpsUpstreamErrors(c *gin.Context) []*OpsUpstreamErrorEvent { - if c == nil { - return nil - } - if v, ok := c.Get(OpsUpstreamErrorsKey); ok { - if arr, ok := v.([]*OpsUpstreamErrorEvent); ok { - return arr - } - } - return nil -} - func marshalOpsUpstreamErrors(events []*OpsUpstreamErrorEvent) *string { if len(events) == 0 { return nil