低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Facebook 开源了静态分析工具 Infer

2015 年 6 月 22 日

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 Logic Bi-abduction

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

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


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

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

2015 年 6 月 22 日 04:386302
用户头像

发布了 30 篇内容, 共 67418 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

第二周-总结-胡赵凯

hisun胡

产品经理 产品经理训练营

精选算法面试-哈希表III

李孟

面试 算法

2020出行之变(三):智能交通的星罗棋布

脑极体

2021最新出炉BAT架构实战文档:多线程与高并发+分布式+微服务

Java成神之路

Java 程序员 架构 面试 编程语言

区块链电子合同平台,区块链电子合同技术方案

135深圳3055源中瑞8032

范文写作结构分析之“危险的分工”

JiangX

28天写作

开发质量提升系列:checklist 投产检查列表(下)

罗小龙

代码质量 28天写作 checklist

三面百度被吊打,凭借这份阿里大牛整理的资料,终拿下字节offer

Java成神之路

Java 程序员 架构 面试 编程语言

给新春一台S,给用户三个S:华为智慧屏的新旅程

脑极体

Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)

五分钟学大数据

大数据 flink

Logi-KafkaManager开源之路:一站式Kafka集群指标监控与运维管控平台

张亮

Java 大数据 kafka 开源 消息队列

同VLAN不同网段能否ping通

最新Java精选题大厂之路没有拦路虎:Jvm+并发+Dubbo+微服务+缓存

Java成神之路

Java 程序员 架构 面试 编程语言

产品思维和意识

让我思考一会儿

农产品区块链溯源平台,区块链追溯系统

135深圳3055源中瑞8032

spring中那些让你爱不释手的代码技巧(续集)

Java架构师迁哥

产品 0 期 - 第二周作业

vipyinzhiwei

产品经理训练营

第九周作业&总结

胡益

勤学苦练两个月,读完这篇180页pdf文档的Java进阶资料,终于拿下阿里offer

Java成神之路

Java 程序员 架构 面试 编程语言

阿里巴巴十亿级并发系统设计手册已开源(2021最新版)

比伯

Java 编程 架构 面试 计算机

boltdb源码阅读

行如风

go 数据库 源码剖析

合肥智慧平安小区建设,平安社区整体解决方案

135深圳3055源中瑞8032

懂点EXCEL就行!教你利用Python做数据筛选(上)

智分析

Python Excel 数据清洗

第二周-作业-胡赵凯

hisun胡

产品经理 产品经理训练营

惊呆了!某东Java大咖的MySQL笔记手册流传出来了,胜过看10本书

Java架构之路

Java 程序员 架构 面试 编程语言

在nodejs中创建child process

程序那些事

多线程 事件驱动 nodejs 并发 程序那些事

产品质量战略

俊毅

定阶阿里P7,搞透这份高级程序员Java面试1000题解析就够了

Java成神之路

Java 程序员 架构 面试 编程语言

图解计算机中的数据表示形式

冰河

程序员 计算机 二进制数据

产品经理训练营 - 第二次作业

Jophie

产品经理训练营

甲方日常 89

句子

工作 随笔杂谈 日常

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Facebook开源了静态分析工具Infer-InfoQ