专栏首页AI科技大本营的专栏“安利”一款debug神器:在AI面前,bug都不是事儿

“安利”一款debug神器:在AI面前,bug都不是事儿

作者 | 琥珀

出品 | AI科技大本营(公众号ID:rgznai100)

为了帮程序员解决 bug 问题,Facebook 可算是操碎了心!

你可以这么想,如果在开发和测试阶段没有发现 bug 问题,那么 bug 将会随着产品发布,在生产环节触发,其后果将视情况而定。

不久前,一支来自 Facebook 的工程团队斩获了 ACM SIGPLAN POPL 最具影响力论文奖,这是机器学习研究社区最受关注的奖项之一。其获奖论文为“Compositional Shape Analysis by Means of Bi-abduction”,介绍了一款利用机器学习调试 bug 的工具“Project Infer”背后的科学原理。

为了“安利”这款工具,一位名叫 Jesus Rodriguez 的程序员特意撰文详解了 Infer 的工作流程和科学原理。

文中指出,Infer 基于两种新的数学技术:分离逻辑(separation logic)和双向假说推理(bi-abduction)。

传送链接:https://towardsdatascience.com/machine-learning-for-detecting-code-bugs-a79f37f144b7

据悉,Infer 是 Facebook 旗下一款开源的静态分析工具,其前身来自被 Facebook 收购后的 Monoidics。官网介绍,Infer 可以分析 Objective-C,Java 或 C 语言代码,报告潜在的问题。

截止目前,Infer 已在 GitHub 上获得 9300+ Star,并被 AWS、Spotify、Uber 等公司采用。

GitHub 链接:https://github.com/facebook/infer

实际上,此前 AI科技大本营(ID:rgznai100)就曾报道过类似的 bug 检查工具,如 Google 刚刚开源的自动化检测工具 ClusterFuzz,印度小哥 Gaurav Arora 开发的代码测试工具 code-with-ai,以及一键代码修复神器 The fuck

值得一提的是,从发现 bug 到修复 bug,Facebook 有一套完整的流程。Facebook 去年新推的工具 SapFix,以及已投入大规模使用的 Sapienz,都是与 Infer 相辅相成的:

首先,静态分析工具 Infer,会帮助定位代码中需要修补的点;一旦 Sapienz 和 Infer 精确定位与崩溃相关的特定代码部分之后,就会将该信息传递给 SapFix;最后,SapFix 会参考几种不同的策略,自动生成补丁。

Infer 主要应用基于 Android 和 iOS 的移动应用程序发布之前,检测其代码中的 bug。

温馨提示:程序员们可能习惯了熬夜敲代码,但有人就总结过:不提倡加班写代码,那样会导致 bug 率直线上升。

(本文为AI科技大本营原创文章,转载请微信联系 1092722531)

本文分享自微信公众号 - AI科技大本营(rgznai100)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实战:基于OpenPose的卡通人物可视化 | CSDN博文精选

    去年打算用些现成的Pose做些展示,因为以前有在OpenPose做些识别等开发工作,所以这次我就简单在OpenPose上把骨架用动画填充上去,关于能够和人动作联...

    AI科技大本营
  • CVPR 2019超全论文合集新鲜出炉!| 资源帖

    此前关于 CVPR 2019 论文和合集出过不少,但是这个可能是最全面最丰富的,链接奉上:

    AI科技大本营
  • 为何Google将几十亿行源代码放在一个仓库?| CSDN博文精选

    【AI科技大本营导读】与大多数开发者的想象不同,Google只有一个代码仓库——全公司使用不同语言编写的超过10亿文件,近百TB源代码都存放在自行开发的版本管理...

    AI科技大本营
  • 制作滑动条菜单,如何延时处理滑动效果,避免动画卡顿

        前几日在利用JQuery做菜单滑动标记这个效果的时候,最后发现滑动条在我用鼠标快速滑动的时候,会出现滑动条延迟滑动,并且有卡顿的现象,相当影响体验感受。...

    八哥
  • IT人如何打造个性化的个人网站(在线简历)

    众所周知,IT行业人员在求职时,如果拥有自己的技术博客和个人网站多少是可以加些分的,因为这也是IT人的技术证明之一。内容丰富的技术博客就不必多少了,往往技术博客...

    朝雨忆轻尘
  • error: '[class name]' does not name a type

    从命令中可以看出,我是对源文件tc_mysql.cpp进行编译。但是却始终报如下错误:

    Dabelv
  • 基于CNN的店铺LOGO识别

    人工智能之父John McCarthy将AI视为科学和工程的结合,而机器学习是AI已经实现的部分,利用机器学习技术,计算机能够通过体验(数据)来像人类一样学习,...

    用户1408045
  • Java代理IP

    最近在搞爬虫,因为爬取量大,经常导致封IP的现象,(网上投票也经常遇到限制Ip的破事),就自己准备写个,找了很多的文献(也就是很多google),所说的要不就是...

    haoming1100
  • Sentinel整合Apollo进行规则持久化(二)

    apollo-configservice:提供配置获取接口,提供配置更新推送接口,接口服务对象为Apollo客户端

    java乐园
  • codeforces 438D

    在某位不知名的大大推荐下做了这题,和我上一篇的线段树很像,于是怒拍,思想基本相同,记录区间最大值,当最大值小于取模时可以剪枝。 今后再遇到此类问题算是能解决了 ...

    triplebee

扫码关注云+社区

领取腾讯云代金券