Java靜態程式碼分析工具Infer

來源:互聯網
上載者:User

標籤:facebook   靜態分析   代碼審查   infer   

Java靜態程式碼分析工具Infer

chszs,轉載需註明。部落客頁:http://blog.csdn.net/chszs

一、Infer介紹

Infer是Facebook最新開源的靜態程式分析工具,用於在發布行動裝置 App之前對代碼進行分析,找出潛在的問題。目前Facebook使用此工具分析Facebook的App,包括Android、iOS、Facebook Messenger和Instagram等。

Facebook稱該工具協助其每個月檢查出應用潛在的數百個Bug,例如一些null 指標訪問、資源和記憶體流失等。Infer支援Android的Java和iOS的C和Objective-C代碼。

Infer在GitHub的首頁: https://github.com/facebook/infer

二、Infer使用1、頂層命令
  1. infer
    運行Infer的主要命令。它其實是一個python指令碼。
  2. inferTest
    運行Infer的測試的Shell指令碼。它使用Buck來運行測試。
    用法:inferTest {c, objc, java}
  3. 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

說明:如果要分析C和Objective-C,Infer還需要clang以及facebook-clang-plugin外掛程式。
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”
2. 如果需不要支援C和Objective-C代碼的靜態分析,繼續下面的指令:
# cd infer# make -C  infer java# export PATH=`pwd`/infer/bin:$PATH

注意:不支援Java 8

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
4. 然後繼續
# 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

然後會建立infer-linux64-v0.1.0目錄,Infer主要的可執行程式位於infer-linux64-v0.1.0/infer/infer/bin目錄。

3、把Infer添加到PATH環境變數中
# cd infer-linux64-v0.1.0 &&# echo "export PATH=\"\$PATH:`pwd`/infer/infer/bin\"" \ >> ~/.bash_profile &&# source ~/.bash_profile

Java靜態程式碼分析工具Infer

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.