• 工具infer,静态代码检测 zero


    1.工具介绍

       Infer 是一个静态程序分析工具,可以对 Java、C 和 Objective-C 程序进行分析,此工具是用 OCaml写成的。https://github.com/facebook/infer
       Infer 最早部署在 Facebook 内部,用于发布移动应用之前对每一行代码进行分析,目前 Facebook 使用此工具分析所开发的 Android、iOS 应用,包括 Facebook Messenger、Instagram 和其他一些应用。 Infer 不仅仅用于移动应用程序的分析,还可以分析 C、Java 等不是 Android 系统的代码。 目前 Infer 着重于发现一些诸如空指针的访问、资源和内存的泄露等导致手机程序崩溃或性能严重下降的问题。

    2.环境要求

    - Python 2.7

    - opam (instructions [here](https://opam.ocaml.org/doc/Install.html#OSX))

    - Java <= 1.7 (only needed for the Java analysis,Mac 纯净的安装了 OS X Yosemite 的话,其中是不会包含 Java 的,所以需要自己安装java)

    - Xcode <= 6.3, >= 6.1 (only needed for the C/Objective-C analysis)

    - clang in Xcode command line tools. You can install them with the command `xcode-select --install` (only needed for the C/Objective-C analysis)

      

       1) 下载安装opam(https://opam.ocaml.org/doc/Install.html)

    • 在安装opam前先安装brew,brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令
    • 安装命令如下:
    • curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1
    • 接着安装opam:
    • sudo brew install opam # Homebrew, OSX Mavericks or later

       2) 安装clang

    •   xcode-select --install

       3) 配置opam    

    •   opam init -y --comp=4.01.0
    •   eval `opam config env`
    •   opam install -y extlib.1.5.4 atdgen.1.6.0 javalib.2.3.1 sawja.1.5.1

     4)安装java

    • 打开终端输入:java -version
    • 如果当前系统还没有装过 Java 的话,会收到 “No Java runtime present, requesting install.” 的提示信息。然后还会弹出“您需要安装 JDK 才能使用’java‘ 命令行工具”的信息。
    • 点击“更多信息”就回进入 JDK 官方下载网站,之后就能在官网中下载到 Java 8 JRE 或者 Java 8 JKD。

    3.安装infer

    • git clone https://github.com/facebook/infer.git
    • cd infer
    • git submodule update --init --recursive
    • facebook-clang-plugins/clang/setup.sh 
    • ./compile-fcp.sh
    • make -C infer
    • export PATH=`pwd`/infer/bin:$PATH

    5.工程静态分析

      分析APP:

      infer -- xcodebuild -target <target name> -configuration <build configuration> -sdk <SDK>

     示例检测HelloWorldApp工程:

      infer -- xcodebuild -target HelloWorldApp -configuration Debug -sdk iphoneos8.3

       需要使用 --incremental (或 -i) 使得增量编译有结果输出:

      infer --incremental -- xcodebuild -target HelloWorldApp -configuration Debug -sdk iphoneos8.3

       或者在编译前清理:

      xcodebuild -target HelloWorldApp -configuration Debug -sdk iphoneos8.3 clean

        ok,到这你就会看到你想看的结果.

    参考文档:http://infer.liaohuqiu.net/docs/getting-started.html

  • 相关阅读:
    最近忙于开发移动OA审批
    开发一个小软件
    VMWare上虚拟机访问宿主机需要注意的一个问题
    Visual Studio 中自带的电子邮件的正则表达式匹配中文的问题 与 \w
    开始应用设计模式
    jQuery与ASP.NET AJAX有冲突吗?
    有感于VMWare
    kvm 母镜像
    相关流程
    master事件处理
  • 原文地址:https://www.cnblogs.com/hlfme/p/4623551.html
Copyright © 2020-2023  润新知