From c33ea9d0a84b79010b00c1a36fa32e55c4cf107d Mon Sep 17 00:00:00 2001 From: opsx Date: Thu, 29 Oct 2026 13:29:25 +0800 Subject: [PATCH] =?UTF-8?q?ci(lint):=20golangci-lint=20v2=20=E5=85=A5?= =?UTF-8?q?=E9=97=A8=E7=A6=81=E5=B9=B6=E5=BD=92=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - .golangci.yml:standard 集 - errcheck(存量 38 处裸忽略待专项),staticcheck 关纯风格/quickfix - 清理 3 个无引用死函数;SanitizedJSON 不可达分支收敛为接口分支 + nil 指针防护(原死分支中的 nil 检查从未执行) - CI backend job 增加 golangci-lint-action@v6 --- .gitea/workflows/ci.yml | 4 ++++ backend/.golangci.yml | 15 +++++++++++++++ backend/middleware/metrics.go | 12 ------------ backend/models/sanitizer.go | 29 +---------------------------- backend/services/loki_deployer.go | 18 ------------------ 5 files changed, 20 insertions(+), 58 deletions(-) create mode 100644 backend/.golangci.yml diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index b3764fc..6e49e3a 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -27,6 +27,10 @@ jobs: - name: go vet working-directory: backend run: go vet ./... + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + with: + working-directory: backend - name: go test working-directory: backend run: go test ./... diff --git a/backend/.golangci.yml b/backend/.golangci.yml new file mode 100644 index 0000000..d94f130 --- /dev/null +++ b/backend/.golangci.yml @@ -0,0 +1,15 @@ +# golangci-lint v2 配置 — 与 CI 门禁(.gitea/workflows/ci.yml)配套 +# 取舍:errcheck 存量 38 处裸忽略待专项清理后开启;staticcheck 关闭纯风格/quickfix 类 +version: "2" + +formatters: + enable: + - gofmt + +linters: + default: standard + disable: + - errcheck + settings: + staticcheck: + checks: ["all", "-ST1000", "-ST1003", "-ST1005", "-ST1020", "-ST1021", "-ST1022", "-QF*", "-S1*"] diff --git a/backend/middleware/metrics.go b/backend/middleware/metrics.go index 2182781..c074615 100644 --- a/backend/middleware/metrics.go +++ b/backend/middleware/metrics.go @@ -38,17 +38,5 @@ func Metrics() gin.HandlerFunc { } // statusClass 给日志/看板用的状态分类(保留工具函数) -func statusClass(code int) string { - switch { - case code < 300: - return "2xx" - case code < 400: - return "3xx" - case code < 500: - return "4xx" - default: - return "5xx" - } -} var _ = strconv.Itoa diff --git a/backend/models/sanitizer.go b/backend/models/sanitizer.go index 8d67200..f8b5b8f 100644 --- a/backend/models/sanitizer.go +++ b/backend/models/sanitizer.go @@ -10,35 +10,8 @@ type Sanitizer interface { // 使用接口替代类型断言,更优雅且可扩展。 func SanitizedJSON(v any) any { switch val := v.(type) { - // Single objects: 尝试Sanitizer接口 + // Single objects: 实现 Sanitizer 接口的类型统一走这里(nil 指针安全返回 nil) case Sanitizer: - return val.Sanitized() - case *User: - if val == nil { - return nil - } - return val.Sanitized() - case *Cluster: - if val == nil { - return nil - } - return val.Sanitized() - case *Host: - if val == nil { - return nil - } - return val.Sanitized() - case *StorageConfig: - if val == nil { - return nil - } - return val.Sanitized() - case *Collector: - if val == nil { - return nil - } - return val.Sanitized() - case *LokiDeployment: if val == nil { return nil } diff --git a/backend/services/loki_deployer.go b/backend/services/loki_deployer.go index 9a31e1d..98618a2 100644 --- a/backend/services/loki_deployer.go +++ b/backend/services/loki_deployer.go @@ -3,7 +3,6 @@ package services import ( "context" "fmt" - "os" "strconv" "strings" @@ -264,23 +263,6 @@ func DecryptCred(encrypted string) (string, error) { // ==================== 通用工具函数 ==================== // writeTempFile 安全地创建临时文件,返回文件路径和清理函数 -func writeTempFile(pattern, content string, perm os.FileMode) (string, func(), error) { - f, err := os.CreateTemp("", pattern) - if err != nil { - return "", nil, fmt.Errorf("create temp file failed: %w", err) - } - if _, err := f.WriteString(content); err != nil { - f.Close() - os.Remove(f.Name()) - return "", nil, fmt.Errorf("write temp file failed: %w", err) - } - f.Close() - if perm > 0 { - os.Chmod(f.Name(), perm) - } - cleanup := func() { os.Remove(f.Name()) } - return f.Name(), cleanup, nil -} // indentYAML 对 YAML 内容进行缩进(用于嵌入 ConfigMap) func indentYAML(s string, spaces int) string {