五月婷婷欧美视频_少女频道在线观看高清_欧美日韩视频一区二区三区_7777精品伊久久久大香线蕉语言

首頁 > 機器人資訊 > 機器人偽裝成人類在GitHub上為開源項目修復bug

機器人偽裝成人類在GitHub上為開源項目修復bug

日期:2020-01-13   人氣:  來源:互聯網
簡介:2019年1月12日下午12:28,GeoWebCache/geowebcache項目和往常一樣在github 上提交代碼。2分鐘后 travis-ci 上的單元測試以失敗告終,測試結果顯示有2個測試用例報錯了。沒過多久,2019年1月12日下午1點35分,一名叫 LucEsape 的開發者發布了一個修復補……

  2019年1月12日下午12:28,GeoWebCache/geowebcache項目和往常一樣在github 上提交代碼。2分鐘后 travis-ci 上的單元測試以失敗告終,測試結果顯示有2個測試用例報錯了。沒過多久,2019年1月12日下午1點35分,一名叫 LucEsape 的開發者發布了一個修復補丁。2019年1月12日下午2:10,開發者接受了補丁,并將其合并到代碼庫,并評論到:“很奇怪,我以為我已經修好了......也許我在其他地方做過。謝謝你補丁!“

 

  這是一個偉大的時刻,因為誰也不曾先到,修復這個 bug 的程序員 LucEsape 是一個機器人。他叫 Repairnator。

 

  Repairnator 是由 KTH 瑞典皇家理工學院的軟件技術教授 Martin Monperrus 開發。它會監控開源軟件在持續集成期間發現的 bug,并嘗試自動修復它們。如果它成功合成了一個有效的補丁,那么 Repairnator 會偽裝成人類身份向人類開發者提交此補丁。到目前為止,Repairnator 已經成功生成了 5 個補丁,并被人類開發者永久地合并到代碼庫中。

 

  這是自動程序修復軟件工程研究中新的里程碑。

 

  Repairnator 使用補丁的形式修復代碼中的 bug。例如,在以下補丁中,開發者修改了 if 語句的條件:

 

  - if (x <10)+ if (x <= 10)foo();

 

  程序修復機器人是一種試圖合成源代碼補丁的人工代理。他能夠幫助人類分析和修復軟件中的 bug。Repairnator 機器人的工作原理:
 

機器人偽裝成人類在GitHub上為開源項目修復bug


 

  為此,研發團隊提出了一個概念:human-competitive(人類競爭力)。

 

  程序修復機器人必須在人類修復 bug 之前找到高質量的修補程序。在這種情況下,KUKA機器人維修,如果補丁滿足時效性和質量這兩個條件,則可以認為補丁具有人類競爭力。及時性是指系統必須早于人類找到補丁。此外,與人類編寫的補丁相比,機器人生成的補丁必須足夠正確。

 

  還有一個方面需要考慮。因為人類工程師并不會輕易接受機器人的貢獻,即使它們是正確的。原因是人類往往對機器有偏見,如果貢獻來自人類同伴,則更容忍錯誤。這意味著如果開發者知道修補程序來自機器人,那么開發者可能會更高地調整修補程序的質量。為了解決這個問題,團隊為 Repairnator偽造了一個人類身份。團隊創建了一個名為 Luc Esape 的 GitHub 用戶。Luc 有個頭像,看起來像一個初級開發者,渴望在GitHub上做開源貢獻。現在,出于道德的考慮,Luc 的真實身份已經在他的每個 Pull Request 中被披露。
 

機器人偽裝成人類在GitHub上為開源項目修復bug


 

  據團隊的 PPT 顯示,這個名字來源于 Esculape,阿斯克勒庇俄斯,機器人維修,希臘神話中的醫神。而 Luc 的頭像也是阿斯克勒庇俄斯。他是太陽神阿波羅的兒子,他的雕塑和畫像都是手持大蛇的形象。據說,有一天,阿斯克勒庇俄斯到山上游玩,一條蛇從草叢里竄過來想咬他,他急忙用一塊石頭將蛇打死了。一會兒,他發現另一條蛇游過來,將一株草放進死蛇的嘴里,死蛇竟然就活過來了,隨即自如地消失在草叢里。阿斯克勒庇俄斯就這樣偶然地找到了那種能起死回生的草。以后,有許多已經去世的人都被阿斯克勒庇俄斯妙手回春地拉回了人世。阿斯克勒庇俄斯死后,被宙斯升上天空變成了蛇夫座。

 

  Repairnator 機器人從2017年1月開始運營,分為三個不同階段。

 

  在2017年1月的一個月內,使用原型的初始版本進行了試驗性實驗。從 2017 年 2 月 1 日到 2017 年 12 月 31 日,Repairnator 開始正式運行,其中包含 14,188 個項目。

 

  從2019年1月1日到2019年6月30日,Repairnator 實時監控 Travis CI 構建流。Repairnator 已經分析了 11,523 次失敗的測試。對于 3,551 個(30.82%),Repairnator 能夠在本地重現這些失敗的測試。在 3,551 次修復嘗試中,Repairnator 發現了 15 個可以使 CI 構建通過的補丁。然而,補丁分析顯示,庫卡機器人驅動器維修,這些補丁中沒有一個被采納,因為它們要么太晚(Repairnator 在人類開發者之后產生補丁)或者質量低(它們能夠是項目構建成功也許是巧合)。

 

  隨后對 Repairnator 進行了改進,終于使它可以成功工作了。Repairnator 已經生成了 5 個符合上面定義的人類競爭力標準的補丁:1)補丁是在人類之前生成的,2)人類開發者接受補丁作為有效貢獻,補丁在主代碼庫中合并。

 

  時至今日,Repairnator 已經修復了5個bug:

 

  Jan 12, 2018,?aaime/geowebcache/pull/1, “Thanks for the patch!”

 

  Mar 23, 2018,?parkito/BasicDataStructuresAndAlgorithms/pull/3?“merged commit 140a3e3 into parkito:develop”

 

  April 5, 2018,?dkarv/jdcallgraph/pull/2?“Thanks!”

 

  May 3, 2018,?eclipse/ditto/pull/151?“Cool, thanks for going through the Eclipse process and for the fix.”

 

  June 25, 2018,?donnelldebnam/CodeU-Spring-2018-29/pull/59?“Thanks!!”

 

  對此,你有什么看法?

免責聲明:本網部分文章和信息來源于互聯網,本網轉載出于傳遞更多信息和學習之目的。如轉載稿涉及版權等問題,請立即聯系網站所有人,我們會予以更改或刪除相關文章,保證您的權利。
主站蜘蛛池模板: 高清| 甘肃省| 竹山县| 呼伦贝尔市| 沾化县| 垫江县| 逊克县| 湖南省| 广安市| 通河县| 罗江县| 昭觉县| 平罗县| 英吉沙县| 阳西县| 泌阳县| 维西| 土默特左旗| 绥中县| 揭阳市| 巴东县| 瑞安市| 肇东市| 北票市| 尉犁县| 鄱阳县| 秦皇岛市| 宾阳县| 东方市| 东兰县| 三台县| 平江县| 德州市| 富裕县| 秦安县| 寿宁县| 济南市| 枝江市| 平和县| 西丰县| 长丰县|