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

电子说

1.2w人已加入

描述

为了帮程序员解决 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 率直线上升。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分