#!/bin/bash # 检查 Service 层是否使用 fmt.Errorf 对外返回 echo "🔍 检查 Service 层错误处理规范..." FILES=$(find internal/service -name "*.go" -type f 2>/dev/null) if [ -z "$FILES" ]; then echo "⚠️ 未找到 Service 层文件" exit 0 fi VIOLATIONS=$(grep -n "fmt\.Errorf" $FILES | grep -v "// whitelist:") if [ -n "$VIOLATIONS" ]; then echo "" echo "❌ 发现 Service 层使用 fmt.Errorf:" echo "$VIOLATIONS" echo "" echo "请使用以下方式替代:" echo " - 业务错误:errors.New(code, msg)" echo " - 系统错误:errors.Wrap(code, err, msg)" echo "" echo "如果某处确实需要使用 fmt.Errorf(如内部调试),请添加注释:// whitelist:" exit 1 fi echo "✅ Service 层错误处理检查通过"