facebook的infer检测工具的安装
缘由
由于公司产出代码的时候会使用静态扫描工具检测代码的质量,所以自己就想动手尝试一番infer整个的使用方式和使用效果,便动手安装了infer,结果安装过程中遇见太多的坑,导致很多时候都安装失败,这篇文章主要就是为记录各个坑而产生的
infer提供了在Mac和linux下安装的教程,我所使用的是Mac,所以在这里只介绍在Mac下的安装
首先是环境要求:
- opam >= 1.2.0
- Python 2.7
- Java (only needed for the Java 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)
- Xcode >= 6.1 (only needed for the C/Objective-C analysis)
介绍安装:
- 在安装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
- 安装clang
xcode-select --install
- 配置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
- 安装JDK(我在这一步犯了很大的错误,我以为mac默认已经安装了JDK环境的,结果最后才知道我的电脑没有安装....)
[官方地址] :http://www.oracle.com/technetwork/java/javase/downloads/index.html
接下来是最主要的工作,也是很漫长的工作
安装infer
克隆infer的git地址:
git clone https://github.com/facebook/infer.git
cd infer
git submodule update --init --recursive
安装clang工具:
这里有两个需要注意的点: 一是在shell脚本里面是需要安装cmake工具的,所以你需要用到命令行: brew install cmake
二是整个过程大概10几20分钟,可以睡个觉~
facebook-clang-plugins/clang/setup.sh
接下来:
以下两步为原始答案:(但是我无论怎么试都是提示命令找不到)
- ./compile-fcp.sh
- make -C infer
所以只能另辟蹊径:
查阅官方文档:
https://github.com/facebook/infer/blob/master/INSTALL.md
得知使用下列命令可以解决:
./build-infer.sh clang(有可能还需要升级: 使用opam update)
参考链接:
- http://blog.csdn.net/elisa1988/article/details/46531745
- http://infer.liaohuqiu.net/docs/getting-started.html
- http://blog.csdn.net/itfootball/article/details/46474235
- http://www.cnblogs.com/hlfme/p/4623551.html
facebook的infer检测工具的安装的更多相关文章
- PHP 代码质量检测工具的安装与使用
代码统计工具 PHPLOC安装:wget https://phar.phpunit.de/phploc.phar chmod +x phploc.phar sudo mv phploc.phar /u ...
- 【转】Unix下C程序内存泄漏检测工具Valgrind安装与使用
Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具. Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Goo ...
- netdata检测工具的安装与使用
Netdata 是一款 Linux 性能实时监测工具..以web的可视化方式展示系统及应用程序的实时运行状态(包括cpu.内存.硬盘输入/输出.网络等linux性能的数据). Netdata文档地址: ...
- windows下代码规范检测工具sonarqube安装与使用,含与maven的结合
一.首先下载sonarqube 地址 : https://www.sonarqube.org/downloads/ (最新版本支持java11+,博主下载支持java8的版本7.7), 下载S ...
- Sublime text3 JS语法检测工具安装及使用
Sublime text3 JS语法检测工具安装及使用 工具/原料 sublime text3 nodejs sublimeLinter sublimeLinter-jshint 方法/步骤 首先ct ...
- 部署安装snort--入侵检测工具
1:部署安装snort yum -y install wget 2: 基本依赖环境 yum -y install gcc flex bison zlib zlib-devel libpcap libp ...
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑
自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...
- LeakCanary内存泄漏检测工具使用步骤
LeakCanary内存检测工具使用步骤: 第一步,进入app目录下的build.gradle,在最下面找到dependencies{},里面添加如下三行语句: debugCompile 'com.s ...
- U盘启动 WinPE系统维护工具 任意安装GHO/WIM/ESD系统映像 无广告专业版
WinPE系统维护工具简介: 1.工具箱基于Windows 8 64位系统制作. 2.强大的DG分区工具专业版4.9.1(DOS版为4.9.0). 3.破解windows密码工具. 4.硬盘.内存检测 ...
随机推荐
- Windows 在目录中搜索哪个文件中有指定字符串
findstr /s /i "string" *.* 表示,当前目录以及子目录下的所有文件中查找"string"这个字符串. *.*表示所有类型的文件. /s ...
- 洛谷P3384【模板】树链剖分
题目描述 如题,已知一棵包含\(N\)个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作\(1\): 格式: \(1\) \(x\) \(y\) \(z\) 表示将树从\(x\ ...
- jquery——尺寸
1. 获取和设置元素的尺寸 2. 获取元素相对页面的绝对位置:offset() 这种方式增加的盒子不会对之前的结构产生影响 demo: <!DOCTYPE html> <html l ...
- jquery——事件
绑定事件的其他方法 以及 取消绑定 事件:: <!DOCTYPE html><html lang="en"><head> <meta ch ...
- js事件循环(event loop)
我们都知道,js是单线程的,虽然现在有 worker 的存在,但是也只是可以进行运算,并不能操作 dom: js最一开始执行的线程,是主线程,然后主线程执行完毕后,是微队列 microtask 的循环 ...
- spring技术小结
1.DI和IOC 依赖注入(Dependency Injection)还是控制反转(Inversion of Conctrol) bean通过依赖注入,注册到spring容器里面.spring容器通过 ...
- Soft skill
不要害怕让别人看到自己的无知 作为高级程序员的一个好处是,当别人问一些我不懂的问题时,我可以很淡然地告诉他们: 这个东西我也不懂,因为以前没有遇到过,不过我可以看一下,然后再告诉你. 当我还是一个初级 ...
- git&github学习【尚硅谷】
2019/01/17 18:22 集中式版本工具会有单点故障的问题 分布式版本工具能够避免单点故障 git在本地的结构: 团队内部协作: pull push add commit 等等 关于g ...
- eclipse调试(转)
step into : 单步执行,遇到子函数就进入并且继续单步执行(F5) step over: 在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完在停止,也就是把子函 ...
- a href="javascript:"与a href="#"
<a href="javascript:;"></a> <a href="#"></a> 这两种写法.这两种写法 ...