infer
Facebook的静态分析工具Infer已开源,旨在将其部署范围扩展到Android和iOS之外。 在最近的博客文章中 ,来自Infer团队的Cristiano Calcagno,Dino Distefano和Peter O'Hearn向世界介绍了这个新开放的工具,Facebook使用该工具在将移动代码发送到手机之前识别错误。
作为静态分析器,Infer是一种自动化工具,可以通过扫描程序而不运行它们来发现源代码中的错误。 O'Hearn在他自己的Facebook页面上确认,他们已经在内部成功使用了它,现在将继续公开进行开发。 工程经理Jim Purbrick 列出了 Infer的修复率为80%。
该工具主要关注C,Java和Objective-C,并发出空指针访问以及资源和内存泄漏的信号。 Infer网站上的Hello world 示例展示了该工具以纯代码运行。 据说Infer完成的错误跟踪可通过分离逻辑和诱拐来识别数百个潜在缺陷:
分离逻辑是一种理论,它使Facebook Infer的分析可以推理出应用程序存储中小的独立部分,而不必在每个步骤中都可能考虑整个内存。
诱拐是一种逻辑推理技术,它允许Facebook Infer发现有关应用程序代码独立部分的行为的属性。
开源的决定源于程序验证所需的大量工作,O'Hearn指出,他们的工程团队与研究社区之间的思想交流的增加将对未来的发展有利。
通过选择开放开发,Infer团队可以自由地承认他们的项目“完成了1%”。 Infer的局限性意味着,目前只报告了有限的错误类型集合,该项目的初始范围集中在Facebook移动开发人员最紧迫的需求上。 下面是Infer当前不跟踪的错误的示例:
- 数组边界错误
- 强制例外
- 泄漏污染数据
- 并发竞争条件
对于数组错误,强制转换异常和泄漏,Infer已经在解决方案上工作。 在语言功能方面还存在一些约束,例如并发,反射和动态调度都无法识别或处理不当。
翻译自: https://jaxenter.com/facebooks-infer-goes-open-source-117976.html
infer