Skip to content

Commit 5d6329b

Browse files
committed
refactor(graders,models): cleanup and improve code quality
- Refactor text graders normalization and tokenization utils - Clean up number_accuracy, similarity, and string_match graders - Improve math_expression_verify implementation - Refactor openai_chat_model and qwen_vl_model - Update zero_shot_evaluation documentation - Add code cleanup guide documents
1 parent 3fb26aa commit 5d6329b

File tree

11 files changed

+1072
-374
lines changed

11 files changed

+1072
-374
lines changed

CODE_CLEANUP_GUIDE.md

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# OpenJudge 代码清理与错误检查指南
2+
3+
## 目标
4+
5+
检查并清理项目中的:
6+
1. **冗余代码** - 未使用的函数、类、变量、导入
7+
2. **代码错误** - 逻辑错误、类型错误、潜在 bug
8+
9+
**请先列出所有问题,不要直接修改。**
10+
11+
---
12+
13+
## 一、冗余代码检查
14+
15+
### 删除前必须确认
16+
17+
| 检查项 | 验证方式 |
18+
|--------|----------|
19+
| 全局无引用 | `grep -r "名称" openjudge/ cookbooks/ tests/` |
20+
| 非动态加载 | 排除 `importlib``getattr``__import__` 调用 |
21+
| 非字符串引用 | 排除字典键名、配置文件中的类名引用 |
22+
| 非类型依赖 | 不被继承、不作为类型注解、不作为 Pydantic 字段 |
23+
| 测试通过 | `pytest tests/ -v` |
24+
25+
### 禁止删除
26+
27+
- `__init__.py` 中的导出和 `__all__`
28+
- 基类(`BaseGrader``BaseAnalyzer` 等)
29+
- Pydantic 模型和 Schema 类
30+
- 抽象方法、配置代码、Prompt 模板
31+
32+
### 可以删除
33+
34+
- 确认无引用的私有函数(`_xxx`
35+
- 注释掉的旧代码
36+
- `print()` 调试语句、`breakpoint()``pdb`
37+
- 未使用的 import
38+
- 标记为 `# DEPRECATED``# TODO: remove` 的代码
39+
40+
---
41+
42+
## 二、代码错误检查
43+
44+
### 需要检查的错误类型
45+
46+
**1. 类型错误**
47+
- 函数参数/返回值类型不匹配
48+
- 可能为 `None` 但未处理
49+
- 错误的类型注解
50+
51+
**2. 逻辑错误**
52+
- 条件判断永远为真/假
53+
- 循环无法退出或永不执行
54+
- 变量赋值后未使用
55+
- 异常捕获后未正确处理(空 `except`
56+
57+
**3. 异步错误**
58+
- `async` 函数未 `await`
59+
- 在同步上下文中调用异步函数
60+
61+
**4. 命名/拼写错误**
62+
- 变量名拼写错误
63+
- 函数/类命名不一致
64+
65+
**5. 潜在 bug**
66+
- 可变默认参数(`def func(lst=[])`
67+
- 循环中修改迭代对象
68+
- 资源未正确关闭
69+
- 硬编码的魔法数字/字符串
70+
71+
---
72+
73+
## 三、重点检查区域
74+
75+
```
76+
openjudge/
77+
├── utils/ # 工具函数是否有重复
78+
├── graders/ # 各 grader 是否都被使用
79+
│ └── */_utils/ # 内部工具是否有引用
80+
├── analyzer/ # 分析器实现是否完整
81+
└── models/ # 模型定义是否正确
82+
```
83+
84+
---
85+
86+
## 四、输出格式
87+
88+
```markdown
89+
## 冗余代码
90+
91+
### [文件路径]
92+
- **位置**: L10-15
93+
- **内容**: `unused_function()`
94+
- **理由**: 全局搜索无引用
95+
- **风险**: 低
96+
97+
## 代码错误
98+
99+
### [文件路径]
100+
- **位置**: L20
101+
- **问题**: [问题描述]
102+
- **建议**: [修复建议]
103+
- **严重性**: 低/中/高
104+
```
105+
106+
---
107+
108+
## 五、验证命令
109+
110+
```bash
111+
# 类型检查
112+
mypy openjudge/ --ignore-missing-imports
113+
114+
# 运行测试
115+
pytest tests/ -v
116+
117+
# 检查未使用的导入
118+
autoflake --check -r openjudge/
119+
120+
# 检查代码风格
121+
ruff check openjudge/
122+
123+
# 验证包导入
124+
python -c "import openjudge; from openjudge.graders import *"
125+
```
126+

0 commit comments

Comments
 (0)