1.工具介绍

Infer 是一个静态程序分析工具,可以对 Java、C 和 Objective-C 程序进行分析,此工具是用 OCaml写成的。https://github.com/facebook/infer
   Infer 最早部署在 Facebook 内部,用于发布移动应用之前对每一行代码进行分析,目前 Facebook 使用此工具分析所开发的 Android、iOS 应用,包括 Facebook Messenger、Instagram 和其他一些应用。 Infer 不仅仅用于移动应用程序的分析,还可以分析 C、Java 等不是 Android 系统的代码。 目前 Infer 着重于发现一些诸如空指针的访问、资源和内存的泄露等导致手机程序崩溃或性能严重下降的问题。

2.环境要求

- Python 2.7

- opam (instructions [here](https://opam.ocaml.org/doc/Install.html#OSX))

- Java <= 1.7 (only needed for the Java analysis,Mac 纯净的安装了 OS X Yosemite 的话,其中是不会包含 Java 的,所以需要自己安装java)

- Xcode <= 6.3, >= 6.1 (only needed for the C/Objective-C analysis)

- clang in Xcode command line tools. You can install them with the command `xcode-select --install` (only needed for the C/Objective-C analysis)

  

1) 下载安装opam(https://opam.ocaml.org/doc/Install.html)

  • 在安装opam前先安装brew,brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令
  • 安装命令如下:
  • curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1
  • 接着安装opam:
  • sudo brew install opam # Homebrew, OSX Mavericks or later

2) 安装clang

  •   xcode-select --install

3) 配置opam

  •   opam init -y --comp=4.01.0
  •   eval `opam config env`
  •   opam install -y extlib.1.5.4 atdgen.1.6.0 javalib.2.3.1 sawja.1.5.1

 4)安装java

  • 打开终端输入:java -version
  • 如果当前系统还没有装过 Java 的话,会收到 “No Java runtime present, requesting install.” 的提示信息。然后还会弹出“您需要安装 JDK 才能使用’java‘ 命令行工具”的信息。
  • 点击“更多信息”就回进入 JDK 官方下载网站,之后就能在官网中下载到 Java 8 JRE 或者 Java 8 JKD。

3.安装infer

  • git clone https://github.com/facebook/infer.git
  • cd infer
  • git submodule update --init --recursive
  • facebook-clang-plugins/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 iphoneos8.3

需要使用 --incremental (或 -i) 使得增量编译有结果输出:

  infer --incremental -- xcodebuild -target HelloWorldApp -configuration Debug -sdk iphoneos8.3

或者在编译前清理:

  xcodebuild -target HelloWorldApp -configuration Debug -sdk iphoneos8.3 clean

ok,到这你就会看到你想看的结果.

参考文档:http://infer.liaohuqiu.net/docs/getting-started.html

最新文章

  1. iOS-证书相关
  2. wamp2.5虚拟站点建立
  3. Spring基础——在Spring Config 文件中配置 Bean
  4. Eddy&#39;s digital Roots
  5. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(5)
  6. hdu5853 (后缀自动机)
  7. dedeCMS安装,前端样式不显示
  8. 学习C++ Primer 的个人理解(七)
  9. ACM学习
  10. PHPCMS V9.3.2用户注册模板中的一个低级Bug
  11. cocos2dx-3.0(13)------SpriteBatchNode与SpriteFrameCache渲染速度
  12. Linq常见操作示例
  13. [RDLC]一步一步教你使用RDLC(一)
  14. Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation
  15. &lt;h1&gt;02_Linux学习_命令&lt;/h1&gt;
  16. 利用curl 实现URL监控
  17. CF126B
  18. cf689d ST表RMQ+二分
  19. was控制台误禁用后的恢复启用办法
  20. 记录.NET Core在CentOS上基于Jenkins自动化发布

热门文章

  1. 学以致用三----centos7.2基本环境补充
  2. Silverlight4.0正式版(Silverlight4_Tools)离线安装
  3. 巧用NULL模式解耦依赖
  4. HDFS块文件和存放目录的关系
  5. 基于udp协议的套接字,socketserver模块,多道技术,进程理论
  6. Android拖动和缩放
  7. 基于VRML的虚拟校园漫游系统
  8. day26(分页查询)
  9. java 图片压缩 缩放
  10. 前端开发 - JavaScript 词法分析