Software Engineering Empirical Research Radar
Repair 初学 FAQ
把第一次接触 LLM repair 会问的问题先说透。
这页不是论文综述,而是上手前的防摔垫。第一次做 repair,最容易混淆的是:工具能修和论文能发表、测试通过和真正修对、更多上下文和公平比较。
第一次应该先读什么?
先读总览页和论文地图,不要先读所有 APR 老论文。你只需要先掌握 generate-and-validate、plausible/correct、Defects4J、LLM feedback loop 四个概念。
我必须懂程序合成或形式化方法吗?
不用一开始就懂。传统 APR 里有 synthesis/constraint line,但你的第一篇可以从 empirical LLM repair protocol 和 diagnostic evidence 开始。
为什么不能直接让 LLM 修,然后跑全测试?
可以作为工程工具,但论文不够。因为全测试通过只是 plausible,而且不同方法如果反馈预算不一致,就不是公平比较。
修完跑所有测试再反馈给 LLM 可以吗?
实验上可以,但要公平、昂贵且可能过拟合。推荐分层反馈:compile、triggering、relevant、full。full tests 的结果要谨慎回传,避免把 test suite 当训练 oracle 用到极致。
Ochiai 和 repair 有什么关系?
Ochiai 是必须比较的普通 FL baseline。我们的 diagnostic advice 必须证明比 statement-level Ochiai top-k 更能帮助 LLM 修复。
statement-level mapping 为什么还重要?
06/07/08/09 的诊断输出可能是 route、frontier、chain、event。要和 Ochiai 公平比较,必须先投影回 statement level,并采用 strict tie-worst。
怎么避免 oracle leakage?
prompt 里不能出现 developer patch、真实 fix diff、bug type、gold fault line。diagnostic card 只能写运行事实、对比、可疑证据和固定格式解释。
什么叫 overfitting patch?
补丁通过已有测试,但语义仍错。例如删除功能、放宽断言、硬编码测试值、吞异常、绕过边界条件。
人工判 correct 会不会主观?
会,所以要有 rubric:是否保持 API 语义、是否与 developer patch 语义一致、是否通过额外测试、是否引入行为回归。最好双人审查或抽样复审。
SANER 来得及吗?
来得及做 pilot 或 short/ERA 风格信号,但 full paper 需要强 RQ、严格 baseline 和稳定 runner。第一目标是 3-bug smoke + 16-bug paired pilot。
LLM repair 的新意会不会很快过时?
会,所以贡献不要写成某个 prompt。写成诊断证据 schema、预算公平 protocol、repair-loop validation scheduling 或 correctness defense,寿命更长。
我现在第一条命令该跑什么?
先不要跑 LLM。先 checkout 一个 Defects4J bug,确认 compile/test/export triggering tests 都通,再接一个 dummy patch receipt。
第一周检查清单
- 能 checkout 并编译至少 1 个 Defects4J bug。
- 能导出 triggering tests 并单独运行。
- 能 apply 一个 diff,并在失败时恢复工作目录。
- 能保存 receipt,而不是只看终端输出。
- 能生成三种 prompt:vanilla、Ochiai-guided、diagnostic-advice-guided。
- 能解释 plausible 和 correct 的区别。
- 能说清楚为什么我们的 advice 没有泄漏 gold patch。