Mac 安装和使用 infer

介绍

infer 是 Facebook 开源的一款代码静态检查工具, 源码可以在 Github 上面获取.

支持 Java/C/OC 等语言, 支持 Gradle, Buck, Maven, Xcodebuild, Make 等.

我一般用来分析 iOS 和 Android 工程.

可以在 这里 查看 Start.

安装 infer

只要你用 Homebrew, mac 下安装 infer 很简单:

1
2
brew update
brew install infer

在早期版本, infer 不支持 brew 安装. 安装起来各种问题, 现在 infer 支持了 brew 安装, 很方便.

这里我使用的 infer 版本是 0.9.4.

安装成功后, 可以查看安装版本:

1
infer -version

可以看到如下信息:

1
2
3
4
5
Infer version v0.9.4
Copyright 2009 - present Facebook. All Rights Reserved.
Mac:public mark$ infer --version
Infer version v0.9.4
Copyright 2009 - present Facebook. All Rights Reserved.

这里有个问题, 有时候 brew 无法更新最新的 infer, 我目前的解决方案是先卸载之前安装的 infer, 然后再重新安装.

卸载 infer

1
brew uninstall infer

安装 xcpretty

xcpretty 是一款格式化 xcodebuild 输出结果的工具.

1
2
3
4
5
6
▸ Building X/N [(Release)]
▸ Check Dependencies
▸ Copying Info.plist
▸ Running script '[CP] Check Pods Manifest.lock'
▸ Running script 'Replace PaySdk'
▸ Compiling User.m

从0.9.4版本后, infer 默认使用了 xcpretty.

可以使用 gem 安装 xcpretty 工具:

1
gem install xcpretty

如果没有安装成功, 或者提示权限不够, 那就这样折腾:

1
sudo gem install xcpretty

想了解更多关于 xcpretty 的使用可以去 github.

使用 infer

iOS 项目使用 infer

infer 的文档写的也较全面.

可以在 这里 查看使用方法.

1.分析 Cocoapods 项目

1
infer -- xcodebuild -workspace N.xcworkspace -scheme NSchema

其中 N.xcworkspace 是你的 workspace 名称, NSchema 是你需要检查的 Schema 名称.

2.分析 .xcodeproj

1
infer -- xcodebuild -target targetName -configuration Debug -sdk iphonesimulator

其中 targetName 是项目的 target 名称, 必须指定.

分析成功后, infer 会有输出报告.

该报告在你的项目目录下, 名称是 infer-out.

bug.txt 是以文本方式输出的 issue 文档.
另外还有 csv 格式的 issue 文档.

Android Gradle 工程使用 infer

1
2
gradle clean
infer -- gradle build

其他用法

infer 还有很多高级的用法, 比如可以增量检查.

增量检查的功能依赖于你的编译器是否支持.

infer 增量检查的选项是 –reactive.

之前的版本是 –incremental 选项.
自从 v0.8.0 版本后使用了 –reactive 选项.

可以这样来进行增量检查:

1
infer --reactive -- xcodebuild -workspace N.xcworkspace -scheme NSchema

infer 还有很多高级用法, 可以在 Advanced usage 中去查阅和使用.

再使用过程中, 随着 MacOS, Xcode 的升级, infer 会面临更多的挑战, 如果遇到问题, 第一时间去 GitHub 上面提 issue.

坚持原创技术分享!