使用 Infer 进行代码扫描
2016-05-20 本文已影响1235人
每天多一点
概要
Infer 是Facebook的一个开源代码扫描工具. 目前在移动端, Infer 是比较好用的一个检查空对象引用的静态扫描工具.
安装
如果使用 Mac 的话, 可以忽略 github 上的说明. 直接使用 brew安装
brew install infer
使用
- Android工程
infer -- gradle build
- iOS 工程
前提是确保命令行可以编译通过
xcodebuild -target <Target Name> \
-configuration <Build Configuration> \
-scheme <Schema Name>
TargetName, Build Configuration, SchemaName都可以通过
xcodebuild -list
查找到
另外,
xcodebuild -showsdks
可以查到支持的sdk
如果命令行可以编译通过, 只需要前面加上 infer -- 就可以了
infer -- xcodebuild -target <Target Name> -configuration <Build Configuration> -scheme <Schema Name>
查看报告
结果会打印在终端的输出, 也可以通过 infer-out 路径下的文件来查看
常见的问题
- 工程的绝对路径中, 请不要含有中文字符, 否则会有类似报错
...
File "/usr/local/Cellar/infer/0.8.1/libexec/infer/lib/python/inferlib/analyze.py", line 222, in run_command
raise e
- Infer needs a working compilation command to run
infer运行后会发现类似如下的输出, 最后发现不了问题
*** ERROR: Failed to execute compilation command. Output:
clang: error: cannot specify -o when generating multiple output files
*** Infer needs a working compilation command to run.
在github上可以发现很多人遇到了同样的问题, 主要原因是因为
issue的详情