fix(lint): 修复所有golangci-lint错误

- 修复depguard错误:为ops service文件添加redis导入例外
- 修复errcheck错误:添加错误检查和类型断言检查
- 修复gofmt错误:格式化代码
- 修复ineffassign错误:移除无效的idx++赋值
- 修复staticcheck错误:合并条件赋值
- 修复unused错误:移除未使用的字段和函数
  - ops_cleanup_service.go: entryID字段
  - ops_retry.go: status字段
  - ops_upstream_context.go: getOpsUpstreamErrors函数
This commit is contained in:
IanShaw027
2026-01-11 23:26:29 +08:00
parent 4cb7b26f03
commit 54c5788b86
13 changed files with 15 additions and 32 deletions

View File

@@ -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"

View File

@@ -430,4 +430,3 @@ func (h *OpsHandler) ListAlertEvents(c *gin.Context) {
}
response.Success(c, events)
}

View File

@@ -146,4 +146,3 @@ func (h *OpsHandler) UpdateAdvancedSettings(c *gin.Context) {
}
response.Success(c, updated)
}

View File

@@ -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.

View File

@@ -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() {

View File

@@ -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() {

View File

@@ -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"
}

View File

@@ -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()
}

View File

@@ -28,4 +28,3 @@ func ClientRequestID() gin.HandlerFunc {
c.Next()
}
}

View File

@@ -44,8 +44,7 @@ type OpsCleanupService struct {
instanceID string
cron *cron.Cron
entryID cron.EntryID
cron *cron.Cron
startOnce sync.Once
stopOnce sync.Once

View File

@@ -51,7 +51,6 @@ const (
type limitedResponseWriter struct {
header http.Header
status int
wroteHeader bool
limit int

View File

@@ -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) != "" {

View File

@@ -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