CentOS下Golang代码审查实操指南
一 环境准备
go version 验证。go mod init <module-name>,确保依赖可复现管理。goimportsgolangci-lint(建议固定版本,避免规则漂移)gosecgo install github.com/golangci/golangci-lint/cmd/golangci-lint@latest、go install github.com/securego/gosec/v2/cmd/gosec@latest、go install golang.org/x/tools/cmd/goimports@latest二 本地静态检查与自动化
gofmt -w .(就地格式化)goimports -w .(格式化并自动整理导入)go vet ./...(发现可疑构造、格式字符串与参数不匹配等)errcheck ./...(检查错误是否被忽略)staticcheck ./...(更深入的静态分析).golangci.yml,固定启用项与版本,示例:service:
golangci-lint-version: v1.55.2 # 固定版本
linters:
enable:
- gofmt
- goimports
- govet
- errcheck
- staticcheck
- gosec
run:
timeout: 5m
golangci-lint run ./...git commit 前自动运行 gofmt/goimports/golangci-lint,失败则阻止提交。三 安全与依赖审查
gosec ./...(检测 SQL 注入、硬编码密钥、不安全的加密/随机数使用等)gosec 加入 .golangci.yml 的 enable 列表,统一在 CI 中执行。go mod tidy,避免产生不必要的变更。-race 检测数据竞争(仅在测试环境启用,注意性能开销)。四 人工审查要点与度量
bodyclose 辅助检查)。五 在 CentOS 上落地 CI 流程
go mod tidy 校验;3) gofmt -l 与 goimports -l 检查未格式化文件;4) golangci-lint run 全量检查;5) go test -race -coverprofile=cover.out ./... 并上传覆盖率;6) 质量不达标则阻断合并。LINT := golangci-lint
TEST := go test -race -coverprofile=cover.out
.PHONY: lint test
lint:
$(LINT) run --timeout=5m
test:
$(TEST) ./...
cover: test
go tool cover -html=cover.out -o cover.html