美文网首页ios
Mac OS 下安装Infer

Mac OS 下安装Infer

作者: 峰ai梦 | 来源:发表于2016-08-01 17:05 被阅读0次

简介

Infer是Facebook最新开源的静态程序分析工具,用于在发布移动应用之前对代码进行分析,找出潜在的问题。目前Facebook使用此工具分析Facebook的App,包括Android、iOS、Facebook Messenger和Instagram等。

Facebook称该工具帮助其每个月检查出应用潜在的数百个Bug,例如一些空指针访问、资源和内存泄漏等。Infer支持Android的Java和iOS的C和Objective-C代码。

官方地址

https://github.com/facebook/infer

安装步骤

(官方手册:https://github.com/facebook/infer/blob/master/INSTALL.md#pre-compiled-versions

以下是我摸索过后,成功安装及步骤,期间在安装opam时被折磨了很久...

  1. 下载源码(注意不要有中文路径名
    源码下载地址:https://github.com/facebook/infer/releases/tag/v0.9.0
    如下图,选择osx最新的安装包并下载

    安装包下载
  2. 安装opam

brew install opam
  1. config
    3.1 将第一步下载的tar.xz文件解压
    3.2 进入解压后的文件夹
    3.3 依次执行以下命令
opam update #这个时间比较长
opam pin add --yes --no-action infer .
opam install --deps-only infer

执行过程中如果提示merlin没有安装,需要依次执行以下命令

opam pin add -y merlin 'https://github.com/the-lambda-church/merlin.git#reason-0.0.1'
opam pin add -y merlin_extend 'https://github.com/let-def/merlin-extend.git#reason-0.0.1'
opam pin add -y reason 'https://github.com/facebook/reason.git#0.0.6'
./autogen.sh
./configure
make # or make java

将这个目录拷贝到一个不常被修改的地方,执行以下命令,添加到环境变量

echo "export PATH="$PATH:pwd/infer/infer/bin"" >> ~/.bash_profile && source ~/.bash_profile

命令执行过程中,如果遇到错误:fatal error: 'stdio.h' file not found,这是因为xcode-comand-line 没有安装好,执行脚本安装

xcode-select --install

安装成功提示:


Infer使用

分析iOS代码

参考地址:http://infer.liaohuqiu.net/docs/analyzing-apps-or-projects.html

分析xcode代码(源码路径不能有中文)

首先用cd命令进入ios_hello目录,然后运行以下命令进行编译

infer — xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesimulator

注意: 其中HelloWorldApp是你的项目名称

编译结果

1: 在项目所在目录下多出build和infer-out文件夹


编译后
build文件夹:捕获阶段: Infer 捕获编译命令(上面介绍的编译器命令),将文件翻译成 Infer 内部的中间语言。运行环境和设备信息也有所体现。

infer-out文件夹:分析阶段产生的文件,Infer将分析bugs结果输出到不同格式文件中,如csv、txt、json 方便对分析结果进行加工分析。

2: 运行后在终端会看到大量日志信息(同infer-out文件,可以以多种形式查看log信息)

代码分析

增量模式和非增量模式

在第一次运行的时候,两种模式是一样的,都会对工程的所有文件进行编译检查,产生检查结果:
增量模式:当已经产生分析结果后(build和infer-out文件夹),再执行编译命令,即为增量模式。如有代码没有改动,则此次不会有编译结果产生,如果代码有新的改动,此次只产生新的编译结果。这种以增量为基准的原则叫做增量模式。
非增量模式:在删除了俩个文件夹的情况下,运行文件,会输出所有的编译信息,即此时处于非增量模式。

增量模式和非增量模式的转化
1:简单粗暴的做法是删除文件夹,即增量->非增量
2:科学的做法是这样的:xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesimulator clean,以保证增量->非增量状态

相关文章

网友评论

    本文标题:Mac OS 下安装Infer

    本文链接:https://www.haomeiwen.com/subject/llaxsttx.html