Infer是Facebook最新開源的靜態程序分析工具,用於在發佈移動應用之前對代碼進行分析,找出潛在的問題。目前Facebook使用此工具分析Facebook的App,包括Android、iOS、Facebook Messenger和Instagram等。
Facebook稱該工具幫助其每個月檢查出應用潛在的數百個Bug,例如一些空指針訪問、資源和內存泄漏等。Infer支持Android的Java和iOS的C和Objective-C代碼。
Infer在GitHub的主頁: https://github.com/facebook/infer
二、Infer使用
1、頂層命令
infer
運行Infer的主要命令。它其實是一個python腳本。
inferTest
運行Infer的測試的Shell腳本。它使用Buck來運行測試。
用法:inferTest {c, objc, java}
inferTraceBugs
是一個Python腳本,用於在Infer測試報告中流量錯誤、跟蹤錯誤。
2、輔助命令
InferJava:包含Java前端的二進制程序
InferClang:包含Clang前端的二進制程序
InferAnalyze:包含Infer後端(執行分析)的二進制程序
InferPrint:輸出分析結果(例如發現的bug列表等)的二進制程序
inferJ:運行Java文件分析的命令
BuckAnalyze:運行用Buck編譯的Java項目的分析命令
inferlib.py:Python庫的其它腳本
utils.py:Python庫的其它腳本
jwlib.py:Python庫的其它腳本
三、Infer的安裝
官方提供了預編譯好的Infer工具,但只支持Linux和MacOS兩個平臺。如果願意使用Infer,直接下載使用即可。
否則,需要下載源碼,自己編譯。
1、下載Infer
可以從Git倉庫下載Infer,命令:
點擊(此處)摺疊或打開
- git clone https://github.com/facebook/infer.git
facebook-clang-plugin插件見: https://github.com/facebook/facebook-clang-plugins
如果只想分析Java/Android代碼,那麼無需以上的依賴庫。
2、Infer在Linux的安裝
先決條件:需要Python 2.7以上版本
安裝指令:
(以下安裝過程在Debian 7、Ubuntu 14.04以及Ubuntu 12.04.4 LTS等系統中驗證通過)
1. 安裝OCaml依賴
點擊(此處)摺疊或打開
- # sudo apt-get update
- # sudo apt-get upgrade
- # sudo apt-get install git openjdk-7-jdk m4 zlib1g-dev python-software-properties build-essential libgmp-dev libmpfr-dev libmpc-dev unzip
- # wget https://github.com/ocaml/opam/releases/download/1.2.2/opam-1.2.2-x86_64-Linux -O opam
- # chmod +x opam
- # ./opam init --comp=4.01.0 # 然後在最後一個問題處按下“y”
- # eval `./opam config env`
- # ./opam install sawja.1.5 atdgen.1.5.0 javalib.2.3 extlib.1.5.4 # 然後在問題處按下“y”
點擊(此處)摺疊或打開
- # cd infer
- # make -C infer java
- # export PATH=`pwd`/infer/bin:$PATH
3. 如果需要既支持Java代碼,又支持C和Objective-C代碼,那麼不要執行上面的第2步,改爲執行這裏的第3步。
假定以及安裝了4.7.2以上版本的GCC(如果OS是Ubuntu 12.04.4 LTS,那麼你已經安裝了gcc 4.8版和g++ 4.8版。
接着執行以下的指令:
點擊(此處)摺疊或打開
- # sudo apt-get install python-software-properties
- # sudo add-apt-repository ppa:ubuntu-toolchain-r/test
- # sudo apt-get update
- # sudo apt-get install gcc-4.8 g++-4.8
- # sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
點擊(此處)摺疊或打開
- # cd infer
- # ./update-fcp.sh
- # ../facebook-clang-plugin/clang/setup.sh # go have a coffee :)
- # ./compile-fcp.sh
- # make -C infer
- # export PATH=`pwd`/infer/bin:$PATH
四、Infer的另一種安裝
1、下載
還可以直接下載二進制發行包
Mac OS X版本的: https://github.com/facebook/infer/releases/download/v0.1.0/infer-osx-v0.1.0.tar.xz
Linux發行包: https://github.com/facebook/infer/releases/download/v0.1.0/infer-linux64-v0.1.0.tar.xz
2、安裝
解壓二進制發行包
點擊(此處)摺疊或打開
- # tar xf infer-linux64-v0.1.0.tar.xz
3、把Infer添加到PATH環境變量中關注成都網站建設公司
點擊(此處)摺疊或打開
- # cd infer-linux64-v0.1.0 &&
- # echo "export PATH=\"\$PATH:`pwd`/infer/infer/bin\"" \ >> ~/.bash_profile &&
- # source ~/.bash_profile