BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Facebook开源了静态分析工具Infer

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 邱广 关注 0 他的粉丝 发布于 2015年6月23日. 估计阅读时间: 3 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

Facebook开源了适用于分析C、Java和Objective-C代码的静态分析工具Infer

Infer是Facebook的开发团队在代码提交内部评审时,用来执行增量分析的一款静态分析工具,在代码提交到代码库或者部署到用户的设备之前找出bug。由OCaml语言编写的Infer目前能检测出空指针访问、资源泄露以及内存泄露,可对C、Java或Objective-C代码进行检测。Facebook使用Infer自动验证iOS和安卓上的移动应用的代码,bug报告的正确率达80%。

Infer通过捕获编译命令,把要被编译的文件转换为可用于分析潜在错误的中间语言格式。整个过程是增量进行的,意味着通常只有那些有修改过并提交编译的文件才会被Infer分析。Infer还集成了大量的构建或编译工具,包括Gradle、Maven、Buck、Xcodebuild、clang、make和javac。

有一些类型的错误能用Infer检测出,关于它们的更多细节内容可见此页。Infer未来有望能加强对数组越界错误、转换异常和污染数据泄露的检测,Facebook目前已开始着手开发这些功能,但暂不可用。

在被问及能否增强Infer的功能,以使其可找出其他错误,并能应用于其他语言编写的代码时,Facebook的发言人答复InfoQ:“我们认为,关于Infer,这才只是一个开始,公司未来将持续致力于释放更多的价值给程序员”,并表示Facebook希望能与社区一起合作,来进一步完善Infer:

Infer做的不错,不过仍有许多跨工程组织的开放问题有待解决。一旦Facebook开源了Infer,就可以同许多工程组织、研究组织和学术组织进行合作,通过社区的努力,有可能最终Infer会增加一些新特性,能用来发现新类型的bug,甚至可以应用到新的语言上。

据Facebook透露,Infer根植于两大基本理论之上,其一是霍尔逻辑,一种用于推理计算机程序正确性的形式系统,另一个是抽象解释,该理论用于测度程序语义的逼近结果,此外还涉及其它一些研究成果,例如Separation LogicBi-abduction

Infer的源代码可在GitHub上获取。

查看英文原文:Facebook Open Sources Infer, a Static Analysis Tool


感谢邵思华对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT