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, Auto- Fix relies on the presence of simple specification elements in
the form of contracts (such as pre- and post conditions). 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% of
the faults, producing, in the majority of cases, corrections of quality
comparable to those competent programmers would write; the used computational
re- sources 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 Auto- Fix approach is
successfully applicable to reduce the debugging burden in real-world scenarios
No comments:
Post a Comment