På grund av svårigheten att reparera defekter har många forskningsinsatser ägnats åt automatisk reparation av defekter. Eftersom en buggy program som misslyckas några test fall, en typisk automatisk reparation teknik försöker ändra programmet för att göra alla tester passera. Men eftersom testsviterna i verkliga projekt vanligtvis är otillräckliga, leder syftet att klara testsviterna ofta till felaktiga fläckar. Detta problem kallas svaga testsviter eller för mycket utrustning. I detta papper syftar vi till att producera exakta patcher, dvs. varje patch vi producerar har en relativt hög sannolikhet att vara korrekt. Mer konkret fokuserar vi på tillståndssyntes, som visade sig kunna reparera mer än hälften av defekterna i befintliga metoder. Vår nyckelinsikt är trefaldig. För det första är det viktigt att veta vilka variabler i ett lokalt sammanhang som ska användas i ett "om"-tillstånd, och vi föreslår en sorteringsmetod baserad på beroendeförhållandena mellan variabler. För det andra observerar vi att API-dokumentet kan användas för att vägleda reparationsprocessen, och föreslår dokumentanalysteknik för att ytterligare filtrera variablerna. För det tredje är det viktigt att veta vad som bör göras på basis av variablerna, och vi föreslår att jaga en uppsättning ofta använda predikat i liknande sammanhang från befintliga projekt. Baserat på insikten utvecklar vi ett nytt programreparationssystem, ACS, som kan generera exakta förhållanden på felaktiga platser. Dessutom, med tanke på de genererade förhållandena är mycket exakta, kan vi utföra en reparation operation som tidigare anses vara alltför översittande: direkt returnera testet oracle för att reparera defekten. Med vårt tillvägagångssätt lyckades vi reparera 18 defekter på fyra projekt av Defects4J, vilket är det största antalet helt automatiskt reparerade defekter som rapporterats på datasetet hittills. Ännu viktigare är att precisionen i vårt tillvägagångssätt i utvärderingen är 78,3 procent, vilket är betydligt högre än tidigare tillvägagångssätt, som vanligtvis är mindre än 40 procent.
ACS REF är en ny teknik som avsevärt förbättrar precisionen i tillståndssyntesen baserat på en kombination av data- och kontrollberoende analys, och gruv API dokumentation och Boolean predikerar i befintliga projekt.
Precise Condition Synthesis for Program Repair
{'venue': '2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)', 'journal': '2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)', 'mag_field_of_study': ['Computer Science']}