当前位置: 首页 » 行业资讯 » 机器人»程序员的福音,AI可以自动修复bug了!
   

程序员的福音,AI可以自动修复bug了!

 46.1K
     [点击复制]
放大字体  缩小字体 发布日期:2017-08-26   浏览次数:438
核心提示:  人工智能完整学会本身编程,能够说起来还有一种科幻感,但AI帮法式员找bug这件事,曾经到达了不错的程度。  北京年夜学、微软亚洲研讨院和中国电子科技年夜学就一路测验考试着让AI找bug。微软亚洲研讨院的Lily

程序员的福音,AI可以自动修复bug了!

  人工智能完整学会本身编程,能够说起来还有一种科幻感,但AI帮法式员找bug这件事,曾经到达了不错的程度。

  北京年夜学、微软亚洲研讨院和中国电子科技年夜学就一路测验考试着让AI找bug。微软亚洲研讨院的Lily Sun在微软官方博客上引见称,他们开辟的准确状况体系(Accurate Condition System, ACS),能在人类不加干涉的情形下主动修复软件体系中的Bug。

  他们关于ACS的论文Precise Condition Synthesis for Program Repair揭橥活着界软件工程年夜会ICSE 2017上。

  ACS会主动修复甚么样的bug呢?Lily Sun举了个例子:

  int lcm=Math.abs(mulAndCheck(a/gdc(a,b), b));

  return lcm;

  这是Apache Math中的一段代码,用来盘算两个数的最小公倍数,而且引入了Math.abs来确保前往的值是负数。然则,这个法式出缺陷,有时刻照样会前往负值。

  我们可以创立一个测试来找到个中的毛病。测试的输出是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,就一路开辟了Genprog。

  而ACS,在后人研讨的基本上年夜幅晋升了精确率。在Defects4J基准上的测试成果显示,ACS生成的23个补钉中,有18个是准确的,精确率近80%。

  ACS精确率的晋升重要得益于有更多的信息起源,特殊是网上的年夜量代码。与以往的办法比拟,ACS有以下三种新的信息起源:

  一是用部分性准绳信息对补钉中的变量停止排序;

  二是用天然说话剖析技巧来剖析Javadoc,然后用Javadoc中的信息来过滤不准确的补钉;

  三是经由过程对网上的开源法式停止统计剖析,发明对变量停止操作的前提几率,进而生成准确的补钉。

只要你关注机器人,你就无法错过睿慕课

 
 
 
[ 行业资讯搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]
 
 
展会更多+
视频更多+
点击排行
 
网站首页 | 网站地图 | 排名推广 | 广告服务 | 积分换礼 | 网站留言 | RSS订阅