国产精品久久久久久久小说,国产国产裸模裸模私拍视频,国产精品免费看久久久无码,风流少妇又紧又爽又丰满,国产精品,午夜福利

熱搜: 佳士科技  irobot  工業(yè)機器人  機器人  ABB  機器人產業(yè)聯(lián)盟  發(fā)那科  庫卡  碼垛機器人  機械手 

程序員的福音,AI可以自動修復bug了!

   日期:2017-08-07     來源:量子位    作者:dc136     評論:0    
標簽: 人工智能 AI 編程
程序員的福音,AI可以自動修復bug了!
   人工智能完全學會自己編程,可能說起來還有一種科幻感,但AI幫程序員找bug這件事,已經達到了不錯的水平。
 
  北京大學、微軟亞洲研究院和中國電子科技大學就一起嘗試著讓AI找bug。微軟亞洲研究院的Lily Sun在微軟官方博客上介紹稱,他們開發(fā)的精確狀態(tài)系統(tǒng)(Accurate Condition System, ACS),能在人類不加干預的情況下自動修復軟件系統(tǒng)中的Bug。
 
  他們關于ACS的論文Precise Condition Synthesis for Program Repair發(fā)表在世界軟件工程大會ICSE 2017上。
 
  ACS會自動修復什么樣的bug呢?Lily Sun舉了個例子:
 
  int lcm=Math.abs(mulAndCheck(a/gdc(a,b), b));
 
  return lcm;
 
  這是Apache Math中的一段代碼,用來計算兩個數(shù)的最小公倍數(shù),并且引入了Math.abs來確保返回的值是正數(shù)。但是,這個程序有缺陷,有時候還是會返回負值。
 
  我們可以創(chuàng)建一個測試來找到其中的錯誤。測試的輸入是a=Integer.MIN_VALUE、b=1,預期的輸出是throw ArithmeticException。
 
  把這個程序和相應的測試輸入到ACS中,ACS會自動生成第2、3行的路徑,修復程序缺陷:
 
  int lcm=Math.abs(mulAndCheck(a/gdc(a,b), b));
 
  + if (lcm == Integer.MIN_VALUE) {
 
  +  throw new ArithmeticException();
 
  + }
 
  return lcm;
 
  讓算法自己改bug這件事,從2009年開始就有研究,弗吉尼亞大學計算機系的Westley Weimer、新墨西哥大學的Stephanie Forrest和卡耐基梅隆大學的Claire Le Goues,就一起開發(fā)了Genprog。
 
  而ACS,在前人研究的基礎上大幅提升了準確率。在Defects4J基準上的測試結果顯示,ACS生成的23個補丁中,有18個是正確的,準確率近80%。
 
  ACS準確率的提升主要得益于有更多的信息來源,特別是網(wǎng)上的大量代碼。與以往的方法相比,ACS有以下三種新的信息來源:
 
  一是用局部性原則信息對補丁中的變量進行排序;
 
  二是用自然語言分析技術來分析Javadoc,然后用Javadoc中的信息來過濾不正確的補??;
 
  三是通過對網(wǎng)上的開源程序進行統(tǒng)計分析,發(fā)現(xiàn)對變量進行操作的條件概率,進而生成正確的補丁。
 
 
更多>相關資訊
0相關評論

推薦圖文
推薦資訊
點擊排行