check-filament-compliance.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/bin/bash
  2. echo "=========================================="
  3. echo "Filament 开发规范快速检查工具"
  4. echo "=========================================="
  5. echo ""
  6. ERRORS=0
  7. # 检查 Filament 页面类
  8. echo "1. 检查 Filament 页面类..."
  9. grep -r "extends Component" app/Filament/Pages/ 2>/dev/null && {
  10. echo " ❌ 错误:页面类不应继承 Component"
  11. ((ERRORS++))
  12. } || {
  13. echo " ✅ 正确:所有页面继承 Filament\Pages\Page"
  14. }
  15. # 检查属性类型声明
  16. echo ""
  17. echo "2. 检查页面属性类型声明..."
  18. grep -r "navigationGroup.*string" app/Filament/Pages/ 2>/dev/null && {
  19. echo " ❌ 错误:navigationGroup 类型应为 string|UnitEnum|null"
  20. ((ERRORS++))
  21. } || {
  22. echo " ✅ 正确:navigationGroup 类型正确"
  23. }
  24. # 检查视图文件根元素
  25. echo ""
  26. echo "3. 检查视图文件只有一个根元素..."
  27. for file in resources/views/filament/pages/*.blade.php resources/views/livewire/*.blade.php; do
  28. if [ -f "$file" ]; then
  29. OPENING_TAGS=$(grep -c "^<[a-zA-Z]" "$file" 2>/dev/null || echo 0)
  30. CLOSING_TAGS=$(grep -c "^</" "$file" 2>/dev/null || echo 0)
  31. if [ $OPENING_TAGS -ne $CLOSING_TAGS ] || [ $OPENING_TAGS -ne 1 ]; then
  32. echo " ❌ 错误:$file 根元素数量不正确"
  33. ((ERRORS++))
  34. else
  35. echo " ✅ 正确:$file"
  36. fi
  37. fi
  38. done
  39. # 检查是否有脚本在外面
  40. echo ""
  41. echo "4. 检查是否有独立脚本标签在外面..."
  42. SCRIPT_ERRORS=$(grep -A1 "^</div>" resources/views/filament/pages/*.blade.php resources/views/livewire/*.blade.php 2>/dev/null | grep "^<script\|^<style" | wc -l)
  43. if [ $SCRIPT_ERRORS -gt 0 ]; then
  44. echo " ❌ 错误:发现 $SCRIPT_ERRORS 个外部脚本/样式标签"
  45. ((ERRORS++))
  46. else
  47. echo " ✅ 正确:无外部脚本/样式标签"
  48. fi
  49. # 总结
  50. echo ""
  51. echo "=========================================="
  52. if [ $ERRORS -eq 0 ]; then
  53. echo "✅ 所有检查通过!系统符合 Filament 规范"
  54. exit 0
  55. else
  56. echo "❌ 发现 $ERRORS 个错误!请修复后重新检查"
  57. echo ""
  58. echo "参考文档:"
  59. echo " - /Users/yemeishu/.claude/FILAMENT_STRICT_DEVELOPMENT_RULES.md"
  60. echo " - /Users/yemeishu/.claude/skills/README.md"
  61. exit 1
  62. fi