介绍
infer 是 Facebook 开源的一款代码静态检查工具, 源码可以在 Github 上面获取.
支持 Java/C/OC 等语言, 支持 Gradle, Buck, Maven, Xcodebuild, Make 等.
我一般用来分析 iOS 和 Android 工程.
可以在 这里 查看 Start.
安装 infer
只要你用 Homebrew, mac 下安装 infer 很简单:
|
|
在早期版本, infer 不支持 brew 安装. 安装起来各种问题, 现在 infer 支持了 brew 安装, 很方便.
这里我使用的 infer 版本是 0.9.4.
安装成功后, 可以查看安装版本:
|
|
可以看到如下信息:
|
|
这里有个问题, 有时候 brew 无法更新最新的 infer, 我目前的解决方案是先卸载之前安装的 infer, 然后再重新安装.
卸载 infer
|
|
安装 xcpretty
xcpretty 是一款格式化 xcodebuild 输出结果的工具.
|
|
从0.9.4版本后, infer 默认使用了 xcpretty.
可以使用 gem 安装 xcpretty 工具:
|
|
如果没有安装成功, 或者提示权限不够, 那就这样折腾:
|
|
想了解更多关于 xcpretty 的使用可以去 github.
使用 infer
iOS 项目使用 infer
infer 的文档写的也较全面.
可以在 这里 查看使用方法.
1.分析 Cocoapods 项目
|
|
其中 N.xcworkspace 是你的 workspace 名称, NSchema 是你需要检查的 Schema 名称.
2.分析 .xcodeproj
|
|
其中 targetName 是项目的 target 名称, 必须指定.
分析成功后, infer 会有输出报告.
该报告在你的项目目录下, 名称是 infer-out.
bug.txt 是以文本方式输出的 issue 文档.
另外还有 csv 格式的 issue 文档.
Android Gradle 工程使用 infer
|
|
其他用法
infer 还有很多高级的用法, 比如可以增量检查.
增量检查的功能依赖于你的编译器是否支持.
infer 增量检查的选项是 –reactive.
之前的版本是 –incremental 选项.
自从 v0.8.0 版本后使用了 –reactive 选项.
可以这样来进行增量检查:
|
|
infer 还有很多高级用法, 可以在 Advanced usage 中去查阅和使用.
再使用过程中, 随着 MacOS, Xcode 的升级, infer 会面临更多的挑战, 如果遇到问题, 第一时间去 GitHub 上面提 issue.