Automatic bug fixing: Difference between revisions

Content deleted Content added
Monkbot (talk | contribs)
m Task 18 (cosmetic): eval 62 templates: del empty params (4×); del |ref=harv (17×);
Use: Improved poor writing style
Line 48:
 
There are multiple uses of automatic bug fixing:
* inIn thea development environment: when the developerWhen encountersencountering a bug, shethe developer activates a feature to search for a patch (for instance by clicking on a button). This search can evenalso happen in the background, when the IDE proactively searches for solutions to potential problems, without waiting for a developer explicit action from the developer.<ref>{{cite journal |last1=Muşlu |first1=Kıvanç |last2=Brun |first2=Yuriy |last3=Holmes |first3=Reid |last4=Ernst |first4=Michael D. |last5=Notkin |first5=David |last6=Muşlu |first6=Kıvanç |last7=Brun |first7=Yuriy |last8=Holmes |first8=Reid |last9=Ernst |first9=Michael D. |last10=Notkin |first10=David |title=Speculative analysis of integrated development environment recommendations, Speculative analysis of integrated development environment recommendations |journal=ACM SIGPLAN Notices |date=19 October 2012 |volume=47 |issue=10 |pages=669, 669–682, 682 |doi=10.1145/2384616.2384665 |issn=0362-1340|citeseerx=10.1.1.259.6341 |s2cid=5795141 }}</ref>
* inIn thea continuous integration server: whenWhen a build fails during continuous integration, a patch search can be attempted as soon as the build has failed. If the search is successful, the patch is givenprovided to the developer before she has started working on it, or before she has found the solution.<ref>{{cite book |last1=Urli |first1=Simon |last2=Yu |first2=Zhongxing |last3=Seinturier |first3=Lionel |last4=Monperrus |first4=Martin |title=How to design a program repair bot?: insights from the repairnator project |date=27 May 2018 |pages=95–104 |doi=10.1145/3183519.3183540 |chapter-url=https://hal.archives-ouvertes.fr/hal-01691496/document|chapter=How to design a program repair bot? |isbn=9781450356596 |arxiv=1811.09852 |s2cid=49237449 }}</ref> When a synthesized patch is suggested to the developers as pull-request, an explanation has to be provided in addition to the code changes (eg. a pull request title and description).<ref>{{Cite book |doi=10.1109/BotSE.2019.00010|arxiv=1905.02597|bibcode=2019arXiv190502597M|chapter=Explainable Software Bot Contributions: Case Study of Automated Bug Fixes|title=2019 IEEE/ACM 1st International Workshop on Bots in Software Engineering (BotSE)|pages=12–15|year=2019|last1=Monperrus|first1=Martin|isbn=978-1-7281-2262-5|s2cid=146808763}}</ref> An experiment has shown that generated patches can be accepted by open-source developers and merged in the code repository.<ref>{{cite journal |last1=Monperrus |first1=Martin |last2=Urli |first2=Simon |last3=Durieux |first3=Thomas |last4=Martinez |first4=Matias |last5=Baudry |first5=Benoit |last6=Seinturier |first6=Lionel |title=Repairnator patches programs automatically |journal=Ubiquity |date=2019 |volume=2019 |issue=July |pages=1–12 |doi=10.1145/3349589 |url=https://hal.archives-ouvertes.fr/hal-02267512/document|bibcode=2019arXiv191006247M |arxiv=1910.06247 |s2cid=198986312 }}</ref>
* atAt runtime: whenWhen a failure happens at runtime, a binary patch can be searched for and [[Self-modifying code|applied online]]. An example of such a repair system is ClearView,<ref name="clearview">{{cite book|title=Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles|last1=Perkins|first1=Jeff H.|date=2009|publisher=ACM|isbn=978-1-60558-752-3|pages=87–102|chapter=Automatically patching errors in deployed software|citeseerx=10.1.1.157.5877|doi=10.1145/1629575.1629585|s2cid=7597529|display-authors=etal}}</ref> which does repair on x86 code, with x86 binary patches. The Itzal system<ref>{{cite book |doi=10.1109/icse-nier.2017.8 |chapter-url=https://hal.archives-ouvertes.fr/hal-01463689/document|isbn=978-1-5386-2675-7 |arxiv=1812.04475 |chapter=Production-driven patch generation|title=2017 IEEE/ACM 39th International Conference on Software Engineering: New Ideas and Emerging Technologies Results Track (ICSE-NIER)|pages=23–26|year=2017|last1=Durieux|first1=Thomas|last2=Hamadi|first2=Youssef|last3=Monperrus|first3=Martin|s2cid=7737476}}</ref> is different from Clearview: while the repair search happens at runtime, in production, the produced patches are at the source code level. The BikiniProxy system does online repair of JavascriptJavaScript errors happening in the browser.<ref>{{cite book |doi=10.1109/ISSRE.2018.00012 |isbn=978-1-5386-8321-7 |arxiv=1803.08725 |bibcode=2018arXiv180308725D |chapter=Fully Automated HTML and Javascript Rewriting for Constructing a Self-Healing Web Proxy |title=2018 IEEE 29th International Symposium on Software Reliability Engineering (ISSRE) |pages=1–12 |year=2018 |last1=Durieux |first1=Thomas |last2=Hamadi |first2=Youssef |last3=Monperrus |first3=Martin |s2cid=4268784 }}</ref>
 
== Search space ==