概述
静态审计发现多处实现存在"为过测试而写"的问题,在真实使用场景中会出错或行为不符预期。按风险从高到低排列如下。
1. 🔴 tar 实现是自定义格式,非标准 tar
风险:高 — 真实场景完全不可互通
- 核心序列化使用自定义头
MBTAR1\n(src/lib/commands/strings_split_tar.mbt:465),不是标准 tar 格式。
- 代码注释直接写了
for comparison tests(src/lib/commands/strings_split_tar.mbt:392)。
-z 标志被直接忽略(src/lib/commands/strings_split_tar.mbt:593)。
- 读取时如果不是 MBTAR1 格式就返回空条目(
src/lib/commands/strings_split_tar.mbt:495),但 -t/-x 仍按成功路径走。
- 结论: 标准 tar/tar.gz 文件基本不可用,只能"自己打包自己解包"。
2. 🔴 jq 有大量"题库式硬编码兼容"分支
风险:高 — 非完整语义实现,是缺口处打补丁让特定 case 过
src/lib/commands/jq_compat_advanced.mbt:4 写明是 Targeted man.test compatibility。
- 通过
if trimmed == "..." 匹配固定 filter,再返回预制结果(如 src/lib/commands/jq_compat_advanced.mbt:5)。
- 此逻辑在主执行路径里优先参与(
src/lib/commands/jq_cmd.mbt:134, src/lib/commands/jq_cmd.mbt:161)。
- 约 268 个固定 filter 硬编码分支(统计自
jq_compat_* 文件)。
- 结论: 不是完整语义实现,而是"缺口处打补丁让特定官方 case 过"。
3. 🟡 comparison 测试基线机制存在折扣
- fixture 有 29 个
locked: true 条目。
- 回放模式不跑真实 bash(
tests/comparison/fixture-runner.ts:421)。
- record 模式下遇到 locked 也不跑真实 bash,直接复用旧值(
tests/comparison/fixture-runner.ts:399)。
- 不等于实现一定错,但"过测试 ≠ 真实一致",给测试可信度打了折扣。
4. 🟡 其他"强兼容壳"点
rg 实际是 grep -E 映射(src/lib/interpreter/builtins_dispatch.mbt:234,docs/ROADMAP.md:556 也写了 mapped)。
/bin/* 默认是 stub 文件(src/wrapper/index.ts:607),解释器识别 marker 后走虚拟分发(src/lib/interpreter/interpreter_execution_helpers.mbt:1032),是为兼容/测试稳定性加的机制。
建议重构优先级
- tar — 实现标准 USTAR 格式的序列化/反序列化,至少支持基本的 create/extract/list
- jq — 逐步用
bobzhang/moonjq 社区包替代硬编码分支,删除 jq_compat_* 兼容层
- 测试基线 — 审查 locked fixtures,解锁可验证的条目,补充真实 bash 对照
- rg / /bin/ stubs — 文档明确说明是别名/stub,或补充更真实的行为
概述
静态审计发现多处实现存在"为过测试而写"的问题,在真实使用场景中会出错或行为不符预期。按风险从高到低排列如下。
1. 🔴 tar 实现是自定义格式,非标准 tar
风险:高 — 真实场景完全不可互通
MBTAR1\n(src/lib/commands/strings_split_tar.mbt:465),不是标准 tar 格式。for comparison tests(src/lib/commands/strings_split_tar.mbt:392)。-z标志被直接忽略(src/lib/commands/strings_split_tar.mbt:593)。src/lib/commands/strings_split_tar.mbt:495),但-t/-x仍按成功路径走。2. 🔴 jq 有大量"题库式硬编码兼容"分支
风险:高 — 非完整语义实现,是缺口处打补丁让特定 case 过
src/lib/commands/jq_compat_advanced.mbt:4写明是Targeted man.test compatibility。if trimmed == "..."匹配固定 filter,再返回预制结果(如src/lib/commands/jq_compat_advanced.mbt:5)。src/lib/commands/jq_cmd.mbt:134,src/lib/commands/jq_cmd.mbt:161)。jq_compat_*文件)。3. 🟡 comparison 测试基线机制存在折扣
locked: true条目。tests/comparison/fixture-runner.ts:421)。tests/comparison/fixture-runner.ts:399)。4. 🟡 其他"强兼容壳"点
rg实际是grep -E映射(src/lib/interpreter/builtins_dispatch.mbt:234,docs/ROADMAP.md:556也写了 mapped)。/bin/*默认是 stub 文件(src/wrapper/index.ts:607),解释器识别 marker 后走虚拟分发(src/lib/interpreter/interpreter_execution_helpers.mbt:1032),是为兼容/测试稳定性加的机制。建议重构优先级
bobzhang/moonjq社区包替代硬编码分支,删除jq_compat_*兼容层