123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- # AceFlow代码质量规则
- # 定义项目的代码质量标准和最佳实践
- quality_rules:
- code_standards:
- naming_conventions:
- - rule: "使用有意义的变量名"
- pattern: "避免单字母变量名(除循环变量外)"
- example: "user_count 而不是 n"
-
- - rule: "函数名使用动词开头"
- pattern: "get_, set_, create_, update_, delete_"
- example: "get_user_data() 而不是 user_data()"
-
- - rule: "常量使用大写字母"
- pattern: "全大写,下划线分隔"
- example: "MAX_RETRY_COUNT = 3"
-
- function_design:
- - rule: "单一职责原则"
- description: "每个函数只做一件事"
- max_lines: 50
-
- - rule: "参数数量限制"
- max_parameters: 5
- suggestion: "超过5个参数考虑使用对象或字典"
-
- - rule: "返回值一致性"
- description: "同一函数的所有返回路径应返回相同类型"
-
- documentation:
- - rule: "公共函数必须有文档字符串"
- required: true
- format: "描述功能、参数、返回值"
-
- - rule: "复杂逻辑添加注释"
- description: "超过10行的逻辑块应有注释说明"
-
- - rule: "TODO注释格式规范"
- format: "# TODO: 描述 (责任人, 预期完成时间)"
- security_rules:
- input_validation:
- - rule: "所有用户输入必须验证"
- description: "防止SQL注入、XSS等攻击"
-
- - rule: "敏感数据不得硬编码"
- examples: ["密码", "API密钥", "数据库连接字符串"]
-
- - rule: "使用参数化查询"
- description: "防止SQL注入攻击"
-
- error_handling:
- - rule: "不得暴露系统信息"
- description: "错误信息不应包含文件路径、数据库结构等"
-
- - rule: "异常必须被处理"
- description: "不允许空的except块"
- performance_rules:
- efficiency:
- - rule: "避免在循环中重复计算"
- description: "将不变的计算移到循环外"
-
- - rule: "合理使用数据结构"
- description: "根据使用场景选择合适的数据结构"
-
- - rule: "数据库查询优化"
- description: "避免N+1查询问题"
-
- resource_management:
- - rule: "及时释放资源"
- description: "文件、网络连接等资源使用后及时关闭"
-
- - rule: "避免内存泄漏"
- description: "注意循环引用和大对象的使用"
- # 自动检查配置
- automated_checks:
- linting:
- enabled: true
- tools:
- python: ["flake8", "pylint", "black"]
- javascript: ["eslint", "prettier"]
- java: ["checkstyle", "spotbugs"]
-
- on_stage_change: true
- block_on_errors: false
-
- testing:
- required_coverage: 80
- run_on_commit: true
- test_types: ["unit", "integration"]
-
- security_scan:
- enabled: true
- tools: ["bandit", "safety"]
- run_frequency: "weekly"
- # 代码评审规则
- code_review:
- required_reviewers: 1
- auto_assign: true
-
- checklist:
- functionality:
- - "代码实现了预期功能"
- - "边界条件得到处理"
- - "错误处理完善"
-
- quality:
- - "代码可读性良好"
- - "遵循项目编码规范"
- - "适当的测试覆盖"
-
- security:
- - "没有明显的安全漏洞"
- - "输入验证充分"
- - "敏感信息处理得当"
-
- performance:
- - "没有明显的性能问题"
- - "资源使用合理"
- - "算法复杂度可接受"
- # 重构建议
- refactoring_guidelines:
- when_to_refactor:
- - "代码重复度超过30%"
- - "函数超过50行"
- - "类超过500行"
- - "圈复杂度超过10"
-
- refactoring_techniques:
- - name: "提取函数"
- description: "将重复代码提取为独立函数"
-
- - name: "提取常量"
- description: "将魔法数字和字符串提取为常量"
-
- - name: "简化条件表达式"
- description: "使用卫语句减少嵌套"
-
- - name: "重命名变量"
- description: "使用更有意义的变量名"
- # 技术债务管理
- technical_debt:
- tracking:
- enabled: true
- markers: ["TODO", "FIXME", "HACK", "XXX"]
-
- categories:
- - name: "设计债务"
- description: "架构设计不合理"
- priority: "high"
-
- - name: "代码债务"
- description: "代码质量问题"
- priority: "medium"
-
- - name: "测试债务"
- description: "测试覆盖不足"
- priority: "medium"
-
- - name: "文档债务"
- description: "文档缺失或过时"
- priority: "low"
-
- management:
- review_frequency: "monthly"
- allocation_percentage: 20 # 20%的开发时间用于偿还技术债务
-
- # 质量指标
- quality_metrics:
- code_coverage:
- target: 80
- minimum: 70
-
- complexity:
- max_cyclomatic: 10
- max_nesting_depth: 4
-
- maintainability:
- max_function_length: 50
- max_class_length: 500
- max_file_length: 1000
-
- duplication:
- max_duplicate_percentage: 5
|