25 research outputs found

    Repairnator patches programs automatically

    Full text link
    Repairnator is a bot. It constantly monitors software bugs discovered during continuous integration of open-source software and tries to fix them automatically. If it succeeds in synthesizing a valid patch, Repairnator proposes the patch to the human developers, disguised under a fake human identity. To date, Repairnator has been able to producepatches that were accepted by the human developers and permanently merged into the code base. This is a milestone for human-competitiveness in software engineering research on automatic program repair.Comment: arXiv admin note: substantial text overlap with arXiv:1810.0580

    A Comprehensive Study of Code-removal Patches in Automated Program Repair

    Full text link
    Automatic Program Repair (APR) techniques can promisingly help reducing the cost of debugging. Many relevant APR techniques follow the generate-and-validate approach, that is, the faulty program is iteratively modified with different change operators and then validated with a test suite until a plausible patch is generated. In particular, Kali is a generate-and-validate technique developed to investigate the possibility of generating plausible patches by only removing code. Former studies show that indeed Kali successfully addressed several faults. This paper addresses the case of code-removal patches in automated program repair investigating the reasons and the scenarios that make their creation possible, and the relationship with patches implemented by developers. Our study reveals that code-removal patches are often insufficient to fix bugs, and proposes a comprehensive taxonomy of code-removal patches that provides evidence of the problems that may affect test suites, opening new opportunities for researchers in the field of automatic program repair.Comment: New version of the manuscrip

    How to Design a Program Repair Bot? Insights from the Repairnator Project

    Get PDF
    update for oadoi on Nov 02 2018International audienceProgram repair research has made tremendous progress over the last few years, and software development bots are now being invented to help developers gain productivity. In this paper, we investigate the concept of a " program repair bot " and present Repairnator. The Repairnator bot is an autonomous agent that constantly monitors test failures, reproduces bugs, and runs program repair tools against each reproduced bug. If a patch is found, Repairnator bot reports it to the developers. At the time of writing, Repairnator uses three different program repair systems and has been operating since February 2017. In total, it has studied 11 317 test failures over 1 609 open-source software projects hosted on GitHub, and has generated patches for 17 different bugs. Over months, we hit a number of hard technical challenges and had to make various design and engineering decisions. This gives us a unique experience in this area. In this paper, we reflect upon Repairnator in order to share this knowledge with the automatic program repair community

    SapFix: Automated End-To-End Repair at Scale

    Get PDF
    We report our experience with SapFix: the first deployment of automated end-to-end fault fixing, from test case design through to deployed repairs in production code. We have used SapFix at Facebook to repair 6 production systems, each consisting of tens of millions of lines of code, and which are collectively used by hundreds of millions of people worldwide

    Intelligent software development tools

    Get PDF
    Artificial intelligence can be used to automate various tasks, also within software development. The purpose of this thesis was to research what kind of artificially intelligent software development tools and methods are available, and how they could suit a software development team at Wärtsilä. To illustrate this, a recommendation based on available literature was made on how the Wärtsilä team could possibly take intelligent software development tools into use. Based on the findings, a proof of concept regarding software test automation was developed. First, different types of artificial intelligence were presented, which after a research plan for how to conduct the literature review and the proof of concept was made. To find the most suitable topic for the proof of concept the literature review was first conducted. Focus was set on three areas – artificial intelligence assisted programming, bug handling tools and software testing. Software test automation seemed the most interesting from a Wärtsilä perspective, thus it was selected as the topic for the proof of concept. A prototype of a neural network that analyses C-functions and recommends a unit test based on the similarity to other functions was developed. Conclusions drawn are that artificial intelligence-based methods in software development has potential, but no tool was found that would directly suit Wärtsilä at this point. Either the tools need to be developed further to suit the field of embedded software development, or Wärtsilä could adapt their way of working for some tool to be taken into usage or develop their own solutions. The proof of concept illustrates how an own solution could be an alternative, if developed further in accordance to the improvement suggestions on how to make it more efficient.Tekoälyn avulla voidaan automatisoida monia tehtäviä myös ohjelmistokehityksessä. Tämän diplomityön tarkoitus oli tutkia minkälaisia tekoälypohjaisia työkaluja ja menetelmiä on olemassa ja miten Wärtsilän ohjelmistokehitystiimi voisi näitä hyödyntää. Suositus siitä, miten Wärtsilän tiimi voisi mahdollisesti ottaa tekoälypohjaisia työkaluja käyttöön tehtiin kirjallisuuskatsauksen perusteella. Sen perusteella kehitettiin prototyyppi mikä liittyy ohjelmistotestaukseen automatisointiin. Ensin esiteltiin erilaisia haaroja tekoälystä, jonka jälkeen luotiin tutkimussuunnitelma ja toteutettiin kirjallisuuskatsaus ja prototyypin kehittäminen. Kirjallisuuskatsauksessa keskityttiin kolmeen osa-alueseen – tekoälyllä avustettu koodaus, ohjelmointivirheiden hallinta ja ohjelmistotestaus. Näistä ohjelmistotestaus valittiin prototyypin aiheeksi, koska Wärtsilän tiimin tavoitteiden perusteella se koettiin parhaaksi. Prototyyppinä kehitettiin neuroverkko joka analysoi C-kielessä kirjoitetut funktiot ja suosittelee toisen, samankaltaisen funktion perusteella yksikkötestin testausta varten. Johtopäätöksenä todetaan että tekoälypohjaisilla työkaluilla on potentiaalia, mutta tällä hetkellä ei löydy työkaluja joita voisi suoraan ottaa Wärtsilän käyttöön. Joko työkalut pitäisi kehittää niin, että ne sopisivat myös sulautettujen järjestelmien tuotantoon, tai työtavat pitäisi sopeuttaa työkalujen mukaan, tai kehittää omia ratkaisuja. Työssä esitetään yksi ratkaisu, ja mainitaan parannusehdotuksia, joiden avulla saavutetaan vielä parempi tehokkuus.Artificiell intelligens kan användas för att automatisera olika uppgifter, också inom programmering. Målet med detta examensarbete var att undersöka hurudana intelligenta verktyg och metoder som finns, och hur dessa kunde användas av ett mjukvaruutvecklingsteam på Wärtsilä. Baserat på litteratur gjordes en rekommendation för hur teamet på Wärtsilä eventuellt kunde ta sådana verktyg i bruk. Efter litteraturgranskningen utvecklades en prototyp för automatisk generation av mjukvarutester. Först presenterades olika typer av artificiell intelligens, varefter en forskningsplan gjordes upp för hur litteraturgranskningen skulle genomföras och för hur prototypen skulle utvecklas. För att hitta det mest lämpade användningsområdet för prototypen, krävdes att litteraturgranskningen gjordes först. I den fokuserades det på tre skilda ämnen – programmering, bugghantering och mjukvarutestning assisterade av artificiell intelligens. Intelligent mjukvarutestning verkade mest intressant och lämpligt att utforska mera för Wärtsiläs team. Prototypen som utvecklades var ett neuralt nätverk som analyserar Cfunktioner och rekommenderar ett enhetstest baserat på likheterna till andra funktioner. Slutsatsen av arbetet var att användadet av metoder baserade på artificiell intelligens inom programmering förvisso har potential, men att i detta skede hittades inget verktyg som skulle passa Wärtsilä direkt. Antingen krävs att verktygen utvecklas för att passa industrin, att Wärtsilä anpassar sitt sätt att arbeta eller utvecklar egna intelligenta lösningar. Prototypen som utvecklades illustrerade hur en egenutvecklad lösning kunde vara en möjlighet, om den skulle utvecklas enligt förbättringsförslagen som beskrivs så att den skulle bli mera exakt och effektiv
    corecore