0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機器人開始在GitHub上修Bug了!

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:YXQ ? 2019-06-05 14:39 ? 次閱讀

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

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

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

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

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

- if (x <10)

+ if (x <= 10)

foo();

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

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

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

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

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

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

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

從 2018 年 1 月 1 日到 2018 年 6 月 30 日,Repairnator 實時監(jiān)控 Travis CI 構(gòu)建流。Repairnator 已經(jīng)分析了 11,523 次失敗的測試。對于 3,551 個(30.82%),Repairnator 能夠在本地重現(xiàn)這些失敗的測試。在 3,551 次修復(fù)嘗試中,Repairnator 發(fā)現(xiàn)了 15 個可以使 CI 構(gòu)建通過的補丁。然而,補丁分析顯示,這些補丁中沒有一個被采納,因為它們要么太晚(Repairnator 在人類開發(fā)者之后產(chǎn)生補丁)或者質(zhì)量低(它們能夠是項目構(gòu)建成功也許是巧合)。

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

時至今日,Repairnator 已經(jīng)修復(fù)了 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!!”

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器人
    +關(guān)注

    關(guān)注

    210

    文章

    27842

    瀏覽量

    204626
  • GitHub
    +關(guān)注

    關(guān)注

    3

    文章

    461

    瀏覽量

    16237

原文標(biāo)題:漫話:程序員要失業(yè)了??!機器人開始在GitHub上修Bug了。

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    開源項目!用ESP32做一個可愛的無用機器人

    巧妙設(shè)計的杠桿將開關(guān)推回“關(guān)”位置。這種玩具很常見,許多人已經(jīng)制作并上傳到Y(jié)ouTube。 作者每年都會挑戰(zhàn)自己制作一個技術(shù)產(chǎn)品,今年他決定制作這個復(fù)雜的項目——可愛無用機器人。這個機器人參考
    發(fā)表于 09-03 09:34

    開源項目!用ESP32做一個可愛的無用機器人

    巧妙設(shè)計的杠桿將開關(guān)推回“關(guān)”位置。這種玩具很常見,許多人已經(jīng)制作并上傳到Y(jié)ouTube。 作者每年都會挑戰(zhàn)自己制作一個技術(shù)產(chǎn)品,今年他決定制作這個復(fù)雜的項目——可愛無用機器人。這個機器人參考
    發(fā)表于 08-30 14:50

    思嵐科技S2L激光雷達ROSLander機器人的作用

    前段時間,中國機器人及人工智能大賽公布“復(fù)合機器人月球探索”賽項的官方推薦設(shè)備——奇邁品牌的機器人ROSLander。
    的頭像 發(fā)表于 08-13 10:01 ?471次閱讀
    思嵐科技S2L激光雷達<b class='flag-5'>在</b>ROSLander<b class='flag-5'>機器人</b><b class='flag-5'>上</b>的作用

    Al大模型機器人

    )大模型AI機器人采用中英文雙語應(yīng)用,目前的知識圖譜包括金航標(biāo)和薩科微所有的產(chǎn)品內(nèi)容、應(yīng)用場景、產(chǎn)品的家屬參數(shù)等,熱賣的型號S8050、TL431、SS8550、FR107、LM321、ZMM5V6
    發(fā)表于 07-05 08:52

    基于FPGA EtherCAT的六自由度機器人視覺伺服控制設(shè)計

    , PS層運行 蘇姆的裸機程序, 并將六自由度串聯(lián)機器人逆解算法移植到主站代碼里,進行機器人末端位置對于視覺反饋的實時跟隨控制。 (4)通過實驗驗證本設(shè)計的對物塊識別的準(zhǔn)確性和實
    發(fā)表于 05-29 16:17

    DIY推薦!自制一個基于ESP32的沙畫機器人

    到底板的地方。整個機器人是使用Fusion 360從零開始設(shè)計的,并且我通過Fusion Team在線共享它們。 我從草圖開始設(shè)計外殼的大致形狀,然后沿著大懸挑部分分割它,確保可打印
    發(fā)表于 04-15 15:09

    大語言模型機器人的應(yīng)用及面臨的挑戰(zhàn)

    電子發(fā)燒友網(wǎng)報道(文/李彎彎)現(xiàn)在的機器人已經(jīng)具備相當(dāng)高的智能化水平,這主要得益于人工智能技術(shù)的快速發(fā)展。這些機器人不僅可以執(zhí)行重復(fù)性的任務(wù),還可以處理復(fù)雜的操作,甚至具備學(xué)習(xí)和適應(yīng)環(huán)境變化的能力
    的頭像 發(fā)表于 01-09 00:05 ?1502次閱讀

    【開源項目】Emo:基于樹莓派 4B DIY 能笑會動的桌面機器人

    ,下面請跟著我的步伐開始組裝吧! 注:3D 圖紙及代碼文末下載。 組裝底座 首先,我們將 Micro USB 模塊安裝在底座,這將作為機器人的供電接口。 我們將 SW-420 震動傳感器放在靠近
    發(fā)表于 12-26 15:18

    LabVIEW的六軸工業(yè)機器人運動控制系統(tǒng)

    。 系統(tǒng)研究與算法開發(fā):首先,項目圍繞機器人的數(shù)學(xué)模型,特別是空間位姿描述和D-H模型展開研究。在此基礎(chǔ),開發(fā)了機器人的運動學(xué)正反解算法,使用了雅克比-迭代法等先進技術(shù)。此外,還涉及
    發(fā)表于 12-21 20:03

    用全志R128復(fù)刻自平衡賽車機器人,還實現(xiàn)三種不同的操控方式

    手柄的菜單欄UI可以選擇不同的機器人基礎(chǔ)參數(shù)設(shè)置和進行機器人操控。 自平衡機器人啟動后,可以通過面包板
    發(fā)表于 12-20 10:22

    單片機和FreeRTOS機器人ROS

    機器人的應(yīng)用越來越廣泛,大家熟知的稚暉君直接創(chuàng)業(yè)搞機器人,可想而至,接下來的十年,機器人絕對是熱門的行業(yè)。
    的頭像 發(fā)表于 11-28 09:31 ?997次閱讀
    單片機和FreeRTOS<b class='flag-5'>上</b>跑<b class='flag-5'>機器人</b>ROS

    機器人編程需要什么軟件?

    機器人編程需要什么軟件
    發(fā)表于 11-01 07:34

    大模型開始賦能機器人 機器人的新角逐已經(jīng)開始

    機器人由運動模塊、傳感模塊和人工智能模塊三個關(guān)鍵技術(shù)模塊組成。對于一般的傳統(tǒng)機器人來說,只需要其中一種技術(shù)往往就能具備使用價值。比如,工業(yè)機器人主要側(cè)重于運動控制技術(shù),掃地機器人則側(cè)重
    發(fā)表于 10-10 11:41 ?274次閱讀

    航順HK32MCU長虹衛(wèi)博士智能掃吸機器人的應(yīng)用

    航順HK32MCU長虹衛(wèi)博士智能掃吸機器人的應(yīng)用
    的頭像 發(fā)表于 09-27 15:27 ?653次閱讀
    航順HK32MCU<b class='flag-5'>在</b>長虹衛(wèi)博士智能掃吸<b class='flag-5'>機器人</b><b class='flag-5'>上</b>的應(yīng)用

    Arduino教學(xué)機器人的使用教程

    本文檔的主要內(nèi)容詳細介紹的是Arduino教學(xué)機器人的使用教程
    發(fā)表于 09-27 06:53