[Erlang03]Erlang有哪些好用的静态分析工具?
1. dialyzer
Dialyzer starts its analysis from either debug-compiled BEAM bytecode or from Erlang source code.
Dialyzer 可以分析*.erl和有debug-info的BEAM, Dialyzer提供GUI和Command Line两种模式,推荐使用command line模式.
使用步骤:
1.1 设置PLT(Persitent Lookup Table),用于存放分析结果,推荐建立PLT加入OTP Applications 和你经常使用的Applications时
最少的PLT路径应该是这样的:
dialyzer --build_plt -r $ERL_TOP/lib/stdlib/ebin\
$ERL_TOP/lib/kernel/ebin \
$ERL_TOP/lib/mnesia/ebin
Dialyzer 会把PLT放在一个$DIALYZER_PLT目录下,如果找不到,就会入在$HOME/.dialyzer_plt 这个路径也可以用—plt 或—output_plt 选项设置。
1.2 分析命令:
%% 可以分析单个文件,目录下文件,或一个Applications
>dialyzer test.erl
>dialyzer -r Dir
>dialyzer -apps Applications
1.3 为什么会需要这个工具?
Erlang不是一个强类型语言,所以基本上编译时不会像c++那样去严格检查函数的输入输出类型啊,这带来的好处就是:
foo(X) when is_integer(X) -> X + 1.
foo(X) -> list_to_atom(X).
以上这个例子在其它强类型语言也可以实现,但是总是要自己去骗下编译器,说这个能过什么的!!!但是erlang这样写函数是很正常的行为,这也是动态编译带来的好处之一,
通常的analyzers会尽量保证在运行期间也不会出错,如果Erlang也这样做,就会change it semantics. 两都不可兼得啊!
于是,就有了团队开发了dialyzer,于是世界和平啦…….
2 coverage
Todo.
[Erlang03]Erlang有哪些好用的静态分析工具?的更多相关文章
- 代码静态分析工具--PMD,Findbugs,CheckStyle
最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. PMD 扫描Java源代码,查找潜在的问题,如: 可能的bugs,如空的try/catch/final ...
- 代码静态分析工具——splint的学习与使用
引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对其他平 ...
- Analyze 静态分析工具中显示 大量的CF类型指针 内存leak 问题, Core Foundation 类型指针内存泄漏
Analyze 静态分析工具中显示 大量的CF类型指针 内存leak 问题 今天使用Analyze 看了下项目, 解决办法,项目中使用了ARC,OC的指针类型我们完全不考虑release的问题 ...
- 一款C++静态分析工具 —— CppDepend
Wrote by mutouyun. (http://darkc.at/cppdepend/) 去年6月份的时候,CppDepend的一位技术社区经理(technical community mana ...
- 代码静态分析工具PC-LINT安装配置
代码静态分析工具PC-LINT安装配置--step by step 作者:ehui928 ...
- Jenkins集成源码静态分析工具
1.static code analysis插件说明 Jenkins提供了插件"static code analysis",该插件搜集不同的分析结果,并集合显示出来. 实际上,我们 ...
- C++代码静态分析工具splint
1.引言 最近在项目中使用了静态程序分析工具PC-Lint, 体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对 ...
- 开源静态分析工具androguard体验
原文链接:http://blog.csdn.net/xbalien29/article/details/21885297 虽然在windows端免费版的IDA.VTS等工具都可用来静态分析,但相对来说 ...
- 逆向中静态分析工具——IDA初学者笔记之字符串分析
逆向中静态分析工具——IDA初学者笔记之字符串分析 程序中往往包含很多字符串资源,这些资源存在于PE文件的rdata段,使用IDA反编译后,可以查找到这些字符串, 逆向破解程序通常需要一个突破点,而这 ...
随机推荐
- 使用Spring的HttpInvoker
Spring开发团队意识到RMI服务和基于HTTP的服务(例如Hessian和Burlap)之间的空白.一方面,RMI使用Java标准的对象序列化机制,但是很难穿透防火墙.另一方面,Hessian和B ...
- Linux 环境下wordpress后台安装主题及插件需要FTP帐号怎么办?
vi httpd.conf 查看user是哪个用户 我的是daemon 然后执行 chown daemon:daemon -R /data/wordpress /data/wordpress 是我的 ...
- 基于 DirectX11 的 MMDViewer 04-渲染目标视图和多视口
上篇文章给出了一个简单并且可以运行的渲染框架,接下来将介绍框架中的渲染管线构成. 1.创建渲染管线 在你创建完一个窗口后,接着便要创建渲染管线,使用的函数是 D3D11CreateDeviceAndS ...
- Server_id 冲突导致 IO 等待故障
问题描述: 线上添加新的 MySQL Slave 后,服务器异常. 1.show processlist; Queueing master event to the relay log Reconne ...
- Memcache 内存对象缓存系统
简介: Memcached 是一个高性能的分布式内存存储对象缓存系统,用于动态 WEB 应用以减轻数据库负载. 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度. ...
- Linux实战教学笔记48:openvpn架构实施方案(一)跨机房异地灾备
第一章VPN介绍 1.1 VPN概述 VPN(全称Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公共网络中建立专用的数据通信网络的技术,可以为企业之间或者 ...
- 【HDU1542】Atlantis
题意 给出n个矩形的左下角和右上角的坐标,计算总的面积(相交部分只算一次). 分析 线段树扫描线的模板题. 将每个矩形都拆成上下两条线段,然后从下网上扫,当遇到底边时就加上这个区间,遇到顶边时,就减去 ...
- @property 修饰符
原子性--- nonatomic 特质 在默认情况下,由编译器合成的方法会通过锁定机制确保其原子性(atomicity).如果属性具备 nonatomic 特质,则不使用同步锁.请注意,尽管没有名为“ ...
- python 字符编码处理问题总结
Python中常常遇到这种字符编码问题,尤其在处理网页源代码时(特别是爬虫中): UnicodeDecodeError: ‘XXX' codec can't decode bytes in posit ...
- SpringBoot31 整合SpringJDBC、整合MyBatis、利用AOP实现多数据源
一.整合SpringJDBC 1 JDBC JDBC(Java Data Base Connectivity,Java 数据库连接)是一种用于执行 SQL 语句的 Java API,可以为多种关系数 ...