infer静态代码扫描不能执行问题定位

什么是infer

facebook推出的静态代码检测工具,可以检测android和IOS应用的内存泄露和空指针问题。

官方文档

本文解决问题

使用源码安装的整个过程没有报错,在执行的时候会出现这个错误:
Failed to run InferAnalyze binary, exiting

解决过程

Google解决方案大部分反馈结果如下:

About the “Failed to run InferAnalyze binary, exiting” error, you have to compile the binaries of Infer first, please follow the instructions here.

上面的结果让我们先编译infer二进制源码,很奇怪,我们其实进行源码安装的时候已经编译过了,而且没有报错
按照上面的方式重新执行错误结果一致。

回头想想,为什么大部分结果会让我们回去编译?
重新翻看Facebook给出的infer编译和安装方法,我们发现大部分该执行的命令都已经执行过了,但是有个比较陌生的插件opam,它是单独安装的
会不会是它有什么依赖呢?
顺着这个思路很自然在infer编译和安装方法中找到了下面这段话:
Install Infer from source without opam
If for some reason you prefer to install Infer’s OCaml dependencies by some means other than opam, you can still compile Infer by running:

./autogen.sh
./configure
make # or make java
# Install Infer into your PATH
export PATH=`pwd`/infer/bin:$PATH

执行上述脚本,注意执行./configure程序报错了,但是结果有很明显的提示让你执行:

opam pin add --yes --no-action .
opam install --deps-only infer

顺着提示继续执行,发现执行opam install –deps-only infer命令的时候又出错了,但是它依然很人性化的提示你执行下列脚本:

opam depext camlp4.4.01+system

执行上述脚本后,将之前执行失败的脚本重新执行,不再出现报错了。
最后make编译会执行很长时间,等编译完成后就可以顺利执行infer静态检测内存泄露和空指针异常了。

注:在我的unbuntu机器上直接make会报错,因为我只关注Android项目,所以执行的是make java,这样一切正常,现在正在跑项目中。暂时未研究是什么原因导致的,有兴趣的可以一起去研究讨论。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值