7

微软逆天啦,开发出自动揪 Bug 神器

 2 years ago
source link: https://zhuanlan.zhihu.com/p/444833572
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

微软逆天啦,开发出自动揪 Bug 神器

公众号「非著名程序员」主理人,程序员/复业者/生涯规划师

文章首发于微信公众号「非著名程序员」,欢迎大家关注。

大家好,我是校长。

先从一个老故事说起吧。

01

Repairnator:自动修复 bug

2018 年 1 月 12 日下午 12:28,GeoWebCache/geowebcache 项目和往常一样在 github 上提交代码。2 分钟后 travis-ci 上的单元测试以失败告终,测试结果显示有 2 个测试用例报错了。没过多久,2018 年 1 月 12 日下午 1 点 35 分,一名叫 LucEsape 的开发者发布了一个修复补丁。

2018 年 1 月 12 日下午 2:10,开发者接受了补丁,并将其合并到代码库,并评论到:“很奇怪,我以为我已经修好了...... 也许我在其他地方做过。谢谢你补丁!“

这是一个伟大的时刻,因为谁也不曾想到,修复这个 bug 的程序员 LucEsape 是一个机器人。他叫 Repairnator。

Repairnator 是由 KTH 瑞典皇家理工学院的软件技术教授 Martin Monperrus 开发。它会监控开源软件在持续集成期间发现的 bug,并尝试自动修复它们。如果它成功合成了一个有效的补丁,那么 Repairnator 会伪装成人类身份向人类开发者提交此补丁。到目前为止,Repairnator 已经成功生成了 5 个补丁,并被人类开发者永久地合并到代码库中。

这是自动程序修复软件工程研究中新的里程碑。

是不是很有意思呢?

Repairnator 可以自动发现 bug ,并修复 bug。

这是不是我们程序员梦寐以求的工具呢?

但是,换个角度想,可能这也可能并不是好事,是不是,有一种危险和危机存在呢?我们程序员因为这种人工智能工具的存在,可能价值大大降低。

但是,别害怕,我发现这个 Repairnator 并没有那么神奇,它修复的 bug 当中都是非常简单,非常简单的 bug,大多数都是 NPE(空指针异常)的问题。

而且,这不,也没啥下文了。

02

BugLabs

不过,前几天,我看到一条新闻是:微软专家推出 AI 工具 能自动发现代码中的 Bug。

据 mspoweruser 报道,微软的首席研究员 Miltos Allamanis 和高级首席研究经理 Marc Brockschmidt 开发了他们的人工智能 BugLabs,利用深度学习算法可以发现代码中的错误,帮助开发者更准确、更高效地对程序进行调试。

这种工具能够识别一些常见的错误,比如不正确的符号 “<=” 和 “<”,不正确的布尔运算符 “and” 和 “or”,变量滥用等等。为了测试该系统,微软使用了 Python 代码。

微软让两个网络相互竞争,一个旨在将小错误引入现有代码,另一个旨在寻找这些错误。这两个网络变逐渐升级,从而产生了一个善于识别隐藏在真实代码中 Bug 的人工智能。

微软表示,这一系统经过数据训练,可以用来检测并修复代码中的错误。与其它方法相比,经过训练后的模型发现 Bug 的概率最多可以提高 30%。利用该工具,发现了存在 GitHub 开源项目中的 19 个真实存在的代码错误。

这种 AI 工具目前依旧存在误报现象,因此还需要进一步改进。

他们的结论是,他们的方法是有希望的,当然,要使这种检测器在实际使用中可靠,还需要做很多工作。然而,这项工作很有可能最终被商业化。

其实,我感觉利用人工智能技术,开发一个帮助程序员发现 bug 的工具并提供建议,比去修复一个 bug 更靠谱的多。

毕竟,万一查找 bug 的程序里有 bug 怎么办呢?

这样的工具,并不会让程序员失去价值,反而还可以提高开发效率。

大家说呢?

好东西,看这里:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK