Citation Check Report
目标文档:docs/knowledge/04-软件工程实践/02-测试与验证方法论.md
检查日期:2026-06-05
检查人:iforge-citation-check (sonnet,首次跑)
总引用数:19 条 (18 条含 URL,1 条书籍无 URL)
Summary
| 维度 | 结果 |
|---|---|
| URL 可达 | 16 / 18 (ACM DOI 2 条返回 403,系反爬虫非真失效) |
| 引用一致 | 17 / 19 通过;2 条有问题 |
| 可疑编造 | 0 处 |
| 有效 Finding | 3 条 (Section 1: 1, Section 2: 2, Section 3: 0) |
Verdict
NEEDS_FIX
无编造,但有 1 条 URL 错误指向 2017 年文件而非 1998 年原文,以及 1 条数值归因模糊(MAPE 136% → 6% 属实,但"误差源是分支预测"表述过强)。另有 1 条 SLICC 描述存在轻微归因漂移。
Section 1:失效 / 指向错误的 URL (NEEDS_FIX)
| 引用 ID | 文档位置 | 问题 | 建议 |
|---|---|---|---|
[^chen1998] | §蜕变测试 | URL 指向 TR-2017-04.pdf(2017 年技术报告,即 chen2018 的预印本版),而非 1998 年原始报告 HKUST-CS98-01。实际上 HKUST 已无公开链接指向 CS98-01。 | 选项 A:改 URL 为 https://www.cs.hku.hk/data/techreps/document/TR-2017-04.pdf 并同时把 chen1998 与 chen2018 两条合并说明(原始报告 1998,综述期刊版 2018);选项 B:删除 [^chen1998] 单独引用,在 [^chen2018] 注脚补充"首发于 Chen et al. 1998 技术报告 HKUST-CS98-01"。推荐 B,因为 TR-2017-04.pdf 已是 2018 综述的预印版,重复引用语义混乱。 |
备注:ACM DOI 两条([^chen2018] [^quickcheck])返回 HTTP 403,系 ACM 反爬保护,非内容失效。Semantic Scholar([^mckeeman])返回 202,系异步渲染,内容存在。其余 15 条 URL 均 200 正常可达。
Section 2:引用不符 (NEEDS_FIX)
Finding 2-A: Akram 2019 误差源归因过强
文档原文(§CI 回归防线):
"定位到分支预测是主要误差源后,把误差从 136% 降到 6%"
源实际内容:
- 136% → 6% MAPE 数值属实,已被 ResearchGate / IEEE Xplore 收录的摘要及 GitHub README 交叉确认。
- 作者 Akram & Sawalha(二作 Sawalha)属实,2019 PMBS@SC19属实。
- 但"分支预测是主要误差源"过强。原论文的实际贡献是实现了一个 loop predictor(循环预测器),消除了特定类型 microbenchmark 的误差,不是泛指"分支预测是所有误差的主要来源"。改进后的细分 MAPE:控制 benchmarks 9%,依赖 microbenchmarks 5.4%,执行 5.4% → 0.5%,内存 7.7%——误差源是多方面的。
- 该句的表述把"实现了 loop predictor 改善了某类 benchmark 的 IPC 误差"误述为"锁定分支预测为主要误差源后整体从 136% 降到 6%",结论方向发生漂移。
建议:改写为"通过对 gem5 实现补全包括循环预测器在内的若干配置后,IPC MAPE 从 136% 降至 6%",删去"定位到分支预测是主要误差源"的简化表述。
Finding 2-B: SLICC 断言描述有轻微归因漂移
文档原文(§守恒与活性):
"协议层用 SLICC 内嵌状态不变式断言(如某状态下属主数必须为 1)"
源实际内容([^gem5-slicc] 页面,Learning gem5 Part 3 MSI Debugging):
- 源页面给出的断言是
assert(getDirectoryEntry(addr).Owner.count() == 1)加上assert(getDirectoryEntry(addr).Sharers.count() == 0),条件是state == State:M(Modified 状态,非泛指"某状态")。 - 文档写"属主数必须为 1"是 Modified 状态的断言,语义没有错,但省略了
Sharers.count() == 0这一配对断言,且"某状态"含糊。 - 严重性:轻微(信息部分省略,方向无误)。
建议:可改为"协议层用 SLICC 内嵌状态断言(如 Modified 状态下 Owner.count() == 1 且 Sharers.count() == 0)"以精确对齐源文献。不改也不影响核心论点。
Section 3:可疑编造
0 处。
所有文献均已核实真实存在:
| 引用 | 核实结果 |
|---|---|
| Chen 1998 蜕变测试技术报告 HKUST-CS98-01 | 真实。Wikipedia Metamorphic Testing 词条明确写"Chen 在 1998 年技术报告中提出"。 |
| Chen 2018 ACM Computing Surveys 综述,DOI 10.1145/3143561,51(1) Article 4 | 真实。ACM DL 可访问(403 系反爬,非不存在),多个镜像源(figshare/uow、Nottingham repository)确认作者、刊物、卷期、Article 4 号。 |
| Claessen & Hughes 2000 QuickCheck,DOI 10.1145/351240.351266 | 真实。ACM DL 页面存在,DOI 精确匹配,ICFP 2000,ACM SIGPLAN Notices 35(9),pp.268–279。 |
| McKeeman 1998 差分测试,Digital Technical Journal 10(1):100–107 | 真实。dblp 条目 journals/dtj/McKeeman98 及 Tufts 存档 PDF 确认所有细节完全匹配。 |
| CSmith "325+ 编译器 bug",Yang et al. PLDI 2011 | 真实。WebSearch 确认"more than 325 previously unknown bugs",四位作者(Xuejun Yang, Yang Chen, Eric Eide, John Regehr)及 PLDI 2011 均正确。 |
| Feathers 特征化测试,Working Effectively with Legacy Code,Prentice Hall 2004,ISBN 978-0131177055 | 真实。书籍信息属实,ISBN 正确。 |
| Akram & Sawalha 2019,MAPE 136% → 6%,Haswell,PMBS@SC19 | 真实(见 Finding 2-A,数值和作者属实,仅误差源表述偏强)。 |
| gem5 Discussion #778 标题"Testing Approaches for Timing and Statistics Output" | 真实。WebFetch 直接确认标题和内容,讨论双方(Giacomo / Jason)以及容差比对提案均存在。 |
| BookSim2 deadlock_warn_timeout = 256 | 真实。booksim_config.cpp 源码中 _int_map["deadlock_warn_timeout"] = 256 直接可见,liveness 检查属实。 |
| BookSim2 守恒等式 injected = received + in_flight | 部分核实。booksim_config.cpp 含 #ifdef TRACK_FLOWS 的流量追踪统计,具体守恒等式在实现文件而非配置文件,但 BookSim 文档和论文中守恒统计是其已知特性,无编造迹象,等级为"可信但未直接引用 LOC"。 |
| gem5 quick/long/very-long 三层测试,PR 必须过 quick | 真实。TESTING.md 直接确认三层定义和时长(数小时/约12小时/数天)及 PR 要求。 |
Section 4: Pass 引用一览
以下引用通过全部检查,无问题:
| 引用 ID | 内容 |
|---|---|
[^metamorphic-wiki] | Wikipedia Metamorphic testing,内容与文档描述一致 |
[^chen2018] | Chen 2018 ACM CSUR 综述,DOI / 卷期 / Article 号均正确 |
[^quickcheck] | QuickCheck DOI 10.1145/351240.351266 正确 |
[^mckeeman] | McKeeman 1998 Digital Technical Journal 10(1):100–107 全部正确 |
[^csmith] | Yang et al. PLDI 2011,"325+" 表述准确 |
[^feathers] | Feathers 2004 书籍,ISBN 正确 |
[^hypothesis] | Hypothesis 官方文章,URL 200 |
[^proptest] | proptest-rs GitHub,URL 200 |
[^ns3-testing] | ns-3 v3.9 testing,URL 200 |
[^ns3-framework] | ns-3 v3.17 testing manual,URL 200 |
[^booksim] | booksim2 booksim_config.cpp,URL 200,deadlock_warn_timeout=256 确认 |
[^garnet-ni] | Garnet NetworkInterface 源码页,URL 200 |
[^gem5-slicc] | gem5 SLICC Debugging,URL 200,Owner/Sharers 断言确认 |
[^gem5-regression] | gem5 旧版回归测试页,URL 200 |
[^gem5-778] | gem5 Discussion #778,标题与内容属实 |
[^gem5-testing] | gem5 TESTING.md,三层分级确认 |
[^gem5-ci] | gem5 CI workflow yaml,URL 200 |
[^sst-test] | SST Test Framework,URL 200 |
需修复项汇总
| 优先级 | Finding | 位置 | 操作 |
|---|---|---|---|
| HIGH | [^chen1998] URL 指向 TR-2017-04 (2017) 而非 1998 原文 | 参考资料节 | 删除 [^chen1998] 单独条目,在 [^chen2018] 注脚补注"首发于 1998 技术报告 HKUST-CS98-01" |
| MEDIUM | Akram 2019 "分支预测是主要误差源"表述过强 | §CI 回归防线末段 | 改为"通过补全循环预测器等若干配置修正,IPC MAPE 从 136% 降至 6%" |
| LOW | SLICC 断言省略了配对的 Sharers.count()==0 且用"某状态"含糊代替 Modified 状态 | §守恒与活性 | 可选修正,不影响核心论点 |