开源已是大势所趋。不仅Google公开了自己最重要的秘密之一,社交巨头Facebook对开放也一直都是保持开放的态度。比方说它有推进数据中心基础设施建设标准化的Open Compute项目,在软件开源方面更是活跃份子,去它网站看看就知道,大大小小的开源项目已经有30多个,涵盖了Android、iOS、Web、后端、硬件等方方面面。这一次,它又给这一个清单增加了新的成员—移动应用的人工智能查错工具Infer,无论是iOS还是Android开发者均可它用来调试自己的app了。
不要搞错,这种查错工具并不是简单纠正一下语法,而是一种代码静态分析工具。它可以在不运行代码(一般开发者的调试方式都是编译、运行,查看结果,然后人工分析代码)的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,来验证代码是否存在问题或满足技术指标。
静态分析工具可以像人一样对代码进行思考,分析代码存在的问题,所不同的是它的效率要高得多,数分钟之内即可扫描成千上万行代码。虽然市面上也有商业和开源的静态分析工具,但是Infer的联合开发者Peter O’Hearn称,能像Infer这样对如此规模的代码进行深度分析的工具是没有的。Infer可以将大型代码分而治之,切割成小段代码,然后再将分析结果整合起来。这属于符号化人工智能(有别于更接近人思维模式的神经网络AI)的一种,据称其代码修复率可达80%。
Infer源自O’Hearn和他的学生Cristiano Calcagno及助教Dino Distefano的研究成果。三人创办了一家初创企业Monoidics,原本打算做成商业化产品。但是后来Facebook收购了这家公司并作出了Infer。他们意识到在这里可以产生更大的影响,最终让Facebook把这种工具开源了。这意味着其他开发者也可以分析工具本身,然后针对自己的需求改进,做出更好的分析工具;对于Facebook来说,开源的意义也正在于此,让大家帮助Infer变得更好;对于O’Hearn等人来说,这件事的意义更大,因为静态分析领域还有很多悬而未决的问题亟待解决。利用群体的力量解决大问题并实现共赢,这才是开源最大的意义。
对研究Infer感兴趣的同学不妨移步此处看个究竟,前提是你得备把梯子。