paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Phoenix: automated data-driven synthesis of repairs for static analysis violations

Phoenix:面向静态分析违规的自动化数据驱动修复合成
FSE Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering2019匹配度 4/10 · 论文属于静态分析违规的自动修复,与静态分析及工业落地有一定关联;但核心方法是传统的数据驱动程序合成,不涉及 LLM/Agent 与静态分析/形式化验证的交叉,也不属于浮点程序分析或贝叶斯程序分析。引用 58 inbox
Rohan Bavishi, Hiroaki Yoshida, Mukul R. Prasad
crossref: 2026-09-12

AI 速览

一句话:通过从GitHub挖掘补丁并学习DSL修复策略,自动为静态分析违规合成高质量补丁,无需测试套件。

传统自动程序修复工具依赖测试套件作为修复规约,而测试套件通常不具备规约质量;静态分析报告的违规也难以直接处理。本文提出 Phoenix,将静态分析器作为 oracle,无需测试套件,通过从 GitHub 挖掘并清洗违规与补丁,学习用新型 DSL 表达的可执行修复策略,再实例化到未见违规。作者从 517 个 GitHub 项目获得 5,389 个唯一违规与补丁,交叉验证生成 4,596 个修复,召回率 85%、精确率 54%。在另外 5 个项目上,Phoenix 为未知 bug 生成 94 个正确补丁,其中 19 个已被合并。

问题
传统自动程序修复依赖测试套件作为修复规约,但测试套件往往不具备规约质量;同时静态分析工具报告的违规难以直接转化为可操作的修复。
方法
将静态分析器作为 oracle,从 GitHub 挖掘并清洗静态分析违规及其补丁,学习以新型 DSL 表达的可执行、可泛化修复策略,再将策略实例化为具体补丁应用于未见违规。
评估
在 517 个 GitHub 项目、5,389 个唯一违规与补丁构成的语料库上交叉验证,生成 4,596 个修复,召回率 85%、精确率 54%;并在另外 5 个项目上为未知 bug 生成 94 个正确补丁,其中 19 个被开发团队接受合并。
原文摘要(Abstract)

Traditional automatic program repair (APR) tools rely on a test-suite as a repair specification. But test suites even when available are not of specification quality, limiting the performance and hence viability of test-suite based repair. On the other hand, static analysis-based bug finding tools are seeing increasing adoption in industry but still face challenges since the reported violations are viewed as not easily actionable. We propose a novel solution that solves both these challenges through a technique for automatically generating high-quality patches for static analysis violations by learning from examples. Our approach uses the static analyzer as an oracle and does not require a test suite. We realize our solution in a system, Phoenix, that implements a fully-automated pipeline that mines and cleans patches for static analysis violations from the wild, learns generalized executable repair strategies as programs in a novel Domain Specific Language (DSL), and then instantiates concrete repairs from them on new unseen violations. Using Phoenix we mine a corpus of 5,389 unique violations and patches from 517 Github projects. In a cross-validation study on this corpus Phoenix successfully produced 4,596 bug-fixes, with a recall of 85% and a precision of 54%. When applied to the latest revisions of a further5 Github projects, Phoenix produced 94 correct patches to previously unknown bugs, 19 of which have already been accepted and merged by the development teams. To the best of our knowledge this constitutes, by far the largest application of any automatic patch generation technology to large-scale real-world systems

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@inproceedings{paperbot5165,
  title = {Phoenix: automated data-driven synthesis of repairs for static analysis violations},
  author = {Rohan Bavishi and Hiroaki Yoshida and Mukul R. Prasad},
  booktitle = {FSE},
  year = {2019},
  doi = {10.1145/3338906.3338952}
}