Command Palette
Search for a command to run...
AI 不上位,与程序员合作写代码才是正道

By 超神经
著名的游戏研发公司育碧(Ubisoft)和开源技术大厂 Mozila 近期发布了联手开发的 Clever-Commit 编程辅助工具,为工程师提供 Bug 预警和更正的功能。
我们曾发布过文章《协助你写 Python,只是 AI 取代程序员的第一步》,介绍了写代码的过程中有越来越多的 AI 工具可以帮助工程师,提高自己的代码质量和工作效率。

当然这些只是玩笑,就目前看来 AI 想要完全替代掉手艺人的可能性并不大,在未来更多的还是 AI 的介入帮助工程师更高效优质的工作。

Clever-Commit :前方高能 Bug 预警!
Clever-Commit 的前身是 Ubisoft 于去年推出的 Commit- Assistant 。
Commit- Assistant 是用于查找 Bug 和建议修复的系统,它是一款辅助开发人员改善游戏体验的代码助手。而这个 AI 助手的诞生,得益于他们拥有庞大的代码库。据称,在训练时,它接受了 Ubisoft 约十年的工作代码,包括有许多被修改过 Bug 的代码。
在这样的背景下,Mozlia 和 Ubisoft 合作,推出了升级版的 Clever-Commit 。
Clever-Commit 是一款辅助编程工具,可以简单的说是对代码进行检查的 AI 助手。开发人员将代码更改提交到 Firefox 代码库时,它能把新加入的代码和之前的进行比较,看是否和已经找出的 bug 类似。如果助手判断新提交的部分很可疑,则会提醒开发人员。
如果这个助手的判断准确率很高,这意味着可以在将 Bug 提交到源存储库之前查出并提醒。对于部分 Bug ,Clever-Commit 甚至可以提出合适的修复建议。
Mozilla 计划首先在代码审查期间使用 Clever-Commit,然后随着时间的推移,将其扩展到其他开发阶段。值得一提的是,它完全适用于 Mozilla 用于 Firefox 的三种语言: C ++ , JavaScript 和 Rust 。
它发现 Bug 的原理是什么?
其实它的出现是必然的,故障的自动预防和解决是软件发展的一个必由之路。现有方法利用代码和流程度量来构建基于度量的模型,可以有效地防止软件项目中的缺陷插入。
而这里面用到的技术叫做 CLEVER ,最早是由 Ubisoft 和 Concordia 大学的研究人员开发出来的,他们曾写过一篇论文《CLEVER: Combining Code Metrics with Clone Detection for Just-In-Time Fault Prevention and Resolution in Large Industrial Projects》,阐释了它的细节,总的来说是一种结合级别的 Bug 预防和解决技术。
文章地址:https://montreal.ubisoft.com/wp\-content/uploads/2018/05/ICSE\-CE\-MSR\-165\.pdf
它的要点在于将代码加入时,准确的判断出是否是有风险的部分,从而进行拦截或者修复。
实施的方法主要有两个阶段,第一是基于已有指标建立一个库,这能够判断新加入的代码是不是和有风险的代码相似;第二阶段是在代码的克隆区加入这些看起来危险的代码,然后再判断是否为风险代码。

此外, CLEVER 不仅仅只对当前项目评估,它的判定也考虑了其他的关联项目,所以达到了更高的智能性。基于代码库匹配和之前的数据积累, CLEVER 在 Bug 识别率和改进意见方面都处在领先的水平。
Ubisoft 和 Firefox 的跨界合作
说到 CLEVER 为什么厉害,那是因为它的背后,拥有强大的资源。 Ubisoft 是视频游戏界的巨头,专门从事高预算视频游戏的设计和实施。
Ubisoft 软件系统高度耦合,包含数百万个文件和提交,由分布在六大洲 29 个地点的 8,000 多名开发人员开发和维护。这对 CLEVER 的开发和训练都是得天独厚的优势。
为了对比 CLEVER 的性能,他们在 12 个 Ubisoft 系统进行了测试,结果表明 CLEVER 对于有风险的代码提交,达到了 79% 的精度和 65% 的召回率,这超出同类方法 Commit-guru(66% 精度和 63% 召回)的性能。此外,CLEVER 能够向开发人员推荐如何修复 66.7% 的风险提交。
应用了 CLEVER 技术的 Clever-Commit,一旦完全融入 Mozilla 的开发流程,预计会取得很好的效果,这也会大大减少开发人员的苦楚。在提交之前,捕获四到五个漏洞,比它们提交进去之后才发觉,要节省更多的资源。
Firefox 的工程团队已经表明,将在其代码编写,测试和发布过程中开始使用 Clever-Commit 。他们期望能够通过这个方法,节省数百小时的漏洞风险分析和检测。
还有其他的?
使用机器学习从大型代码库中进行 Bug 排查也有其他的尝试。
去年,微软就在 Visual Studio 中推出了类似的工具:IntelliCode 。
据悉,IntelliCode 研究了最受欢迎的公共 GitHub 存储库(超过 2,000 个项目,每个项目超过 100 颗),以发现最佳编码实践的特征。
IntelliCode 的初始目的挺保守的,它根据其他项目如何使用相同的 API,通过了解哪些建议更有可能被使用,提供更智能的 IntelliSense 完成建议。它还用于检测编码样式和空格使用情况,以便它能够以类似代码写作风格的方式写代码。
像 Clever-Commit 一样,IntelliCode 可用于查找 Bug 。对开发人员的一时纰漏进行及时的补救。












