Java静态代码分析工具Infer

Java静态代码分析工具Infer

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

一、Infer介绍

Infer是Facebook最新开源的静态程序分析工具,用于在发布移动应用之前对代码进行分析,找出潜在的问题。目前Facebook使用此工具分析Facebook的App,包括Android、iOS、Facebook Messenger和Instagram等。

Facebook称该工具帮助其每个月检查出应用潜在的数百个Bug,例如一些空指针访问、资源和内存泄漏等。Infer支持Android的Java和iOS的C和Objective-C代码。

Infer在GitHub的主页: https://github.com/facebook/infer

二、Infer使用

1、顶层命令

  1. infer

    运行Infer的主要命令。它其实是一个python脚本。

  2. inferTest

    运行Infer的测试的Shell脚本。它使用Buck来运行测试。

    用法:inferTest {c, objc, java}

  3. inferTraceBugs

    是一个Python脚本,用于在Infer测试报告中流量错误、跟踪错误。

2、辅助命令

InferJava:包含Java前端的二进制程序

InferClang:包含Clang前端的二进制程序

InferAnalyze:包含Infer后端(执行分析)的二进制程序

InferPrint:输出分析结果(例如发现的bug列表等)的二进制程序

inferJ:运行Java文件分析的命令

BuckAnalyze:运行用Buck编译的Java项目的分析命令

inferlib.py:Python库的其它脚本

utils.py:Python库的其它脚本

jwlib.py:Python库的其它脚本

三、Infer的安装

官方提供了预编译好的Infer工具,但只支持Linux和MacOS两个平台。如果愿意使用Infer,直接下载使用即可。

否则,需要下载源码,自己编译。

1、下载Infer

可以从Git仓库下载Infer,命令:

git clone https://github.com/facebook/infer.git

说明:如果要分析C和Objective-C,Infer还需要clang以及facebook-clang-plugin插件。

facebook-clang-plugin插件见: https://github.com/facebook/facebook-clang-plugins

如果只想分析Java/Android代码,那么无需以上的依赖库。

2、Infer在Linux的安装

先决条件:需要Python 2.7以上版本

安装指令:

(以下安装过程在Debian 7、Ubuntu 14.04以及Ubuntu 12.04.4 LTS等系统中验证通过)

1. 安装OCaml依赖

# sudo apt-get update
# sudo apt-get upgrade
# sudo apt-get install git openjdk-7-jdk m4 zlib1g-dev python-software-properties build-essential libgmp-dev libmpfr-dev libmpc-dev unzip
# wget https://github.com/ocaml/opam/releases/download/1.2.2/opam-1.2.2-x86_64-Linux -O opam
# chmod +x opam
# ./opam init --comp=4.01.0     # 然后在最后一个问题处按下“y”
# eval `./opam config env`
# ./opam install sawja.1.5 atdgen.1.5.0 javalib.2.3 extlib.1.5.4    # 然后在问题处按下“y”

2. 如果需不要支持C和Objective-C代码的静态分析,继续下面的指令:

# cd infer
# make -C  infer java
# export PATH=`pwd`/infer/bin:$PATH

注意:不支持Java 8

3. 如果需要既支持Java代码,又支持C和Objective-C代码,那么不要执行上面的第2步,改为执行这里的第3步。

假定以及安装了4.7.2以上版本的GCC(如果OS是Ubuntu 12.04.4 LTS,那么你已经安装了gcc 4.8版和g++ 4.8版。

接着执行以下的指令:

# sudo apt-get install python-software-properties
# sudo add-apt-repository ppa:ubuntu-toolchain-r/test
# sudo apt-get update
# sudo apt-get install gcc-4.8 g++-4.8
# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

4. 然后继续

# cd infer
# ./update-fcp.sh
# ../facebook-clang-plugin/clang/setup.sh  # go have a coffee :)
# ./compile-fcp.sh
# make -C infer
# export PATH=`pwd`/infer/bin:$PATH

四、Infer的另一种安装

1、下载

还可以直接下载二进制发行包

Mac OS X版本的: https://github.com/facebook/infer/releases/download/v0.1.0/infer-osx-v0.1.0.tar.xz

Linux发行包: https://github.com/facebook/infer/releases/download/v0.1.0/infer-linux64-v0.1.0.tar.xz

2、安装

解压二进制发行包

# tar xf infer-linux64-v0.1.0.tar.xz

然后会建立infer-linux64-v0.1.0目录,Infer主要的可执行程序位于infer-linux64-v0.1.0/infer/infer/bin目录。

3、把Infer添加到PATH环境变量中

# cd infer-linux64-v0.1.0 &&
# echo "export PATH=\"\$PATH:`pwd`/infer/infer/bin\"" \ >> ~/.bash_profile &&
# source ~/.bash_profile
时间: 2024-12-24 04:10:54

Java静态代码分析工具Infer的相关文章

常用 Java 静态代码分析工具的分析与比较

转载自: http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代

如何分析android的OOM,与java静态代码分析工具

用MAT分析OOM 很多OOM看似发生在bitmap 分配得时候,但它一般不是rootcause.根本原因都在于本应该自动释放的资源,因为代码的错误,而导致某些对象一直被引用(Reference),例如 Android 内存优化,如何避免OOM 文章中提到的Activity 的mContext 引用. 当代码量很庞大的时候,单靠读代码查找错误是很困难的,所以必须借助于工具,这里介绍一款很好用的分析工具MAT. 1.下载MAT http://www.eclipse.org/mat/download

【转载】常用 Java 静态代码分析工具的分析与比较

摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团

[转载] 常用 Java 静态代码分析工具的分析与比较

转载自http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺

Java静态代码分析工具——FindBugs插件的安装与使用

1 什么是FindBugs FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析.不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式来鉴别代码是否符合一些固定的规范. 2 如何安装FindBugs? 作为Eclipse的一个插件,可以将Findbugs集成到Eclipse中使用. 第一种是在线安装:在Eclipse的插件安装地址中输入http:

来试试这个来自静态代码分析工具PVS Studio提供C++的小测验吧

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:来试试这个来自静态代码分析工具PVS Studio提供C++的小测验吧.

PVS-Studio 静态代码分析工具推荐

最近发现一款非常好用的静态代码分析工具PVS-Studio,是一家俄罗斯公司开发的,用于诊断C/C++/C++11源代码中的错误.它兼容Visual Studio开发环境,最新版本支持Visual Studio2015.PVS-Studio安装好之后,打开Visual Studio导航栏中就会出现PVS-Studio,我用的是Visual Studio2010,如下图所示. 以下是我利用PVS-Studio检查出当前程序中一些问题的示例: 1.变量给自己赋值. 2.漏掉成员变量赋值. 3.条件判

Clang &IOS 静态代码分析工具scan-build

Author:Echo Chen(陈斌) Email:[email protected] Blog:Blog.csdn.net/chen19870707 Date:Jan.4th, 2015 IOS项目和Clang项目可以借助scan-build 实现代码的静态分析,找出代码缺陷. 1.什么是 Scan-build? Scan-build 是一个命令行工具,它能够帮助使用者运行静态分析器检查他们的代码, 找出代码的缺陷. 2.scan-build是怎么工作的? 当一个项目在构建中,源文件在编译时

静态代码分析工具sonarqube+sonar-runner的安装配置及使用

配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + maven sonarqube + eclipse sonarqube + IDE IntelliJ 使用方式1 :sonarqube + sonar-runner 1.环境 jdk 1.7 sonarqube 4.5.7 (最新的sonarqube都要求jdk1.8,找了一个匹配1.7的较新版本