1+ <!DOCTYPE html>
2+ < html lang ="zh-CN ">
3+ < head >
4+ < meta charset ="UTF-8 ">
5+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
6+ < title > 训练营项目报告</ title >
7+ < link rel ="stylesheet " href ="style.css ">
8+ </ head >
9+ < body >
10+ < nav >
11+ < div class ="logo "> 训练营项目</ div >
12+ < ul >
13+ < li > < a href ="#usage "> 使用说明</ a > </ li >
14+ < li > < a href ="#extension "> 扩展指南</ a > </ li >
15+ < li > < a href ="#features "> 技术特点</ a > </ li >
16+ </ ul >
17+ </ nav >
18+ < header >
19+ < h1 > 训练营项目产品手册</ h1 >
20+ < p > 一个用于管理和评测编程练习的基于Rust的工具</ p >
21+ </ header >
22+ < main >
23+ < section id ="usage ">
24+ < h2 > < span class ="icon "> 🚀</ span > 产品使用说明</ h2 >
25+ < p > 本工具提供了一套命令行接口,用于管理和评测不同课程的练习。</ p >
26+ < h3 > 配置新课程</ h3 >
27+ < p > 使用 < code > learn</ code > 命令来克隆和配置一个新的课程仓库作为 git submodule。</ p >
28+ < pre > < code > cargo xtask learn --course <课程名称> --submodule <课程仓库Git地址></ code > </ pre >
29+ < p > 例如,要配置一个名为 `my-rust-course` 的课程,可以运行:</ p >
30+ < pre > < code > cargo xtask learn --course my-rust-course --submodule https://github.com/user/my-rust-course.git</ code > </ pre >
31+
32+ < h3 > 评测练习</ h3 >
33+ < p > 使用 < code > eval</ code > 命令来评测练习。可以评测所有课程,也可以指定单个课程。</ p >
34+ < p > 评测所有课程:</ p >
35+ < pre > < code > cargo xtask eval</ code > </ pre >
36+ < p > 评测指定课程:</ p >
37+ < pre > < code > cargo xtask eval --course <课程名称></ code > </ pre >
38+ < p > 评测结果将显示在终端,并保存到项目根目录下的 < code > eval_result.json</ code > 文件中。</ p >
39+ </ section >
40+
41+ < section id ="extension ">
42+ < h2 > < span class ="icon "> 🧩</ span > 如何拓展新课程评测</ h2 >
43+ < p > 系统可以方便地扩展以支持新的课程类型。目前的实现支持 `learning-lm-rs`、`learning-cxx` 和其他基于 `rustlings` 的课程。</ p >
44+ < p > 要添加对新课程类型的支持,需要修改 < code > xtask/src/eval.rs</ code > 文件:</ p >
45+ < ol >
46+ < li > 在 < code > eval.rs</ code > 中为你的新课程类型添加一个新的评测函数,例如 < code > eval_my_course(&self, course_path: &Path) -> Result<(...)></ code > 。</ li >
47+ < li >
48+ 在 < code > run_eval</ code > 函数的 < code > match</ code > 语句中,添加一个新的分支来调用你的评测函数。
49+ < pre > < code > // in xtask/src/eval.rs, inside run_eval function
50+ let (results, succeeds, failures, exercations) = match course_name {
51+ "learning-lm-rs" => self.eval_learning_lm(&path)?,
52+ "learning-cxx" => self.eval_learning_cxx(&path)?,
53+ "my-new-course" => self.eval_my_course(&path)?, // 添加新的分支
54+ _ => self.eval_rustlings(&path)?
55+ };</ code > </ pre >
56+ </ li >
57+ </ ol >
58+ < p > 新的评测函数需要实现具体的评测逻辑,例如运行测试、检查输出来确定练习的通过状态,并返回一个包含练习结果、成功数、失败数和总数的元组。</ p >
59+ </ section >
60+
61+ < section id ="features ">
62+ < h2 > < span class ="icon "> 💡</ span > 技术特点</ h2 >
63+ < ul >
64+ < li > < strong > 基于 Rust 构建:</ strong > 核心工具链使用 Rust 编写,确保了高性能和内存安全。</ li >
65+ < li > < strong > 可扩展的评测引擎:</ strong > 通过模块化的设计,可以轻松地为不同语言或框架的课程添加新的评测逻辑。</ li >
66+ < li > < strong > 命令行接口:</ strong > 使用 < code > clap</ code > 库提供清晰、易用的命令行接口。</ li >
67+ < li > < strong > Git Submodule 集成:</ strong > 课程作为 Git 子模块进行管理,方便版本控制和分发。</ li >
68+ < li > < strong > 结构化输出:</ strong > 评测结果以 JSON 格式输出,方便与其他工具或系统集成。</ li >
69+ </ ul >
70+ </ section >
71+ </ main >
72+ < footer >
73+ < p > 报告生成于 © 2025</ p >
74+ </ footer >
75+ </ body >
76+ </ html >
0 commit comments