Mac 安装和使用 infer
介绍
infer 是 Facebook 开源的一款代码静态检查工具, 源码可以在 Github 上面获取.
支持 Java/C/OC 等语言, 支持 Gradle, Buck, Maven, Xcodebuild, Make 等.
我一般用来分析 iOS 和 Android 工程.
可以在 这里 查看 Start.
安装 infer
只要你用 Homebrew, mac 下安装 infer 很简单:
1 | brew update |
在早期版本, infer 不支持 brew 安装. 安装起来各种问题, 现在 infer 支持了 brew 安装, 很方便.
这里我使用的 infer 版本是 0.9.4.
安装成功后, 可以查看安装版本:
1 | infer -version |
可以看到如下信息:
1 | Infer version v0.9.4 |
这里有个问题, 有时候 brew 无法更新最新的 infer, 我目前的解决方案是先卸载之前安装的 infer, 然后再重新安装.
卸载 infer
1 | brew uninstall infer |
安装 xcpretty
xcpretty 是一款格式化 xcodebuild 输出结果的工具.
1 | ▸ Building X/N [(Release)] |
从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 | gradle clean |
其他用法
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.