src/bad_style.py人为写得很差:导入在同一行、命名随意、短路写法、资源泄露风险、异常类型不规范等- 候选人需要把它改成“更像生产代码”的样子
- 但测试锁定了对外行为:CLI 输出与 calc 的数值行为不能变
- 把异常改为
ValueError或自定义异常(注意 tests 里现在期望 raises Exception,可引导面试官接受改动并同步测试;但作为考试建议不要改 tests) - 使用上下文管理器读文件
- 规范化命名(calc -> calculate_statistics 等)
- 增加类型标注
- 把 parse_numbers 的 split 逻辑简化
- 按 black 风格格式化
- 导入分组与排序
- 将该仓库设置为模板仓库(GitHub Template Repository)
- 考生从模板生成自己的考试仓库(或你们系统自动创建)
- 配置仓库的分支保护规则(重要):
- Settings → Branches → Add branch protection rule
- Branch name pattern:
main - 启用以下选项:
- ✅ Require a pull request before merging
- ✅ Require status checks to pass before merging
- 添加必需检查:
grade (lint + format + tests) - ✅ Do not allow bypassing the above settings
- 详细配置请参考
BRANCH_PROTECTION.md
- 要求考生在规定时间内提交 PR
- CI 自动给出是否通过
- 管理端收集 PR 链接与 CI 状态,进行最终评审
- 自动 PR 创建:
auto-pr.yml会在学生推送分支时自动创建 PR - 自动 CI 检查:
grading-ci.yml会在 PR 上自动运行所有检查 - 分支保护监控:
main-protection.yml监控对 main 分支的操作 - 代码审查要求:
.github/CODEOWNERS定义了代码审查者