quality_rules.yaml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. # AceFlow代码质量规则
  2. # 定义项目的代码质量标准和最佳实践
  3. quality_rules:
  4. code_standards:
  5. naming_conventions:
  6. - rule: "使用有意义的变量名"
  7. pattern: "避免单字母变量名(除循环变量外)"
  8. example: "user_count 而不是 n"
  9. - rule: "函数名使用动词开头"
  10. pattern: "get_, set_, create_, update_, delete_"
  11. example: "get_user_data() 而不是 user_data()"
  12. - rule: "常量使用大写字母"
  13. pattern: "全大写,下划线分隔"
  14. example: "MAX_RETRY_COUNT = 3"
  15. function_design:
  16. - rule: "单一职责原则"
  17. description: "每个函数只做一件事"
  18. max_lines: 50
  19. - rule: "参数数量限制"
  20. max_parameters: 5
  21. suggestion: "超过5个参数考虑使用对象或字典"
  22. - rule: "返回值一致性"
  23. description: "同一函数的所有返回路径应返回相同类型"
  24. documentation:
  25. - rule: "公共函数必须有文档字符串"
  26. required: true
  27. format: "描述功能、参数、返回值"
  28. - rule: "复杂逻辑添加注释"
  29. description: "超过10行的逻辑块应有注释说明"
  30. - rule: "TODO注释格式规范"
  31. format: "# TODO: 描述 (责任人, 预期完成时间)"
  32. security_rules:
  33. input_validation:
  34. - rule: "所有用户输入必须验证"
  35. description: "防止SQL注入、XSS等攻击"
  36. - rule: "敏感数据不得硬编码"
  37. examples: ["密码", "API密钥", "数据库连接字符串"]
  38. - rule: "使用参数化查询"
  39. description: "防止SQL注入攻击"
  40. error_handling:
  41. - rule: "不得暴露系统信息"
  42. description: "错误信息不应包含文件路径、数据库结构等"
  43. - rule: "异常必须被处理"
  44. description: "不允许空的except块"
  45. performance_rules:
  46. efficiency:
  47. - rule: "避免在循环中重复计算"
  48. description: "将不变的计算移到循环外"
  49. - rule: "合理使用数据结构"
  50. description: "根据使用场景选择合适的数据结构"
  51. - rule: "数据库查询优化"
  52. description: "避免N+1查询问题"
  53. resource_management:
  54. - rule: "及时释放资源"
  55. description: "文件、网络连接等资源使用后及时关闭"
  56. - rule: "避免内存泄漏"
  57. description: "注意循环引用和大对象的使用"
  58. # 自动检查配置
  59. automated_checks:
  60. linting:
  61. enabled: true
  62. tools:
  63. python: ["flake8", "pylint", "black"]
  64. javascript: ["eslint", "prettier"]
  65. java: ["checkstyle", "spotbugs"]
  66. on_stage_change: true
  67. block_on_errors: false
  68. testing:
  69. required_coverage: 80
  70. run_on_commit: true
  71. test_types: ["unit", "integration"]
  72. security_scan:
  73. enabled: true
  74. tools: ["bandit", "safety"]
  75. run_frequency: "weekly"
  76. # 代码评审规则
  77. code_review:
  78. required_reviewers: 1
  79. auto_assign: true
  80. checklist:
  81. functionality:
  82. - "代码实现了预期功能"
  83. - "边界条件得到处理"
  84. - "错误处理完善"
  85. quality:
  86. - "代码可读性良好"
  87. - "遵循项目编码规范"
  88. - "适当的测试覆盖"
  89. security:
  90. - "没有明显的安全漏洞"
  91. - "输入验证充分"
  92. - "敏感信息处理得当"
  93. performance:
  94. - "没有明显的性能问题"
  95. - "资源使用合理"
  96. - "算法复杂度可接受"
  97. # 重构建议
  98. refactoring_guidelines:
  99. when_to_refactor:
  100. - "代码重复度超过30%"
  101. - "函数超过50行"
  102. - "类超过500行"
  103. - "圈复杂度超过10"
  104. refactoring_techniques:
  105. - name: "提取函数"
  106. description: "将重复代码提取为独立函数"
  107. - name: "提取常量"
  108. description: "将魔法数字和字符串提取为常量"
  109. - name: "简化条件表达式"
  110. description: "使用卫语句减少嵌套"
  111. - name: "重命名变量"
  112. description: "使用更有意义的变量名"
  113. # 技术债务管理
  114. technical_debt:
  115. tracking:
  116. enabled: true
  117. markers: ["TODO", "FIXME", "HACK", "XXX"]
  118. categories:
  119. - name: "设计债务"
  120. description: "架构设计不合理"
  121. priority: "high"
  122. - name: "代码债务"
  123. description: "代码质量问题"
  124. priority: "medium"
  125. - name: "测试债务"
  126. description: "测试覆盖不足"
  127. priority: "medium"
  128. - name: "文档债务"
  129. description: "文档缺失或过时"
  130. priority: "low"
  131. management:
  132. review_frequency: "monthly"
  133. allocation_percentage: 20 # 20%的开发时间用于偿还技术债务
  134. # 质量指标
  135. quality_metrics:
  136. code_coverage:
  137. target: 80
  138. minimum: 70
  139. complexity:
  140. max_cyclomatic: 10
  141. max_nesting_depth: 4
  142. maintainability:
  143. max_function_length: 50
  144. max_class_length: 500
  145. max_file_length: 1000
  146. duplication:
  147. max_duplicate_percentage: 5