hbupig 2015-07-24
一、Infer介绍
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,命令:
1. 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依赖
2. 如果需不要支持C和Objective-C代码的静态分析,继续下面的指令:
注意:不支持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版。
接着执行以下的指令:
4. 然后继续
四、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、安装
解压二进制发行包
然后会建立infer-linux64-v0.1.0目录,Infer主要的可执行程序位于infer-linux64-v0.1.0/infer/infer/bin目录。
3、把Infer添加到PATH环境变量中