# PPT 补充 · CONFETTI (ICSE 2022) 测试集设置

> 来源:CONFETTI 原论文(Kukucka, Pina, Ammann, Bell, ICSE'22)第 4 节 Evaluation + 表 1/2/3/4。
> 我们 deck 引用 CONFETTI 是借它的 **global hinting** 机制(启发了我们的 `.hints`/`SYMCC_EMIT_HINTS`),
> **不是**做同台对比——务必看下面"⚠️ 与本项目不可直接对比"。

---

## CONFETTI 的测试集/实验设置(照抄论文)

**① 被测程序:5 个真实 Java 程序**(与其所基于的 JQF-Zest 同一套 benchmark)——论文表 1:

| 程序 (版本) | 总分支数 | CONFETTI | JQF-Zest | CONFETTI_tgt(无 global hint) | CONFETTI 找到 bug |
|---|---|---|---|---|---|
| Apache Ant (1.10.2) | 23,361 | 872 | 859 | 871 | 1 |
| Apache Maven (3.5.2) | 5,858 | 857 | 821 | 853 | 0 |
| Apache BCEL (6.2) | 6,220 | 1,421 | 1,361 | 1,423 | 5 |
| Google Closure (20190415) | 49,602 | **11,458** | 10,545 | 10,640 | 15 |
| Mozilla Rhino (1.7.8) | 25,035 | 3,744 | 3,757 | 3,534 | 4 |

（表内覆盖=仅【应用代码】分支覆盖,20 次运行聚合。）

**② 框架**:构建在 **JQF-Zest** 之上(生成器式/parametric fuzzer,非种子文件式)。输入生成器是 JQF 自带
开源生成器的扩展(XML 文档、JavaScript 代码、Java class 文件、Maven pom.xml 生成器,共改动约 2+4+10 行)。

**③ 对比基线(2 个)**:
- **JQF-Zest** —— SOTA 灰盒 Java fuzzer;
- **CONFETTI_tgt** —— 同款 CONFETTI 但**关闭 global hints**(只留 targeted hints)。

**④ 时间预算 & 重复**:每个实验跑 **24 小时**,重复 **20 次**取平均(遵循 Klees et al. 最佳实践)。

**⑤ 覆盖度量**:分支覆盖。两种口径:(a) fuzzer 自身对【全部代码含库】的覆盖;(b) 用 **JaCoCo** 工具
只统计【被测程序应用代码】的分支覆盖(表 1 用的是这个)。

**⑥ Bug 计数**:把 20×24h 运行里的每个程序崩溃当作 bug;用"栈回溯前 5 行 + 人工"去重。CONFETTI 共发现
**15 个此前未报告的 bug**(其中 **9 个**两个基线都找不到),并复现了 JQF-Zest 报的 ~10 个。表 2 给出各 bug 在
20 次运行中的可复现率。

**⑦ 硬件**:AWS EC2 `r5.xlarge`(4×3.1GHz Xeon Platinum 8000, 32GB RAM),Ubuntu 16.04,JDK 1.8.0_241。

**⑧ RQ 结构**:RQ1 覆盖 vs 基线;RQ2 能否找到基线找不到的 bug;RQ3 各 hint 策略(SMT/Char/String/Global/
Random)的有效性(表 3);RQ4 把 global hint 换成字典随机值能否得到同样覆盖(表 4,大多可"最终"复现,
但 Closure 有 **98%** 的 global-hint 覆盖无法用随机值复现 → global hint 确有独立价值)。

---

## ⚠️ 与本项目【不可直接对比】——deck 里务必说清

| 维度 | CONFETTI | 我们(SymCC 并行 hybrid) |
|---|---|---|
| 目标语言 | **Java**(JVM 字节码) | **C/C++**(LLVM) |
| 输入形式 | **生成器式**(JQF/Zest 结构化生成,无种子文件) | **种子文件式**(AFL 语料 + mutation) |
| 覆盖度量 | JaCoCo **分支**覆盖 | afl-showmap **边**覆盖(PCGUARD) |
| 被测集 | Ant/Maven/BCEL/Closure/Rhino | LAVA-M / Google-FTS(png,xml)/ libarchive / pcre2 / sqlite |
| 预算 | 24h × 20 次 | 60–240s × 少数次(资源/时间受限) |
| 我们借用的点 | **global hinting**(把 concolic 发现的关键字节值作为全局 hint/字典 token) | 我们的 `.hints`(`SYMCC_EMIT_HINTS`)→ AFL `extras/` 字典 |

**结论(给答辩)**:CONFETTI 是**方法启发来源**(global hinting → 我们的 hint 传递),**不是同台基线**——
它的测试集是 Java 程序、生成器式、24h×20 的重量级评测,与我们 C 目标、种子式、短预算的评测**指标与规模都不
可比**。deck 里把 CONFETTI 放在"相关工作/思想借鉴"处即可,不要与我们的边覆盖数字并列比较。

**Sources:**
- 论文 PDF(NSF PAR 开放获取):https://par.nsf.gov/servlets/purl/10348174
- ACM DL:https://dl.acm.org/doi/10.1145/3510003.3510628
- 作者页 + 复现 artifact:https://jonbell.net/publications/confetti
