echo ""
echo "============================================================"
echo "🔍 执行代码质量检查（按照阿里开发手册规范）"
echo "============================================================"
echo ""

# 颜色定义
RED='\033[91m'
GREEN='\033[92m'
YELLOW='\033[93m'
CYAN='\033[96m'
END='\033[0m'
BOLD='\033[1m'

# 检查是否跳过（通过环境变量）
if [ "$SKIP_COMPLIANCE_CHECK" = "true" ]; then
  echo "${YELLOW}⚠️  跳过代码规范检查（SKIP_COMPLIANCE_CHECK=true）${END}"
  exit 0
fi

# 统计检查结果
CHECK_FAILED=0
VIOLATIONS=0

# ============================================
# 1. Checkstyle 代码风格检查
# ============================================
echo "${CYAN}1. 运行 Checkstyle 检查...${END}"
mvn checkstyle:check -q -DskipTests
if [ $? -ne 0 ]; then
  echo "${RED}❌ Checkstyle 检查失败，请修复代码规范问题${END}"
  CHECK_FAILED=1
else
  echo "${GREEN}✅ Checkstyle 检查通过${END}"
fi

# ============================================
# 2. PMD 代码质量检查
# ============================================
echo ""
echo "${CYAN}2. 运行 PMD 检查...${END}"
mvn pmd:check pmd:cpd-check -q -DskipTests
if [ $? -ne 0 ]; then
  echo "${RED}❌ PMD 检查失败，请修复代码质量问题${END}"
  CHECK_FAILED=1
else
  echo "${GREEN}✅ PMD 检查通过${END}"
fi

# ============================================
# 3. SpotBugs 静态分析
# ============================================
echo ""
echo "${CYAN}3. 运行 SpotBugs 检查...${END}"
mvn spotbugs:check -q -DskipTests
if [ $? -ne 0 ]; then
  echo "${RED}❌ SpotBugs 检查失败，请修复潜在bug${END}"
  CHECK_FAILED=1
else
  echo "${GREEN}✅ SpotBugs 检查通过${END}"
fi

# ============================================
# 4. 编译检查
# ============================================
echo ""
echo "${CYAN}4. 运行编译检查...${END}"
mvn compile -DskipTests -q
if [ $? -ne 0 ]; then
  echo "${RED}❌ 编译失败，请修复代码错误${END}"
  CHECK_FAILED=1
else
  echo "${GREEN}✅ 编译检查通过${END}"
fi

# ============================================
# 5. 开发规范检查（新增）
# ============================================
echo ""
echo "${CYAN}5. 运行开发规范检查...${END}"
if [ -f "scripts/code_compliance_check.py" ]; then
  python scripts/code_compliance_check.py --path . --verbose 2>/dev/null
  PYTHON_EXIT=$?

  if [ $PYTHON_EXIT -eq 1 ]; then
    echo "${RED}❌ 开发规范检查发现阻塞性问题${END}"
    CHECK_FAILED=1
  elif [ $PYTHON_EXIT -eq 0 ]; then
    echo "${GREEN}✅ 开发规范检查通过${END}"
  fi
else
  echo "${YELLOW}⚠️  规范检查脚本不存在，跳过${END}"
fi

# ============================================
# 汇总结果
# ============================================
echo ""
echo "============================================================"
if [ $CHECK_FAILED -eq 0 ]; then
  echo "${GREEN}✅ 所有检查通过！可以提交代码${END}"
  echo "============================================================"
  exit 0
else
  echo "${RED}❌ 部分检查失败，请修复后再提交${END}"
  echo ""
  echo "${YELLOW}提示：${END}"
  echo "  - 如果是 Checkstyle 问题，运行: mvn checkstyle:check 查看详情"
  echo "  - 如果是 PMD 问题，运行: mvn pmd:check 查看详情"
  echo "  - 如果是 SpotBugs 问题，运行: mvn spotbugs:check 查看详情"
  echo "  - 如果想跳过检查，设置环境变量: SKIP_COMPLIANCE_CHECK=true"
  echo "============================================================"
  exit 1
fi
