據(jù) MIT Technology Review 報(bào)道,一位名為“Repairnator”機(jī)器人在 GitHub 上“臥底”數(shù)月,查找錯(cuò)誤并編寫(xiě)和提交修復(fù)補(bǔ)丁,結(jié)果有多個(gè)補(bǔ)丁成功通過(guò)被采納。

現(xiàn)代計(jì)算機(jī)程序非常復(fù)雜,在開(kāi)發(fā)過(guò)程中難免會(huì)出現(xiàn)錯(cuò)誤。查找和修復(fù)補(bǔ)丁是一件需要耗費(fèi)大量資源的事情,雖然研究人員已經(jīng)開(kāi)發(fā)除了許多流程自動(dòng)化的機(jī)器人,但是它們往往很慢,而且存在編寫(xiě)的代碼質(zhì)量較低的問(wèn)題。
Repairnator 是由 KTH 瑞典皇家理工學(xué)院的軟件技術(shù)教授 Martin Monperrus 及其朋友構(gòu)建的機(jī)器人,目前已被證實(shí)可以發(fā)現(xiàn)錯(cuò)誤并編寫(xiě)高質(zhì)量補(bǔ)丁。Martin Monperrus 表示:“這是自動(dòng)修復(fù)程序研究中的里程碑,它擁有和人類(lèi)開(kāi)發(fā)者競(jìng)爭(zhēng)的潛力。”
據(jù)悉,該團(tuán)隊(duì)將 Repairnator 偽裝成了一個(gè)名為 LucEsape 的 GitHub 用戶(hù),他們給 Luc 上傳頭像并填寫(xiě)個(gè)人資料,看起來(lái)就像是一位渴望在 GitHub 上做貢獻(xiàn)的初級(jí)開(kāi)發(fā)者。他們共進(jìn)行了兩輪測(cè)試,第一輪是在2017年2月到12月,Repairnator 在 14188 個(gè) GitHub 項(xiàng)目的修復(fù)列表上運(yùn)行并掃描錯(cuò)誤,期間 Repairnator 總共分析了超過(guò) 11500 個(gè)失敗的構(gòu)建,其中有 3000 多個(gè)能被重現(xiàn)。然后,Repairnator 生成了針對(duì)其中 15 個(gè)問(wèn)題的補(bǔ)丁,遺憾的是由于補(bǔ)丁質(zhì)量低、花費(fèi)時(shí)間過(guò)長(zhǎng)等問(wèn)題,這些補(bǔ)丁均未被接受。
第二輪測(cè)試是在2018年1月至6月,該團(tuán)隊(duì)沒(méi)有具體說(shuō)明他們對(duì) Repairnator 做了哪些改進(jìn),但 Repairnator 在1月12日成功編寫(xiě)出了第一個(gè)被人類(lèi)開(kāi)發(fā)者接受的補(bǔ)丁。在之后的6個(gè)月里,Repairnator 陸續(xù)又有 5 個(gè)補(bǔ)丁被采納。

有意思的是,Repairnator 在5月12日向名為 “eclipse/ditto” 的項(xiàng)目提交補(bǔ)丁后,收到了開(kāi)發(fā)者的反饋,“我們只接受來(lái)自簽署了 Eclipse Foundation Contributor 許可協(xié)議的用戶(hù)的 pull-requests ”。這又引出了一個(gè)新的問(wèn)題,機(jī)器人要怎么簽署許可協(xié)議?誰(shuí)擁有機(jī)器人貢獻(xiàn)的知識(shí)產(chǎn)權(quán),操作員亦或是算法設(shè)計(jì)師?在人類(lèi)和機(jī)器人想要更深入合作之前,這類(lèi)還問(wèn)題有待解決。
論文地址:Human-competitive Patches in Automatic Program Repair with Repairnator
對(duì)于這種機(jī)器人,你怎么看?