Zephyr 代码评审 — zephyrrtos_china/zephyr PR #2
# PR 评审 — zephyrrtos_china/zephyr #2
> base = `origin/main` · head = `refs/pull/2/head`(由 `refs/pull/2/head` 拉取)
> checkpatch:未运行(CI 负责该检查;需要本页跑请加 `?checkpatch=1`)
```
drivers/interrupt_controller/Kconfig.gic | 10 +
drivers/interrupt_controller/intc_gicv3.c | 9 +
include/zephyr/arch/arm64/arm_mmu.h | 11 +-
.../dt-bindings/memory-attr/memory-attr-arm64.h | 6 +
kernel/CMakeLists.txt | 14 +-
kernel/condvar_single.c | 107 ++++++
kernel/mailbox_single.c | 377 +++++++++++++++++++++
kernel/msg_q_single.c | 150 ++++++++
kernel/mutex_single.c | 82 +++++
kernel/queue_single.c | 164 +++++++++
kernel/sched_single.c | 172 ++++++++++
kernel/sem_single.c | 120 +++++++
kernel/stack_single.c | 125 +++++++
kernel/system_work_q_single.c | 24 ++
kernel/work_single.c | 131 +++++++
15 files changed, 1497 insertions(+), 5 deletions(-)
```
# Zephyr 代码评审报告
- **范围**: diff `origin/main..refs/pull/2/head`(20 个文件)
- **模式**: diff **Profile**: app+kconfig **分析**: all
- **Zephyr**: 4.5.99 @ 25206336e4fa
- **规则集**: 40 条(启用 40 条) **tree-sitter**: 0.26.0
- **范围口径**: 基于完整文件(新增/存量问题都报,逐条标注)
## 1. 结论
| 等级 | 数量 | 含义 |
|---|---|---|
| MAJOR | 0 | 明确缺陷或会触发上游 CI 失败,建议改 |
| MINOR | 1 | 约定/一致性问题 |
| INFO | 0 | 启发式提示,需人工确认 |
**判定**:可合入 —— 有 1 项 MINOR 建议在本轮或紧随的提交里修掉
## 2. 问题清单
| # | 等级 | 规则 | 位置 | 置信度 | 改动 | 摘要 |
|---|---|---|---|---|---|---|
| 1 | MINOR | R-UP-002 | `<commit eaaae40b4bd1>:1` | certain | 新增 | commit 标题不合规范 |
### 1. [MINOR] R-UP-002 — commit 标题不合规范
- **位置**: `<commit eaaae40b4bd1>:1`
- **代码**: `drivers: interrupt_controller: gicv3: allow skipping shared distributor init`
- **现象**: 标题 76 字符 > 72
- **判据**: Zephyr 要求 `[subsystem:] 简短祈使句`,标题超过 72 字符会被 CI 判失败,且 release notes 生成会错乱。
- **建议**: `drivers: gpio: nrfx: fix pin interrupt mask`(小写、祈使、无句号、≤72 字符)。
- **参考**: Zephyr Commit Guidelines
## 3. 结构分析(tree-sitter)
(未做结构分析:未启用 --analysis,或 tree-sitter 不可用)
## 4. 机器检查(上游工具)
(未运行上游工具)
## 5. 未验证 / 需人工确认(Lane H)
- **-** `.github/workflows/bsim-tests-publish.yaml`:非 C/Python 源文件(.yaml),只做了通用检查,未做规则扫描与复杂度分析
- **-** `.github/workflows/bsim-tests.yaml`:非 C/Python 源文件(.yaml),只做了通用检查,未做规则扫描与复杂度分析
- **-** `.github/workflows/codecov.yaml`:非 C/Python 源文件(.yaml),只做了通用检查,未做规则扫描与复杂度分析
- **-** `.github/workflows/hello_world_multiplatform.yaml`:非 C/Python 源文件(.yaml),只做了通用检查,未做规则扫描与复杂度分析
以下项目**机器判不了**,请评审人逐项给结论(机器结论不能替代这几条):
| 项目 | 要回答的问题 |
|---|---|
| 设计意图 | 这段代码要解决什么问题?它的失败路径是否是设计允许的行为? |
| 栈与实时性 | 线程栈尺寸有实测依据吗(CONFIG_THREAD_ANALYZER / 运行时 high-water mark),还是只是猜的? |
| 优先级与反转 | 新增线程/锁的优先级分配理由;k_mutex 有优先级继承,k_sem/k_msgq 没有 |
| 性能预算 | 新增路径在最坏频率下的耗时是否可接受(有测量而不是估算) |
| API 语义 | 所用内核/驱动 API 的阻塞属性与调用上下文(线程/ISR/系统启动期)是否一致 |
| 版本兼容 | 跨版本差异是否已用 Kconfig/#if 显式隔离,而不是依赖「应该一样」 |
| 测试证据 | 新增行为有能在 native_sim/QEMU 上跑的 ztest 吗;没有的话凭什么相信它是对的 |
## 6. 规则覆盖
- **因 profile 跳过**: R-DRV-001, R-DRV-004, R-KRN-001, R-KRN-003, R-KRN-004, R-KRN-005, R-KRN-006, R-KRN-007, R-MEM-003, R-SEC-002
- **命中规则**: R-UP-002
- **已执行但未命中**: R-CX-001, R-CX-002, R-CX-003, R-CX-004, R-CX-005, R-CX-006, R-DRV-002, R-DRV-003, R-DT-001, R-DT-002, R-KCF-001, R-KCF-002, R-KCF-003, R-KRN-002, R-MEM-001, R-MEM-002, R-MEM-004, R-MEM-005, R-PY-001, R-PY-002, R-PY-003, R-PY-004, R-PY-005, R-PY-006, R-SEC-001, R-SEC-003, R-UP-001, R-UP-003, R-UP-004
> 等级策略:机器规则最高 MAJOR(BLOCK 只能由评审人确认后给出);启发式规则一律降级 INFO 并标注「待人工确认」。