feat: 配置 golangci-lint 静态分析并修复存量违规
- 新增 backend/.golangci.yml 配置 12 个 linter(forbidigo、errorlint、errcheck、staticcheck、revive、gocritic、gosec、bodyclose、noctx、nilerr、goimports、gocyclo) - 新增 lefthook.yml 配置 pre-commit hook 自动运行 lint - 修复存量代码违规:errors.Is/As 替换、zap.Error 替换、import 排序、errcheck 修复 - 更新 README 补充编码规范说明 - 归档 backend-code-lint 变更
This commit is contained in:
@@ -6,9 +6,10 @@ import (
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"nex/backend/internal/repository"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
"nex/backend/internal/repository"
|
||||
pkglogger "nex/backend/pkg/logger"
|
||||
)
|
||||
|
||||
@@ -67,13 +68,21 @@ func (b *StatsBuffer) Increment(providerID, modelName string) {
|
||||
|
||||
var counter *int64
|
||||
if v, ok := b.counters.Load(key); ok {
|
||||
counter = v.(*int64)
|
||||
if existing, ok := v.(*int64); ok {
|
||||
counter = existing
|
||||
} else {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
val := int64(0)
|
||||
counter = &val
|
||||
actual, loaded := b.counters.LoadOrStore(key, counter)
|
||||
if loaded {
|
||||
counter = actual.(*int64)
|
||||
existing, ok := actual.(*int64)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
counter = existing
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,13 +126,20 @@ func (b *StatsBuffer) flush() {
|
||||
|
||||
var entries []statEntry
|
||||
b.counters.Range(func(key, value interface{}) bool {
|
||||
keyStr := key.(string)
|
||||
keyStr, ok := key.(string)
|
||||
if !ok {
|
||||
return true
|
||||
}
|
||||
|
||||
parts := strings.Split(keyStr, "/")
|
||||
if len(parts) != 3 {
|
||||
return true
|
||||
}
|
||||
|
||||
counter := value.(*int64)
|
||||
counter, ok := value.(*int64)
|
||||
if !ok {
|
||||
return true
|
||||
}
|
||||
count := atomic.SwapInt64(counter, 0)
|
||||
|
||||
if count > 0 {
|
||||
@@ -143,8 +159,17 @@ func (b *StatsBuffer) flush() {
|
||||
|
||||
success := 0
|
||||
for _, entry := range entries {
|
||||
date, _ := time.Parse("2006-01-02", entry.date)
|
||||
err := b.statsRepo.BatchUpdate(entry.providerID, entry.modelName, date, int(entry.count))
|
||||
date, err := time.Parse("2006-01-02", entry.date)
|
||||
if err != nil {
|
||||
b.logger.Error("解析统计日期失败",
|
||||
zap.String("provider_id", entry.providerID),
|
||||
zap.String("model_name", entry.modelName),
|
||||
zap.String("date", entry.date),
|
||||
zap.Error(err))
|
||||
continue
|
||||
}
|
||||
|
||||
err = b.statsRepo.BatchUpdate(entry.providerID, entry.modelName, date, int(entry.count))
|
||||
if err != nil {
|
||||
b.logger.Error("批量更新统计失败",
|
||||
zap.String("provider_id", entry.providerID),
|
||||
@@ -154,8 +179,10 @@ func (b *StatsBuffer) flush() {
|
||||
|
||||
key := entry.providerID + "/" + entry.modelName + "/" + entry.date
|
||||
if v, ok := b.counters.Load(key); ok {
|
||||
counter := v.(*int64)
|
||||
atomic.AddInt64(counter, entry.count)
|
||||
counter, ok := v.(*int64)
|
||||
if ok {
|
||||
atomic.AddInt64(counter, entry.count)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
success++
|
||||
|
||||
Reference in New Issue
Block a user