Automated Fixing of Programs with Contracts

被引:159
|
作者
Pei, Yu [1 ]
Furia, Carlo A. [1 ]
Nordio, Martin [1 ]
Wei, Yi [2 ]
Meyer, Bertrand [1 ]
Zeller, Andreas [3 ]
机构
[1] Swiss Fed Inst Technol, Chair Software Engn, Dept Comp Sci, Zurich, Switzerland
[2] Microsoft Res Cambridge, Constraint Reasoning Grp, Cambridge, England
[3] Univ Saarland, Software Engn Chair, D-66123 Saarbrucken, Germany
基金
瑞士国家科学基金会;
关键词
Automatic program repair; contracts; dynamic analysis; TEST-DRIVEN DEVELOPMENT; QUALITY; REPAIR; ERRORS;
D O I
10.1109/TSE.2014.2312918
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
This paper describes AutoFix, an automatic debugging technique that can fix faults in general-purpose software. To provide high-quality fix suggestions and to enable automation of the whole debugging process, AutoFix relies on the presence of simple specification elements in the form of contracts (such as pre- and postconditions). Using contracts enhances the precision of dynamic analysis techniques for fault detection and localization, and for validating fixes. The only required user input to the AutoFix supporting tool is then a faulty program annotated with contracts; the tool produces a collection of validated fixes for the fault ranked according to an estimate of their suitability. In an extensive experimental evaluation, we applied AutoFix to over 200 faults in four code bases of different maturity and quality (of implementation and of contracts). AutoFix successfully fixed 42 percent of the faults, producing, in the majority of cases, corrections of quality comparable to those competent programmers would write; the used computational resources were modest, with an average time per fix below 20 minutes on commodity hardware. These figures compare favorably to the state of the art in automated program fixing, and demonstrate that the AutoFix approach is successfully applicable to reduce the debugging burden in real-world scenarios.
引用
收藏
页码:427 / 449
页数:23
相关论文
共 50 条
  • [41] THE AUTOMATED DESIGN OF CONTROL PROGRAMS
    POPLAVSKII, VS
    TEITELMAN, BL
    SOVIET ENGINEERING RESEARCH, 1984, 4 (09): : 44 - 46
  • [42] Automated Debugger for Parallel Programs
    Rosenberger, Jack
    COMMUNICATIONS OF THE ACM, 2010, 53 (08) : 16 - 16
  • [43] Proofs-as-imperative-programs: Application to synthesis of contracts
    Poernomo, I
    PERSPECTIVES OF SYSTEM INFORMATICS, 2003, 2890 : 112 - 119
  • [44] Collective Contracts for Message-Passing Parallel Programs
    Luo, Ziqing
    Siegel, Stephen F.
    COMPUTER AIDED VERIFICATION, PT II, CAV 2024, 2024, 14682 : 44 - 68
  • [45] Extracting Visual Contracts from Java']Java Programs
    Alshanqiti, Abdullah
    Heckel, Reiko
    2015 30TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE), 2015, : 104 - 114
  • [46] Inferring visual contracts from Java']Java programs
    Alshanqiti, Abdullah
    Heckel, Reiko
    Kehrer, Timo
    AUTOMATED SOFTWARE ENGINEERING, 2018, 25 (04) : 745 - 784
  • [47] Work Contracts Future Programs are intended to initiate a Turnaround
    不详
    FLEISCHWIRTSCHAFT, 2020, 100 (07): : 60 - 60
  • [48] EVMPatch: Timely and Automated Patching of Ethereum Smart Contracts
    Rodler, Michael
    Li, Wenting
    Karame, Ghassan O.
    Davi, Lucas
    PROCEEDINGS OF THE 30TH USENIX SECURITY SYMPOSIUM, 2021, : 1289 - 1306
  • [49] SmartWarden: Automated Intrusion Detection System for Smart Contracts
    Echeberria-Barrio, Xabier
    Zola, Francesco
    Segurola-Gil, Lander
    Orduna-Urrutia, Raul
    2021 3RD CONFERENCE ON BLOCKCHAIN RESEARCH & APPLICATIONS FOR INNOVATIVE NETWORKS AND SERVICES (BRAINS), 2021, : 51 - 52
  • [50] Towards Automated Generation of Bug Benchmark for Smart Contracts
    2019 IEEE 12TH INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION WORKSHOPS (ICSTW 2019), 2019, : 184 - 187