使用 Infer 进行代码扫描

概要

Infer 是Facebook的一个开源代码扫描工具. 目前在移动端, Infer 是比较好用的一个检查空对象引用的静态扫描工具.

安装

如果使用 Mac 的话, 可以忽略 github 上的说明. 直接使用 brew安装

brew install infer 

使用

  • Android工程
infer -- gradle build
  • iOS 工程
    前提是确保命令行可以编译通过
xcodebuild -target  \
-configuration  \
-scheme 

TargetName, Build Configuration, SchemaName都可以通过

xcodebuild -list 

查找到
另外,

xcodebuild -showsdks

可以查到支持的sdk

如果命令行可以编译通过, 只需要前面加上 infer -- 就可以了

infer -- xcodebuild -target  -configuration  -scheme 

查看报告

结果会打印在终端的输出, 也可以通过 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的详情

你可能感兴趣的:(使用 Infer 进行代码扫描)