1.工具介绍
Infer 是一个静态程序分析工具,可以对 Java、C 和 Objective-C 程序进行分析,此工具是用 OCaml写成的。
Infer 最早部署在 Facebook 内部,用于发布移动应用之前对每一行代码进行分析,目前 Facebook 使用此工具分析所开发的 Android、iOS 应用,包括 Facebook Messenger、Instagram 和其他一些应用。 Infer 不仅仅用于移动应用程序的分析,还可以分析 C、Java 等不是 Android 系统的代码。 目前 Infer 着重于发现一些诸如空指针的访问、资源和内存的泄露等导致手机程序崩溃或性能严重下降的问题。
2.下载解压
2.1 https://github.com/facebook/infer/releases
2.2 tar xf infer-0.2.0.tar
3.环境搭建(具体可以查看解压包里面的INSTALL.md)
3.1 下载安装opam(https://opam.ocaml.org/doc/Install.html)
3.2 安装clang
xcode-select --install
3.3 安装OCaml
opam init --comp=4.01.0 # (answer ‘y‘ to the question)
eval `opam config env`
opam install sawja.1.5 atdgen.1.5.0 javalib.2.3a extlib.1.5.4
4.安装infer
cd infer
./update-fcp.sh && ../facebook-clang-plugin/clang/setup.sh && ./compile-fcp.sh
make -C infer
export PATH=`pwd`/infer/bin:$PATH
5.工程静态分析
分析APP:
infer -- xcodebuild -target <target name> -configuration <build configuration> -sdk <SDK>
示例检测HelloWorldApp工程:
infer -- xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesos8.3
需要使用 --incremental
(或 -i
) 使得增量编译有结果输出:
infer --incremental -- xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesos8.3
或者在编译前清理:
xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesos8.3 clean
ok,到这你就会看到你想看的结果.
参考文档:http://infer.liaohuqiu.net/docs/getting-started.html