1+ <!-- Copyright The SimpleKernel Contributors -->
2+
13[ ![ codecov] ( https://codecov.io/gh/Simple-XX/SimpleKernel/graph/badge.svg?token=J7NKK3SBNJ )] ( https://codecov.io/gh/Simple-XX/SimpleKernel )
24![ workflow] ( https://github.com/Simple-XX/SimpleKernel/actions/workflows/workflow.yml/badge.svg )
35![ commit-activity] ( https://img.shields.io/github/commit-activity/t/Simple-XX/SimpleKernel )
@@ -86,11 +88,11 @@ pub trait Scheduler: Send + Sync {
8688#### 3. 测试验证
8789
8890``` bash
89- # 单元测试(宿主机)
90- cargo test
91+ # 单元测试
92+ devcontainer exec --workspace-folder . cargo test
9193
9294# 系统测试(QEMU)
93- cargo xtask test --arch riscv64
95+ devcontainer exec --workspace-folder . cargo xtask test --arch riscv64
9496```
9597
9698#### 4. 对照参考实现
@@ -124,8 +126,7 @@ cd SimpleKernel
124126# 安装 Dev Containers 扩展后,点击左下角 >< 图标
125127# 选择 "Reopen in Container"
126128
127- # 或使用 CLI
128- npm install -g @devcontainers/cli
129+ # 或使用已存在的 Dev Container CLI
129130devcontainer up --workspace-folder .
130131devcontainer exec --workspace-folder . bash
131132```
@@ -134,35 +135,35 @@ devcontainer exec --workspace-folder . bash
134135>
135136> 详细说明见 [ Dev Container 文档] ( ./docs/docker.md )
136137
137- > 开发环境默认优先使用 Dev Container。除安装 Docker、Dev Container CLI/扩展 、
138- > Git 等入口工具外,不需要在宿主机安装 Rust nightly、交叉编译器、QEMU 或固件构建依赖 。
138+ > 开发环境默认优先使用 Dev Container。宿主机只保留 Docker 或兼容容器运行时 、
139+ > Git、编辑器/AI agent 和已有 Dev Container 入口工具;不要为了本项目在宿主机安装开发依赖 。
139140
140141** 方式二:修复容器或执行明确要求的本地任务**
141142
142- 默认不在宿主机安装 Rust nightly、交叉编译器、QEMU 或固件构建依赖。只有容器不可用、正在修复容器自身配置,或任务明确要求本地环境时 ,才在宿主机执行,并在 PR 中说明原因和验证边界。
143+ 默认不在宿主机安装 Rust nightly、交叉编译器、QEMU、固件构建依赖或其他项目开发依赖。只有正在修复容器自身配置、文档/Git 等入口操作,或任务明确要求无需项目工具链的本地操作时 ,才在宿主机执行,并在 PR 中说明原因和验证边界。
143144
144145### 编译与运行
145146
146- ``` bash
147- cd SimpleKernel
147+ 以下项目命令通过 Dev Container、Codespaces 或 CI 声明的隔离环境执行;宿主机只作为 Docker/Dev Container 编排入口。
148148
149+ ``` bash
149150# 编译内核
150- cargo xtask build --arch riscv64
151+ devcontainer exec --workspace-folder . cargo xtask build --arch riscv64
151152
152153# 在 QEMU 模拟器中运行
153- cargo xtask run --arch riscv64
154+ devcontainer exec --workspace-folder . cargo xtask run --arch riscv64
154155
155156# 调试(GDB 连接 localhost:1234)
156- cargo xtask debug --arch riscv64
157+ devcontainer exec --workspace-folder . cargo xtask debug --arch riscv64
157158
158- # 单元测试(宿主机 x86_64)
159- cargo test
159+ # 单元测试
160+ devcontainer exec --workspace-folder . cargo test
160161
161162# 系统测试(QEMU 中运行)
162- cargo xtask test --arch riscv64 # 统一测试内核
163- cargo xtask test --arch riscv64 --all # 全部测试(统一 + 独立)
164- cargo xtask test --arch riscv64 --name panic-test # 指定独立测试
165- cargo xtask test --list # 列出可用测试
163+ devcontainer exec --workspace-folder . cargo xtask test --arch riscv64
164+ devcontainer exec --workspace-folder . cargo xtask test --arch riscv64 --all
165+ devcontainer exec --workspace-folder . cargo xtask test --arch riscv64 --name panic-test
166+ devcontainer exec --workspace-folder . cargo xtask test --list
166167```
167168
168169** 支持的架构:**
@@ -218,12 +219,12 @@ SimpleKernel/
218219
219220SimpleKernel 采用两层测试 + 冒烟测试:
220221
221- ### 单元测试(宿主机 )
222+ ### 单元测试(容器内 host target )
222223
223- 纯逻辑 crate 的 ` #[test] ` 模块,在宿主机上运行 :
224+ 纯逻辑 crate 的 ` #[test] ` 模块,在容器内以宿主架构运行 :
224225
225226``` bash
226- cargo test -p memory_types -p config -p page_table_entry -p arch
227+ devcontainer exec --workspace-folder . cargo test -p memory_types -p config -p page_table_entry -p arch
227228```
228229
229230覆盖范围:地址运算、PTE 编解码、常量验证等。
@@ -233,9 +234,9 @@ cargo test -p memory_types -p config -p page_table_entry -p arch
233234每个测试是独立的 ` #![no_std] ` 裸机二进制,启动独立 QEMU 实例,拥有干净的内核环境。
234235
235236``` bash
236- cargo xtask test --arch riscv64 --all # 全部测试
237- cargo xtask test --arch riscv64 --name < name> # 指定测试
238- cargo xtask test --list # 列出可用测试
237+ devcontainer exec --workspace-folder . cargo xtask test --arch riscv64 --all
238+ devcontainer exec --workspace-folder . cargo xtask test --arch riscv64 --name < name>
239+ devcontainer exec --workspace-folder . cargo xtask test --list
239240```
240241
241242测试位于 ` tests/ ` 目录,使用 ` tests/test_harness/ ` 提供的 ` test_main! ` 宏消除样板代码。
@@ -295,6 +296,7 @@ cargo xtask test --list # 列出可用测试
295296- ** 格式化** : ` rustfmt.toml ` (100 字符宽度),` cargo fmt ` 强制执行
296297- ** 静态检查** : ` cargo clippy -- -D warnings `
297298- ** 注释语言** : 所有注释和文档注释使用中文;` // SAFETY: ` 前缀保留英文
299+ - ** 完整约定** : Copyright、注释、文件规模、严格 JSON、第三方代码和运行时配置规则见 [ docs/conventions.md] ( ./docs/conventions.md )
298300
299301### 命名约定
300302
@@ -310,11 +312,17 @@ cargo xtask test --list # 列出可用测试
310312```
311313<type>(<scope>): <subject>
312314
313- type: feat|fix|docs|style|refactor| perf|test|build |revert
315+ type: feat|fix|refactor|test| docs|chore|build|ci| perf|style |revert
314316scope: 可选,影响的模块 (arch, memory, task, xtask)
315317```
316318
317319每条 commit 必须使用 ` git commit --signoff ` (DCO 签署)。
320+ PR CI 会检查每个 commit 是否包含 ` Signed-off-by ` trailer。
321+ 可选提交模板:
322+
323+ ``` bash
324+ git config commit.template .gitmessage
325+ ```
318326
319327## 文档入口
320328
@@ -346,8 +354,8 @@ scope: 可选,影响的模块 (arch, memory, task, xtask)
346354
3473551 . Fork 本仓库
3483562 . 创建功能分支: ` git checkout -b feat/amazing-feature `
349- 3 . 遵循代码规范进行开发
350- 4 . 确保所有测试通过: ` cargo test && cargo xtask test --arch riscv64 --all `
357+ 3 . 遵循 ` AGENTS.md ` 、 ` docs/conventions.md ` 和 ` docs/git.md ` 进行开发
358+ 4 . 确保相关测试通过,例如 ` devcontainer exec --workspace-folder . cargo test` 和 ` devcontainer exec --workspace-folder . cargo xtask test --arch riscv64 --all`
3513595 . 提交变更: ` git commit --signoff -m 'feat(scope): add amazing feature' `
3523606 . 创建 Pull Request
353361
0 commit comments