開源已是大勢所趨。不僅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感興趣的同學不妨移步此處(github)看個究竟,前提是你得備把梯子。
本文參考了多個信息來源:wired.com、fbinfer.com