利用Infer工具检测Android项目

Infer工具能做什么:

     Facebook 的 Infer 是一个静态分析工具。Infer 可以分析 Objective-C, Java 或者 C 代码,报告潜在的问题。任何人都可以使用 Infer 检测应用,这可以将那些严重的 bug 扼杀在发布之前,同时防止应用崩溃和性能低下。

   Infer 可检查 Android 和 Java 代码中的 NullPointException 和 资源泄露。除了以上,Infer 还可发现 iOS 和 C 代码中的内存泄露。

使用步骤:

  • 使用brew 命令安装:brew install infer。执行完后用命令infer --version检查是否安装成功,如果类似如下结果表示infer安装成功。
zhuzhaoyangdeMacBook-Air:android zhuzhaoyang$ infer --version
Infer version v0.15.0
Copyright 2009 - present Facebook. All Rights Reserved.
  • 进入到项目的根目录文件夹内执行命令:infer -- gradle build    ,开始编译分析。如果报以下错误,表示没有配置gradle环境变量
/usr/local/bin/infer: unknown option '--gradle'.
Infer version v0.15.0
Copyright 2009 - present Facebook. All Rights Reserved.
Usage: infer command [options]
See `infer --help` for more information.

    解决方法:在电脑根目录下用命令 open .bash_profile 打开文件,并在.bash_profile文件中配置gradle的环境变量,如下

export GRADLE_HOME=/Applications/Android\ Studio.app/Contents/gradle/gradle-4.10.1  
 
export PATH=$PATH:$GRADLE_HOME/bin

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home

保存以后,执行命令souce .bash_profile 使改动立即生效。再次进入Android项目的目录里执行infer -- gradle build。

出现一下情况表示正在检查:

如果在检测过程当中遇到以下错误:

18:21:04.062 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED in 2m 21s
ERROR: couldn't run compilation command `[u'gradle', '--debug', u'build']`
Internal Error:   /usr/local/Cellar/infer/0.15.0/lib/infer/infer/bin/../lib/python/infer.py
  -j 4 --project-root /Users/zhuzhaoyang/sc/hkApp/android --out
  /Users/zhuzhaoyang/sc/hkApp/android/infer-out -- gradle build:
  exited with code 1
Error backtrace:
Raised at file "base/Die.ml" (inlined), line 25, characters 6-36
Called from file "base/Logging.ml", line 314, characters 58-80
Called from file "integration/Driver.ml", line 159, characters 2-16
Called from file "integration/Driver.ml", line 280, characters 6-420
Called from file "infer.ml", line 20, characters 2-36
Called from file "infer.ml", line 130, characters 8-54

Run the command again with `--keep-going` to try and ignore this error.

在app(或module)下的build.gradle的android下添加以下:

lintOptions {
        abortOnError false
    }

然后重新执行命令 :infer -- gradle build。当出现以下情况表明正在编译完成正在分析文件:

执行完以后会在项目根目录的里生成infer-out文件夹,该文件夹里会生成名为bugs.txt的文件,查看该文件,分析项目里可能存在的代码风险。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值